@pranavraut033/ats-checker 1.2.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +75 -5
- package/dist/chunk-ZJ5E4H7Z.mjs +446 -0
- package/dist/chunk-ZJ5E4H7Z.mjs.map +1 -0
- package/dist/{index.js → index.cjs} +497 -67
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +4 -259
- package/dist/index.d.ts +4 -259
- package/dist/index.mjs +263 -274
- package/dist/index.mjs.map +1 -1
- package/dist/lang/de/index.cjs +70 -0
- package/dist/lang/de/index.cjs.map +1 -0
- package/dist/lang/de/index.d.mts +16 -0
- package/dist/lang/de/index.d.ts +16 -0
- package/dist/lang/de/index.mjs +65 -0
- package/dist/lang/de/index.mjs.map +1 -0
- package/dist/lang/en/index.cjs +212 -0
- package/dist/lang/en/index.cjs.map +1 -0
- package/dist/lang/en/index.d.mts +5 -0
- package/dist/lang/en/index.d.ts +5 -0
- package/dist/lang/en/index.mjs +9 -0
- package/dist/lang/en/index.mjs.map +1 -0
- package/dist/pdf/{index.js → index.cjs} +2 -2
- package/dist/pdf/index.cjs.map +1 -0
- package/dist/scoring-BCShrnki.d.mts +319 -0
- package/dist/scoring-BCShrnki.d.ts +319 -0
- package/package.json +13 -1
- package/dist/index.js.map +0 -1
- package/dist/pdf/index.js.map +0 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// src/lang/de/index.ts
|
|
6
|
+
var de = [
|
|
7
|
+
// technical
|
|
8
|
+
{ canonical: "javascript", aliases: ["js"], category: "technical" },
|
|
9
|
+
{ canonical: "python", aliases: [], category: "technical" },
|
|
10
|
+
{ canonical: "java", aliases: [], category: "technical" },
|
|
11
|
+
{ canonical: "machine learning", aliases: ["maschinelles lernen"], category: "technical" },
|
|
12
|
+
// tools
|
|
13
|
+
{ canonical: "excel", aliases: ["microsoft excel"], category: "tool" },
|
|
14
|
+
{ canonical: "git", aliases: [], category: "tool" },
|
|
15
|
+
// engineering concepts
|
|
16
|
+
{ canonical: "frontend", aliases: ["frontend-entwicklung"], category: "concept" },
|
|
17
|
+
{ canonical: "backend", aliases: ["backend-entwicklung"], category: "concept" },
|
|
18
|
+
{ canonical: "testing", aliases: ["softwaretests"], category: "concept" },
|
|
19
|
+
{ canonical: "security", aliases: ["sicherheit"], category: "concept" },
|
|
20
|
+
{ canonical: "agile", aliases: ["agile methoden"], category: "concept" },
|
|
21
|
+
{ canonical: "project management", aliases: ["projektmanagement"], category: "concept" },
|
|
22
|
+
{ canonical: "quality assurance", aliases: ["qualit\xE4tssicherung", "qualitaetssicherung"], category: "concept" },
|
|
23
|
+
// domain — product / data
|
|
24
|
+
{ canonical: "analytics", aliases: ["datenanalyse"], category: "domain" },
|
|
25
|
+
{ canonical: "roadmap", aliases: ["fahrplan"], category: "domain" },
|
|
26
|
+
// domain — finance / accounting
|
|
27
|
+
{ canonical: "financial analysis", aliases: ["finanzanalyse"], category: "domain" },
|
|
28
|
+
{ canonical: "budgeting", aliases: ["budgetierung"], category: "domain" },
|
|
29
|
+
{ canonical: "payroll", aliases: ["gehaltsabrechnung", "lohnbuchhaltung"], category: "domain" },
|
|
30
|
+
{ canonical: "auditin g", aliases: ["wirtschaftspr\xFCfung", "wirtschaftspruefung"], category: "domain" },
|
|
31
|
+
// domain — sales
|
|
32
|
+
{ canonical: "account management", aliases: ["kundenbetreuung"], category: "domain" },
|
|
33
|
+
{ canonical: "crm", aliases: ["kundenbeziehungsmanagement"], category: "domain" },
|
|
34
|
+
{ canonical: "customer retention", aliases: ["kundenbindung"], category: "domain" },
|
|
35
|
+
// domain — human resources
|
|
36
|
+
{ canonical: "recruiting", aliases: ["personalbeschaffung", "rekrutierung"], category: "domain" },
|
|
37
|
+
{ canonical: "onboarding", aliases: ["einarbeitung"], category: "domain" },
|
|
38
|
+
{ canonical: "employee relations", aliases: ["mitarbeiterbeziehungen"], category: "domain" },
|
|
39
|
+
// domain — healthcare
|
|
40
|
+
{ canonical: "patient care", aliases: ["patientenversorgung"], category: "domain" },
|
|
41
|
+
// domain — legal
|
|
42
|
+
{ canonical: "contract review", aliases: ["vertragspr\xFCfung", "vertragspruefung"], category: "domain" },
|
|
43
|
+
{ canonical: "regulatory compliance", aliases: ["compliance", "regulatorische konformit\xE4t"], category: "domain" },
|
|
44
|
+
// domain — operations / logistics
|
|
45
|
+
{ canonical: "supply chain management", aliases: ["lieferkettenmanagement"], category: "domain" },
|
|
46
|
+
{ canonical: "inventory management", aliases: ["bestandsverwaltung"], category: "domain" },
|
|
47
|
+
// domain — customer service
|
|
48
|
+
{ canonical: "customer support", aliases: ["kundensupport", "kundendienst"], category: "domain" },
|
|
49
|
+
// soft skills
|
|
50
|
+
{ canonical: "communication", aliases: ["kommunikation"], category: "soft" },
|
|
51
|
+
{ canonical: "leadership", aliases: ["f\xFChrung", "fuehrung"], category: "soft" },
|
|
52
|
+
{ canonical: "teamwork", aliases: ["teamarbeit"], category: "soft" },
|
|
53
|
+
{ canonical: "problem solving", aliases: ["probleml\xF6sung", "problemloesung"], category: "soft" },
|
|
54
|
+
{ canonical: "time management", aliases: ["zeitmanagement"], category: "soft" },
|
|
55
|
+
{ canonical: "critical thinking", aliases: ["kritisches denken"], category: "soft" },
|
|
56
|
+
{ canonical: "adaptability", aliases: ["anpassungsf\xE4higkeit", "anpassungsfaehigkeit"], category: "soft" },
|
|
57
|
+
{ canonical: "negotiation", aliases: ["verhandlungsgeschick"], category: "soft" },
|
|
58
|
+
{ canonical: "attention to detail", aliases: ["detailgenauigkeit"], category: "soft" },
|
|
59
|
+
// marketing
|
|
60
|
+
{ canonical: "branding", aliases: ["markenbildung"], category: "marketing" },
|
|
61
|
+
{ canonical: "digital marketing", aliases: ["digitales marketing"], category: "marketing" },
|
|
62
|
+
{ canonical: "content marketing", aliases: ["content-marketing"], category: "marketing" },
|
|
63
|
+
{ canonical: "market research", aliases: ["marktforschung"], category: "marketing" }
|
|
64
|
+
];
|
|
65
|
+
var de_default = de;
|
|
66
|
+
|
|
67
|
+
exports.default = de_default;
|
|
68
|
+
exports.keywordRegistry = de;
|
|
69
|
+
//# sourceMappingURL=index.cjs.map
|
|
70
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lang/de/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * German keyword registry — canonical terms stay in English (so scoring/profiles\n * keep working unchanged); German aliases let resumes/job descriptions written in\n * German match the same canonical skills.\n *\n * import de from \"@pranavraut033/ats-checker/de\";\n * analyzeResume({ ..., config: { keywordRegistry: de } });\n *\n * ponytail: de pack ships a seed set, not exhaustive — grow on demand.\n */\nimport type { KeywordRegistry } from \"../../types/config\";\n\nconst de: KeywordRegistry = [\n // technical\n { canonical: \"javascript\", aliases: [\"js\"], category: \"technical\" },\n { canonical: \"python\", aliases: [], category: \"technical\" },\n { canonical: \"java\", aliases: [], category: \"technical\" },\n { canonical: \"machine learning\", aliases: [\"maschinelles lernen\"], category: \"technical\" },\n // tools\n { canonical: \"excel\", aliases: [\"microsoft excel\"], category: \"tool\" },\n { canonical: \"git\", aliases: [], category: \"tool\" },\n // engineering concepts\n { canonical: \"frontend\", aliases: [\"frontend-entwicklung\"], category: \"concept\" },\n { canonical: \"backend\", aliases: [\"backend-entwicklung\"], category: \"concept\" },\n { canonical: \"testing\", aliases: [\"softwaretests\"], category: \"concept\" },\n { canonical: \"security\", aliases: [\"sicherheit\"], category: \"concept\" },\n { canonical: \"agile\", aliases: [\"agile methoden\"], category: \"concept\" },\n { canonical: \"project management\", aliases: [\"projektmanagement\"], category: \"concept\" },\n { canonical: \"quality assurance\", aliases: [\"qualitätssicherung\", \"qualitaetssicherung\"], category: \"concept\" },\n // domain — product / data\n { canonical: \"analytics\", aliases: [\"datenanalyse\"], category: \"domain\" },\n { canonical: \"roadmap\", aliases: [\"fahrplan\"], category: \"domain\" },\n // domain — finance / accounting\n { canonical: \"financial analysis\", aliases: [\"finanzanalyse\"], category: \"domain\" },\n { canonical: \"budgeting\", aliases: [\"budgetierung\"], category: \"domain\" },\n { canonical: \"payroll\", aliases: [\"gehaltsabrechnung\", \"lohnbuchhaltung\"], category: \"domain\" },\n { canonical: \"auditin g\", aliases: [\"wirtschaftsprüfung\", \"wirtschaftspruefung\"], category: \"domain\" },\n // domain — sales\n { canonical: \"account management\", aliases: [\"kundenbetreuung\"], category: \"domain\" },\n { canonical: \"crm\", aliases: [\"kundenbeziehungsmanagement\"], category: \"domain\" },\n { canonical: \"customer retention\", aliases: [\"kundenbindung\"], category: \"domain\" },\n // domain — human resources\n { canonical: \"recruiting\", aliases: [\"personalbeschaffung\", \"rekrutierung\"], category: \"domain\" },\n { canonical: \"onboarding\", aliases: [\"einarbeitung\"], category: \"domain\" },\n { canonical: \"employee relations\", aliases: [\"mitarbeiterbeziehungen\"], category: \"domain\" },\n // domain — healthcare\n { canonical: \"patient care\", aliases: [\"patientenversorgung\"], category: \"domain\" },\n // domain — legal\n { canonical: \"contract review\", aliases: [\"vertragsprüfung\", \"vertragspruefung\"], category: \"domain\" },\n { canonical: \"regulatory compliance\", aliases: [\"compliance\", \"regulatorische konformität\"], category: \"domain\" },\n // domain — operations / logistics\n { canonical: \"supply chain management\", aliases: [\"lieferkettenmanagement\"], category: \"domain\" },\n { canonical: \"inventory management\", aliases: [\"bestandsverwaltung\"], category: \"domain\" },\n // domain — customer service\n { canonical: \"customer support\", aliases: [\"kundensupport\", \"kundendienst\"], category: \"domain\" },\n // soft skills\n { canonical: \"communication\", aliases: [\"kommunikation\"], category: \"soft\" },\n { canonical: \"leadership\", aliases: [\"führung\", \"fuehrung\"], category: \"soft\" },\n { canonical: \"teamwork\", aliases: [\"teamarbeit\"], category: \"soft\" },\n { canonical: \"problem solving\", aliases: [\"problemlösung\", \"problemloesung\"], category: \"soft\" },\n { canonical: \"time management\", aliases: [\"zeitmanagement\"], category: \"soft\" },\n { canonical: \"critical thinking\", aliases: [\"kritisches denken\"], category: \"soft\" },\n { canonical: \"adaptability\", aliases: [\"anpassungsfähigkeit\", \"anpassungsfaehigkeit\"], category: \"soft\" },\n { canonical: \"negotiation\", aliases: [\"verhandlungsgeschick\"], category: \"soft\" },\n { canonical: \"attention to detail\", aliases: [\"detailgenauigkeit\"], category: \"soft\" },\n // marketing\n { canonical: \"branding\", aliases: [\"markenbildung\"], category: \"marketing\" },\n { canonical: \"digital marketing\", aliases: [\"digitales marketing\"], category: \"marketing\" },\n { canonical: \"content marketing\", aliases: [\"content-marketing\"], category: \"marketing\" },\n { canonical: \"market research\", aliases: [\"marktforschung\"], category: \"marketing\" },\n];\n\nexport default de;\nexport { de as keywordRegistry };\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { K as KeywordRegistry } from '../../scoring-BCShrnki.mjs';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* German keyword registry — canonical terms stay in English (so scoring/profiles
|
|
5
|
+
* keep working unchanged); German aliases let resumes/job descriptions written in
|
|
6
|
+
* German match the same canonical skills.
|
|
7
|
+
*
|
|
8
|
+
* import de from "@pranavraut033/ats-checker/de";
|
|
9
|
+
* analyzeResume({ ..., config: { keywordRegistry: de } });
|
|
10
|
+
*
|
|
11
|
+
* ponytail: de pack ships a seed set, not exhaustive — grow on demand.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
declare const de: KeywordRegistry;
|
|
15
|
+
|
|
16
|
+
export { de as default, de as keywordRegistry };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { K as KeywordRegistry } from '../../scoring-BCShrnki.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* German keyword registry — canonical terms stay in English (so scoring/profiles
|
|
5
|
+
* keep working unchanged); German aliases let resumes/job descriptions written in
|
|
6
|
+
* German match the same canonical skills.
|
|
7
|
+
*
|
|
8
|
+
* import de from "@pranavraut033/ats-checker/de";
|
|
9
|
+
* analyzeResume({ ..., config: { keywordRegistry: de } });
|
|
10
|
+
*
|
|
11
|
+
* ponytail: de pack ships a seed set, not exhaustive — grow on demand.
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
declare const de: KeywordRegistry;
|
|
15
|
+
|
|
16
|
+
export { de as default, de as keywordRegistry };
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
// src/lang/de/index.ts
|
|
2
|
+
var de = [
|
|
3
|
+
// technical
|
|
4
|
+
{ canonical: "javascript", aliases: ["js"], category: "technical" },
|
|
5
|
+
{ canonical: "python", aliases: [], category: "technical" },
|
|
6
|
+
{ canonical: "java", aliases: [], category: "technical" },
|
|
7
|
+
{ canonical: "machine learning", aliases: ["maschinelles lernen"], category: "technical" },
|
|
8
|
+
// tools
|
|
9
|
+
{ canonical: "excel", aliases: ["microsoft excel"], category: "tool" },
|
|
10
|
+
{ canonical: "git", aliases: [], category: "tool" },
|
|
11
|
+
// engineering concepts
|
|
12
|
+
{ canonical: "frontend", aliases: ["frontend-entwicklung"], category: "concept" },
|
|
13
|
+
{ canonical: "backend", aliases: ["backend-entwicklung"], category: "concept" },
|
|
14
|
+
{ canonical: "testing", aliases: ["softwaretests"], category: "concept" },
|
|
15
|
+
{ canonical: "security", aliases: ["sicherheit"], category: "concept" },
|
|
16
|
+
{ canonical: "agile", aliases: ["agile methoden"], category: "concept" },
|
|
17
|
+
{ canonical: "project management", aliases: ["projektmanagement"], category: "concept" },
|
|
18
|
+
{ canonical: "quality assurance", aliases: ["qualit\xE4tssicherung", "qualitaetssicherung"], category: "concept" },
|
|
19
|
+
// domain — product / data
|
|
20
|
+
{ canonical: "analytics", aliases: ["datenanalyse"], category: "domain" },
|
|
21
|
+
{ canonical: "roadmap", aliases: ["fahrplan"], category: "domain" },
|
|
22
|
+
// domain — finance / accounting
|
|
23
|
+
{ canonical: "financial analysis", aliases: ["finanzanalyse"], category: "domain" },
|
|
24
|
+
{ canonical: "budgeting", aliases: ["budgetierung"], category: "domain" },
|
|
25
|
+
{ canonical: "payroll", aliases: ["gehaltsabrechnung", "lohnbuchhaltung"], category: "domain" },
|
|
26
|
+
{ canonical: "auditin g", aliases: ["wirtschaftspr\xFCfung", "wirtschaftspruefung"], category: "domain" },
|
|
27
|
+
// domain — sales
|
|
28
|
+
{ canonical: "account management", aliases: ["kundenbetreuung"], category: "domain" },
|
|
29
|
+
{ canonical: "crm", aliases: ["kundenbeziehungsmanagement"], category: "domain" },
|
|
30
|
+
{ canonical: "customer retention", aliases: ["kundenbindung"], category: "domain" },
|
|
31
|
+
// domain — human resources
|
|
32
|
+
{ canonical: "recruiting", aliases: ["personalbeschaffung", "rekrutierung"], category: "domain" },
|
|
33
|
+
{ canonical: "onboarding", aliases: ["einarbeitung"], category: "domain" },
|
|
34
|
+
{ canonical: "employee relations", aliases: ["mitarbeiterbeziehungen"], category: "domain" },
|
|
35
|
+
// domain — healthcare
|
|
36
|
+
{ canonical: "patient care", aliases: ["patientenversorgung"], category: "domain" },
|
|
37
|
+
// domain — legal
|
|
38
|
+
{ canonical: "contract review", aliases: ["vertragspr\xFCfung", "vertragspruefung"], category: "domain" },
|
|
39
|
+
{ canonical: "regulatory compliance", aliases: ["compliance", "regulatorische konformit\xE4t"], category: "domain" },
|
|
40
|
+
// domain — operations / logistics
|
|
41
|
+
{ canonical: "supply chain management", aliases: ["lieferkettenmanagement"], category: "domain" },
|
|
42
|
+
{ canonical: "inventory management", aliases: ["bestandsverwaltung"], category: "domain" },
|
|
43
|
+
// domain — customer service
|
|
44
|
+
{ canonical: "customer support", aliases: ["kundensupport", "kundendienst"], category: "domain" },
|
|
45
|
+
// soft skills
|
|
46
|
+
{ canonical: "communication", aliases: ["kommunikation"], category: "soft" },
|
|
47
|
+
{ canonical: "leadership", aliases: ["f\xFChrung", "fuehrung"], category: "soft" },
|
|
48
|
+
{ canonical: "teamwork", aliases: ["teamarbeit"], category: "soft" },
|
|
49
|
+
{ canonical: "problem solving", aliases: ["probleml\xF6sung", "problemloesung"], category: "soft" },
|
|
50
|
+
{ canonical: "time management", aliases: ["zeitmanagement"], category: "soft" },
|
|
51
|
+
{ canonical: "critical thinking", aliases: ["kritisches denken"], category: "soft" },
|
|
52
|
+
{ canonical: "adaptability", aliases: ["anpassungsf\xE4higkeit", "anpassungsfaehigkeit"], category: "soft" },
|
|
53
|
+
{ canonical: "negotiation", aliases: ["verhandlungsgeschick"], category: "soft" },
|
|
54
|
+
{ canonical: "attention to detail", aliases: ["detailgenauigkeit"], category: "soft" },
|
|
55
|
+
// marketing
|
|
56
|
+
{ canonical: "branding", aliases: ["markenbildung"], category: "marketing" },
|
|
57
|
+
{ canonical: "digital marketing", aliases: ["digitales marketing"], category: "marketing" },
|
|
58
|
+
{ canonical: "content marketing", aliases: ["content-marketing"], category: "marketing" },
|
|
59
|
+
{ canonical: "market research", aliases: ["marktforschung"], category: "marketing" }
|
|
60
|
+
];
|
|
61
|
+
var de_default = de;
|
|
62
|
+
|
|
63
|
+
export { de_default as default, de as keywordRegistry };
|
|
64
|
+
//# sourceMappingURL=index.mjs.map
|
|
65
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lang/de/index.ts"],"names":[],"mappings":";AAYA,IAAM,EAAA,GAAsB;AAAA;AAAA,EAE1B,EAAE,WAAW,YAAA,EAAc,OAAA,EAAS,CAAC,IAAI,CAAA,EAAG,UAAU,WAAA,EAAY;AAAA,EAClE,EAAE,SAAA,EAAW,QAAA,EAAU,SAAS,EAAC,EAAG,UAAU,WAAA,EAAY;AAAA,EAC1D,EAAE,SAAA,EAAW,MAAA,EAAQ,SAAS,EAAC,EAAG,UAAU,WAAA,EAAY;AAAA,EACxD,EAAE,WAAW,kBAAA,EAAoB,OAAA,EAAS,CAAC,qBAAqB,CAAA,EAAG,UAAU,WAAA,EAAY;AAAA;AAAA,EAEzF,EAAE,WAAW,OAAA,EAAS,OAAA,EAAS,CAAC,iBAAiB,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA,EACrE,EAAE,SAAA,EAAW,KAAA,EAAO,SAAS,EAAC,EAAG,UAAU,MAAA,EAAO;AAAA;AAAA,EAElD,EAAE,WAAW,UAAA,EAAY,OAAA,EAAS,CAAC,sBAAsB,CAAA,EAAG,UAAU,SAAA,EAAU;AAAA,EAChF,EAAE,WAAW,SAAA,EAAW,OAAA,EAAS,CAAC,qBAAqB,CAAA,EAAG,UAAU,SAAA,EAAU;AAAA,EAC9E,EAAE,WAAW,SAAA,EAAW,OAAA,EAAS,CAAC,eAAe,CAAA,EAAG,UAAU,SAAA,EAAU;AAAA,EACxE,EAAE,WAAW,UAAA,EAAY,OAAA,EAAS,CAAC,YAAY,CAAA,EAAG,UAAU,SAAA,EAAU;AAAA,EACtE,EAAE,WAAW,OAAA,EAAS,OAAA,EAAS,CAAC,gBAAgB,CAAA,EAAG,UAAU,SAAA,EAAU;AAAA,EACvE,EAAE,WAAW,oBAAA,EAAsB,OAAA,EAAS,CAAC,mBAAmB,CAAA,EAAG,UAAU,SAAA,EAAU;AAAA,EACvF,EAAE,WAAW,mBAAA,EAAqB,OAAA,EAAS,CAAC,uBAAA,EAAsB,qBAAqB,CAAA,EAAG,QAAA,EAAU,SAAA,EAAU;AAAA;AAAA,EAE9G,EAAE,WAAW,WAAA,EAAa,OAAA,EAAS,CAAC,cAAc,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EACxE,EAAE,WAAW,SAAA,EAAW,OAAA,EAAS,CAAC,UAAU,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA;AAAA,EAElE,EAAE,WAAW,oBAAA,EAAsB,OAAA,EAAS,CAAC,eAAe,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EAClF,EAAE,WAAW,WAAA,EAAa,OAAA,EAAS,CAAC,cAAc,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EACxE,EAAE,WAAW,SAAA,EAAW,OAAA,EAAS,CAAC,mBAAA,EAAqB,iBAAiB,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS;AAAA,EAC9F,EAAE,WAAW,WAAA,EAAa,OAAA,EAAS,CAAC,uBAAA,EAAsB,qBAAqB,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS;AAAA;AAAA,EAErG,EAAE,WAAW,oBAAA,EAAsB,OAAA,EAAS,CAAC,iBAAiB,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EACpF,EAAE,WAAW,KAAA,EAAO,OAAA,EAAS,CAAC,4BAA4B,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EAChF,EAAE,WAAW,oBAAA,EAAsB,OAAA,EAAS,CAAC,eAAe,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA;AAAA,EAElF,EAAE,WAAW,YAAA,EAAc,OAAA,EAAS,CAAC,qBAAA,EAAuB,cAAc,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS;AAAA,EAChG,EAAE,WAAW,YAAA,EAAc,OAAA,EAAS,CAAC,cAAc,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EACzE,EAAE,WAAW,oBAAA,EAAsB,OAAA,EAAS,CAAC,wBAAwB,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA;AAAA,EAE3F,EAAE,WAAW,cAAA,EAAgB,OAAA,EAAS,CAAC,qBAAqB,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA;AAAA,EAElF,EAAE,WAAW,iBAAA,EAAmB,OAAA,EAAS,CAAC,oBAAA,EAAmB,kBAAkB,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS;AAAA,EACrG,EAAE,WAAW,uBAAA,EAAyB,OAAA,EAAS,CAAC,YAAA,EAAc,+BAA4B,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS;AAAA;AAAA,EAEhH,EAAE,WAAW,yBAAA,EAA2B,OAAA,EAAS,CAAC,wBAAwB,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA,EAChG,EAAE,WAAW,sBAAA,EAAwB,OAAA,EAAS,CAAC,oBAAoB,CAAA,EAAG,UAAU,QAAA,EAAS;AAAA;AAAA,EAEzF,EAAE,WAAW,kBAAA,EAAoB,OAAA,EAAS,CAAC,eAAA,EAAiB,cAAc,CAAA,EAAG,QAAA,EAAU,QAAA,EAAS;AAAA;AAAA,EAEhG,EAAE,WAAW,eAAA,EAAiB,OAAA,EAAS,CAAC,eAAe,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA,EAC3E,EAAE,WAAW,YAAA,EAAc,OAAA,EAAS,CAAC,YAAA,EAAW,UAAU,CAAA,EAAG,QAAA,EAAU,MAAA,EAAO;AAAA,EAC9E,EAAE,WAAW,UAAA,EAAY,OAAA,EAAS,CAAC,YAAY,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA,EACnE,EAAE,WAAW,iBAAA,EAAmB,OAAA,EAAS,CAAC,kBAAA,EAAiB,gBAAgB,CAAA,EAAG,QAAA,EAAU,MAAA,EAAO;AAAA,EAC/F,EAAE,WAAW,iBAAA,EAAmB,OAAA,EAAS,CAAC,gBAAgB,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA,EAC9E,EAAE,WAAW,mBAAA,EAAqB,OAAA,EAAS,CAAC,mBAAmB,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA,EACnF,EAAE,WAAW,cAAA,EAAgB,OAAA,EAAS,CAAC,wBAAA,EAAuB,sBAAsB,CAAA,EAAG,QAAA,EAAU,MAAA,EAAO;AAAA,EACxG,EAAE,WAAW,aAAA,EAAe,OAAA,EAAS,CAAC,sBAAsB,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA,EAChF,EAAE,WAAW,qBAAA,EAAuB,OAAA,EAAS,CAAC,mBAAmB,CAAA,EAAG,UAAU,MAAA,EAAO;AAAA;AAAA,EAErF,EAAE,WAAW,UAAA,EAAY,OAAA,EAAS,CAAC,eAAe,CAAA,EAAG,UAAU,WAAA,EAAY;AAAA,EAC3E,EAAE,WAAW,mBAAA,EAAqB,OAAA,EAAS,CAAC,qBAAqB,CAAA,EAAG,UAAU,WAAA,EAAY;AAAA,EAC1F,EAAE,WAAW,mBAAA,EAAqB,OAAA,EAAS,CAAC,mBAAmB,CAAA,EAAG,UAAU,WAAA,EAAY;AAAA,EACxF,EAAE,WAAW,iBAAA,EAAmB,OAAA,EAAS,CAAC,gBAAgB,CAAA,EAAG,UAAU,WAAA;AACzE;AAEA,IAAO,UAAA,GAAQ","file":"index.mjs","sourcesContent":["/**\n * German keyword registry — canonical terms stay in English (so scoring/profiles\n * keep working unchanged); German aliases let resumes/job descriptions written in\n * German match the same canonical skills.\n *\n * import de from \"@pranavraut033/ats-checker/de\";\n * analyzeResume({ ..., config: { keywordRegistry: de } });\n *\n * ponytail: de pack ships a seed set, not exhaustive — grow on demand.\n */\nimport type { KeywordRegistry } from \"../../types/config\";\n\nconst de: KeywordRegistry = [\n // technical\n { canonical: \"javascript\", aliases: [\"js\"], category: \"technical\" },\n { canonical: \"python\", aliases: [], category: \"technical\" },\n { canonical: \"java\", aliases: [], category: \"technical\" },\n { canonical: \"machine learning\", aliases: [\"maschinelles lernen\"], category: \"technical\" },\n // tools\n { canonical: \"excel\", aliases: [\"microsoft excel\"], category: \"tool\" },\n { canonical: \"git\", aliases: [], category: \"tool\" },\n // engineering concepts\n { canonical: \"frontend\", aliases: [\"frontend-entwicklung\"], category: \"concept\" },\n { canonical: \"backend\", aliases: [\"backend-entwicklung\"], category: \"concept\" },\n { canonical: \"testing\", aliases: [\"softwaretests\"], category: \"concept\" },\n { canonical: \"security\", aliases: [\"sicherheit\"], category: \"concept\" },\n { canonical: \"agile\", aliases: [\"agile methoden\"], category: \"concept\" },\n { canonical: \"project management\", aliases: [\"projektmanagement\"], category: \"concept\" },\n { canonical: \"quality assurance\", aliases: [\"qualitätssicherung\", \"qualitaetssicherung\"], category: \"concept\" },\n // domain — product / data\n { canonical: \"analytics\", aliases: [\"datenanalyse\"], category: \"domain\" },\n { canonical: \"roadmap\", aliases: [\"fahrplan\"], category: \"domain\" },\n // domain — finance / accounting\n { canonical: \"financial analysis\", aliases: [\"finanzanalyse\"], category: \"domain\" },\n { canonical: \"budgeting\", aliases: [\"budgetierung\"], category: \"domain\" },\n { canonical: \"payroll\", aliases: [\"gehaltsabrechnung\", \"lohnbuchhaltung\"], category: \"domain\" },\n { canonical: \"auditin g\", aliases: [\"wirtschaftsprüfung\", \"wirtschaftspruefung\"], category: \"domain\" },\n // domain — sales\n { canonical: \"account management\", aliases: [\"kundenbetreuung\"], category: \"domain\" },\n { canonical: \"crm\", aliases: [\"kundenbeziehungsmanagement\"], category: \"domain\" },\n { canonical: \"customer retention\", aliases: [\"kundenbindung\"], category: \"domain\" },\n // domain — human resources\n { canonical: \"recruiting\", aliases: [\"personalbeschaffung\", \"rekrutierung\"], category: \"domain\" },\n { canonical: \"onboarding\", aliases: [\"einarbeitung\"], category: \"domain\" },\n { canonical: \"employee relations\", aliases: [\"mitarbeiterbeziehungen\"], category: \"domain\" },\n // domain — healthcare\n { canonical: \"patient care\", aliases: [\"patientenversorgung\"], category: \"domain\" },\n // domain — legal\n { canonical: \"contract review\", aliases: [\"vertragsprüfung\", \"vertragspruefung\"], category: \"domain\" },\n { canonical: \"regulatory compliance\", aliases: [\"compliance\", \"regulatorische konformität\"], category: \"domain\" },\n // domain — operations / logistics\n { canonical: \"supply chain management\", aliases: [\"lieferkettenmanagement\"], category: \"domain\" },\n { canonical: \"inventory management\", aliases: [\"bestandsverwaltung\"], category: \"domain\" },\n // domain — customer service\n { canonical: \"customer support\", aliases: [\"kundensupport\", \"kundendienst\"], category: \"domain\" },\n // soft skills\n { canonical: \"communication\", aliases: [\"kommunikation\"], category: \"soft\" },\n { canonical: \"leadership\", aliases: [\"führung\", \"fuehrung\"], category: \"soft\" },\n { canonical: \"teamwork\", aliases: [\"teamarbeit\"], category: \"soft\" },\n { canonical: \"problem solving\", aliases: [\"problemlösung\", \"problemloesung\"], category: \"soft\" },\n { canonical: \"time management\", aliases: [\"zeitmanagement\"], category: \"soft\" },\n { canonical: \"critical thinking\", aliases: [\"kritisches denken\"], category: \"soft\" },\n { canonical: \"adaptability\", aliases: [\"anpassungsfähigkeit\", \"anpassungsfaehigkeit\"], category: \"soft\" },\n { canonical: \"negotiation\", aliases: [\"verhandlungsgeschick\"], category: \"soft\" },\n { canonical: \"attention to detail\", aliases: [\"detailgenauigkeit\"], category: \"soft\" },\n // marketing\n { canonical: \"branding\", aliases: [\"markenbildung\"], category: \"marketing\" },\n { canonical: \"digital marketing\", aliases: [\"digitales marketing\"], category: \"marketing\" },\n { canonical: \"content marketing\", aliases: [\"content-marketing\"], category: \"marketing\" },\n { canonical: \"market research\", aliases: [\"marktforschung\"], category: \"marketing\" },\n];\n\nexport default de;\nexport { de as keywordRegistry };\n"]}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
// src/utils/skills.ts
|
|
6
|
+
function deriveSkillAliases(registry) {
|
|
7
|
+
const aliases = {};
|
|
8
|
+
for (const entry of registry) {
|
|
9
|
+
aliases[entry.canonical] = entry.aliases;
|
|
10
|
+
}
|
|
11
|
+
return aliases;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
// src/profiles/index.ts
|
|
15
|
+
var defaultKeywordRegistry = [
|
|
16
|
+
// languages / frameworks
|
|
17
|
+
// ponytail: "node" split from javascript — Node.js runtime !== JS language
|
|
18
|
+
{ canonical: "javascript", aliases: ["js"], category: "technical" },
|
|
19
|
+
{ canonical: "node", aliases: ["node.js", "nodejs"], category: "technical" },
|
|
20
|
+
{ canonical: "typescript", aliases: ["ts"], category: "technical" },
|
|
21
|
+
{ canonical: "react", aliases: ["reactjs", "react.js"], category: "technical" },
|
|
22
|
+
{ canonical: "angular", aliases: ["angularjs"], category: "technical" },
|
|
23
|
+
{ canonical: "vue", aliases: ["vue.js", "vuejs"], category: "technical" },
|
|
24
|
+
{ canonical: "svelte", aliases: [], category: "technical" },
|
|
25
|
+
{ canonical: "next.js", aliases: ["nextjs"], category: "technical" },
|
|
26
|
+
{ canonical: "c++", aliases: ["cpp"], category: "technical" },
|
|
27
|
+
{ canonical: "c#", aliases: ["csharp", ".net"], category: "technical" },
|
|
28
|
+
{ canonical: "java", aliases: [], category: "technical" },
|
|
29
|
+
{ canonical: "python", aliases: ["py"], category: "technical" },
|
|
30
|
+
{ canonical: "go", aliases: ["golang"], category: "technical" },
|
|
31
|
+
{ canonical: "rust", aliases: [], category: "technical" },
|
|
32
|
+
{ canonical: "ruby", aliases: ["ruby on rails", "rails"], category: "technical" },
|
|
33
|
+
{ canonical: "php", aliases: [], category: "technical" },
|
|
34
|
+
{ canonical: "swift", aliases: [], category: "technical" },
|
|
35
|
+
{ canonical: "kotlin", aliases: [], category: "technical" },
|
|
36
|
+
{ canonical: "scala", aliases: [], category: "technical" },
|
|
37
|
+
{ canonical: "html", aliases: ["html5"], category: "technical" },
|
|
38
|
+
{ canonical: "css", aliases: ["css3"], category: "technical" },
|
|
39
|
+
{ canonical: "ios development", aliases: ["ios"], category: "technical" },
|
|
40
|
+
{ canonical: "android development", aliases: ["android"], category: "technical" },
|
|
41
|
+
{ canonical: "react native", aliases: [], category: "technical" },
|
|
42
|
+
{ canonical: "flutter", aliases: [], category: "technical" },
|
|
43
|
+
{ canonical: "machine learning", aliases: ["ml"], category: "technical" },
|
|
44
|
+
{ canonical: "deep learning", aliases: [], category: "technical" },
|
|
45
|
+
{ canonical: "natural language processing", aliases: ["nlp"], category: "technical" },
|
|
46
|
+
// tools / platforms / infra
|
|
47
|
+
{ canonical: "sql", aliases: ["postgres", "mysql", "sqlite"], category: "tool" },
|
|
48
|
+
{ canonical: "graphql", aliases: ["gql"], category: "tool" },
|
|
49
|
+
{ canonical: "aws", aliases: ["amazon web services"], category: "tool" },
|
|
50
|
+
{ canonical: "azure", aliases: ["microsoft azure"], category: "tool" },
|
|
51
|
+
{ canonical: "gcp", aliases: ["google cloud", "google cloud platform"], category: "tool" },
|
|
52
|
+
{ canonical: "docker", aliases: ["containers"], category: "tool" },
|
|
53
|
+
{ canonical: "kubernetes", aliases: ["k8s"], category: "tool" },
|
|
54
|
+
{ canonical: "terraform", aliases: [], category: "tool" },
|
|
55
|
+
{ canonical: "ansible", aliases: [], category: "tool" },
|
|
56
|
+
{ canonical: "jenkins", aliases: [], category: "tool" },
|
|
57
|
+
{ canonical: "git", aliases: ["github", "gitlab"], category: "tool" },
|
|
58
|
+
{ canonical: "jira", aliases: [], category: "tool" },
|
|
59
|
+
{ canonical: "confluence", aliases: [], category: "tool" },
|
|
60
|
+
{ canonical: "pytorch", aliases: ["torch"], category: "tool" },
|
|
61
|
+
{ canonical: "tensorflow", aliases: ["tf"], category: "tool" },
|
|
62
|
+
{ canonical: "scikit-learn", aliases: ["sklearn"], category: "tool" },
|
|
63
|
+
{ canonical: "pandas", aliases: [], category: "tool" },
|
|
64
|
+
{ canonical: "numpy", aliases: [], category: "tool" },
|
|
65
|
+
{ canonical: "fastapi", aliases: [], category: "tool" },
|
|
66
|
+
{ canonical: "flask", aliases: [], category: "tool" },
|
|
67
|
+
{ canonical: "django", aliases: [], category: "tool" },
|
|
68
|
+
{ canonical: "kafka", aliases: [], category: "tool" },
|
|
69
|
+
{ canonical: "redis", aliases: [], category: "tool" },
|
|
70
|
+
{ canonical: "elasticsearch", aliases: ["elastic"], category: "tool" },
|
|
71
|
+
{ canonical: "spark", aliases: ["apache spark"], category: "tool" },
|
|
72
|
+
{ canonical: "tableau", aliases: [], category: "tool" },
|
|
73
|
+
{ canonical: "power bi", aliases: ["powerbi"], category: "tool" },
|
|
74
|
+
{ canonical: "excel", aliases: ["microsoft excel", "ms excel"], category: "tool" },
|
|
75
|
+
{ canonical: "salesforce", aliases: [], category: "tool" },
|
|
76
|
+
{ canonical: "hubspot", aliases: [], category: "tool" },
|
|
77
|
+
{ canonical: "sap", aliases: [], category: "tool" },
|
|
78
|
+
{ canonical: "quickbooks", aliases: [], category: "tool" },
|
|
79
|
+
{ canonical: "workday", aliases: [], category: "tool" },
|
|
80
|
+
{ canonical: "zendesk", aliases: [], category: "tool" },
|
|
81
|
+
{ canonical: "servicenow", aliases: [], category: "tool" },
|
|
82
|
+
{ canonical: "figma", aliases: [], category: "tool" },
|
|
83
|
+
{ canonical: "photoshop", aliases: ["adobe photoshop"], category: "tool" },
|
|
84
|
+
{ canonical: "illustrator", aliases: ["adobe illustrator"], category: "tool" },
|
|
85
|
+
{ canonical: "autocad", aliases: [], category: "tool" },
|
|
86
|
+
// engineering concepts
|
|
87
|
+
{ canonical: "accessibility", aliases: ["a11y"], category: "concept" },
|
|
88
|
+
{ canonical: "frontend", aliases: ["front-end"], category: "concept" },
|
|
89
|
+
{ canonical: "backend", aliases: ["back-end"], category: "concept" },
|
|
90
|
+
{ canonical: "security", aliases: ["cybersecurity"], category: "concept" },
|
|
91
|
+
{ canonical: "testing", aliases: ["unittest", "pytest"], category: "concept" },
|
|
92
|
+
{ canonical: "microservices", aliases: [], category: "concept" },
|
|
93
|
+
{ canonical: "agile", aliases: ["scrum"], category: "concept" },
|
|
94
|
+
{ canonical: "kanban", aliases: [], category: "concept" },
|
|
95
|
+
{ canonical: "blockchain", aliases: [], category: "concept" },
|
|
96
|
+
{ canonical: "devops", aliases: [], category: "concept" },
|
|
97
|
+
{ canonical: "ci/cd", aliases: ["continuous integration", "continuous deployment"], category: "concept" },
|
|
98
|
+
{ canonical: "rest api", aliases: ["restful api", "rest apis"], category: "concept" },
|
|
99
|
+
{ canonical: "design patterns", aliases: [], category: "concept" },
|
|
100
|
+
{ canonical: "data structures", aliases: [], category: "concept" },
|
|
101
|
+
{ canonical: "algorithms", aliases: [], category: "concept" },
|
|
102
|
+
{ canonical: "cloud computing", aliases: [], category: "concept" },
|
|
103
|
+
{ canonical: "system design", aliases: [], category: "concept" },
|
|
104
|
+
{ canonical: "tdd", aliases: ["test driven development", "test-driven development"], category: "concept" },
|
|
105
|
+
{ canonical: "ux design", aliases: ["user experience"], category: "concept" },
|
|
106
|
+
{ canonical: "ui design", aliases: ["user interface design"], category: "concept" },
|
|
107
|
+
{ canonical: "project management", aliases: [], category: "concept" },
|
|
108
|
+
{ canonical: "change management", aliases: [], category: "concept" },
|
|
109
|
+
{ canonical: "risk management", aliases: [], category: "concept" },
|
|
110
|
+
{ canonical: "quality assurance", aliases: ["qa"], category: "concept" },
|
|
111
|
+
// product / data domain
|
|
112
|
+
{ canonical: "roadmap", aliases: [], category: "domain" },
|
|
113
|
+
{ canonical: "stakeholder management", aliases: [], category: "domain" },
|
|
114
|
+
{ canonical: "prioritization", aliases: [], category: "domain" },
|
|
115
|
+
{ canonical: "a/b testing", aliases: ["ab testing"], category: "domain" },
|
|
116
|
+
{ canonical: "analytics", aliases: [], category: "domain" },
|
|
117
|
+
{ canonical: "statistics", aliases: ["stats"], category: "domain" },
|
|
118
|
+
{ canonical: "data visualization", aliases: [], category: "domain" },
|
|
119
|
+
// finance / accounting domain
|
|
120
|
+
{ canonical: "financial analysis", aliases: [], category: "domain" },
|
|
121
|
+
{ canonical: "budgeting", aliases: [], category: "domain" },
|
|
122
|
+
{ canonical: "forecasting", aliases: [], category: "domain" },
|
|
123
|
+
{ canonical: "bookkeeping", aliases: [], category: "domain" },
|
|
124
|
+
{ canonical: "accounts payable", aliases: ["ap"], category: "domain" },
|
|
125
|
+
{ canonical: "accounts receivable", aliases: ["ar"], category: "domain" },
|
|
126
|
+
{ canonical: "payroll", aliases: [], category: "domain" },
|
|
127
|
+
{ canonical: "auditing", aliases: ["audit"], category: "domain" },
|
|
128
|
+
{ canonical: "tax preparation", aliases: [], category: "domain" },
|
|
129
|
+
{ canonical: "gaap", aliases: [], category: "domain" },
|
|
130
|
+
// sales / account management domain
|
|
131
|
+
{ canonical: "lead generation", aliases: [], category: "domain" },
|
|
132
|
+
{ canonical: "account management", aliases: [], category: "domain" },
|
|
133
|
+
{ canonical: "crm", aliases: ["customer relationship management"], category: "domain" },
|
|
134
|
+
{ canonical: "sales pipeline", aliases: [], category: "domain" },
|
|
135
|
+
{ canonical: "cold calling", aliases: [], category: "domain" },
|
|
136
|
+
{ canonical: "upselling", aliases: ["cross-selling"], category: "domain" },
|
|
137
|
+
{ canonical: "customer retention", aliases: [], category: "domain" },
|
|
138
|
+
// human resources domain
|
|
139
|
+
{ canonical: "recruiting", aliases: ["talent acquisition"], category: "domain" },
|
|
140
|
+
{ canonical: "onboarding", aliases: [], category: "domain" },
|
|
141
|
+
{ canonical: "employee relations", aliases: [], category: "domain" },
|
|
142
|
+
{ canonical: "benefits administration", aliases: [], category: "domain" },
|
|
143
|
+
{ canonical: "performance management", aliases: [], category: "domain" },
|
|
144
|
+
// healthcare domain
|
|
145
|
+
{ canonical: "patient care", aliases: [], category: "domain" },
|
|
146
|
+
{ canonical: "clinical documentation", aliases: [], category: "domain" },
|
|
147
|
+
{ canonical: "hipaa", aliases: [], category: "domain" },
|
|
148
|
+
{ canonical: "electronic health records", aliases: ["ehr", "emr"], category: "domain" },
|
|
149
|
+
{ canonical: "medical billing", aliases: [], category: "domain" },
|
|
150
|
+
// legal domain
|
|
151
|
+
{ canonical: "contract review", aliases: [], category: "domain" },
|
|
152
|
+
{ canonical: "legal research", aliases: [], category: "domain" },
|
|
153
|
+
{ canonical: "litigation", aliases: [], category: "domain" },
|
|
154
|
+
{ canonical: "regulatory compliance", aliases: ["compliance"], category: "domain" },
|
|
155
|
+
{ canonical: "due diligence", aliases: [], category: "domain" },
|
|
156
|
+
// education domain
|
|
157
|
+
{ canonical: "curriculum development", aliases: [], category: "domain" },
|
|
158
|
+
{ canonical: "lesson planning", aliases: [], category: "domain" },
|
|
159
|
+
{ canonical: "classroom management", aliases: [], category: "domain" },
|
|
160
|
+
{ canonical: "instructional design", aliases: [], category: "domain" },
|
|
161
|
+
// operations / supply chain domain
|
|
162
|
+
{ canonical: "supply chain management", aliases: ["supply chain"], category: "domain" },
|
|
163
|
+
{ canonical: "inventory management", aliases: [], category: "domain" },
|
|
164
|
+
{ canonical: "procurement", aliases: [], category: "domain" },
|
|
165
|
+
{ canonical: "vendor management", aliases: [], category: "domain" },
|
|
166
|
+
{ canonical: "logistics", aliases: [], category: "domain" },
|
|
167
|
+
// customer service domain
|
|
168
|
+
{ canonical: "customer support", aliases: ["customer service"], category: "domain" },
|
|
169
|
+
{ canonical: "technical support", aliases: [], category: "domain" },
|
|
170
|
+
{ canonical: "conflict resolution", aliases: [], category: "domain" },
|
|
171
|
+
// soft skills
|
|
172
|
+
{ canonical: "communication", aliases: [], category: "soft" },
|
|
173
|
+
{ canonical: "leadership", aliases: [], category: "soft" },
|
|
174
|
+
{ canonical: "teamwork", aliases: ["collaboration"], category: "soft" },
|
|
175
|
+
{ canonical: "problem solving", aliases: ["problem-solving"], category: "soft" },
|
|
176
|
+
{ canonical: "adaptability", aliases: ["flexibility"], category: "soft" },
|
|
177
|
+
{ canonical: "time management", aliases: [], category: "soft" },
|
|
178
|
+
{ canonical: "critical thinking", aliases: [], category: "soft" },
|
|
179
|
+
{ canonical: "creativity", aliases: [], category: "soft" },
|
|
180
|
+
{ canonical: "attention to detail", aliases: [], category: "soft" },
|
|
181
|
+
{ canonical: "decision making", aliases: ["decision-making"], category: "soft" },
|
|
182
|
+
{ canonical: "emotional intelligence", aliases: [], category: "soft" },
|
|
183
|
+
{ canonical: "negotiation", aliases: [], category: "soft" },
|
|
184
|
+
{ canonical: "organization", aliases: ["organizational skills"], category: "soft" },
|
|
185
|
+
{ canonical: "public speaking", aliases: ["presentation skills"], category: "soft" },
|
|
186
|
+
{ canonical: "mentoring", aliases: ["coaching"], category: "soft" },
|
|
187
|
+
{ canonical: "interpersonal skills", aliases: [], category: "soft" },
|
|
188
|
+
{ canonical: "work ethic", aliases: [], category: "soft" },
|
|
189
|
+
// marketing
|
|
190
|
+
{ canonical: "seo", aliases: ["search engine optimization"], category: "marketing" },
|
|
191
|
+
{ canonical: "branding", aliases: ["brand strategy"], category: "marketing" },
|
|
192
|
+
{ canonical: "campaign management", aliases: [], category: "marketing" },
|
|
193
|
+
{ canonical: "content marketing", aliases: [], category: "marketing" },
|
|
194
|
+
{ canonical: "social media marketing", aliases: ["social media"], category: "marketing" },
|
|
195
|
+
{ canonical: "email marketing", aliases: [], category: "marketing" },
|
|
196
|
+
{ canonical: "digital marketing", aliases: [], category: "marketing" },
|
|
197
|
+
{ canonical: "copywriting", aliases: [], category: "marketing" },
|
|
198
|
+
{ canonical: "market research", aliases: [], category: "marketing" },
|
|
199
|
+
{ canonical: "ppc", aliases: ["pay-per-click", "google ads"], category: "marketing" },
|
|
200
|
+
{ canonical: "conversion rate optimization", aliases: ["cro"], category: "marketing" },
|
|
201
|
+
{ canonical: "public relations", aliases: ["pr"], category: "marketing" }
|
|
202
|
+
];
|
|
203
|
+
deriveSkillAliases(defaultKeywordRegistry);
|
|
204
|
+
|
|
205
|
+
// src/lang/en/index.ts
|
|
206
|
+
var en = defaultKeywordRegistry;
|
|
207
|
+
var en_default = en;
|
|
208
|
+
|
|
209
|
+
exports.default = en_default;
|
|
210
|
+
exports.keywordRegistry = en;
|
|
211
|
+
//# sourceMappingURL=index.cjs.map
|
|
212
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/utils/skills.ts","../../../src/profiles/index.ts","../../../src/lang/en/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["import { KeywordCategory, KeywordRegistry, SkillAliases } from \"../types/config\";\nimport { unique } from \"./text\";\n\n// ponytail: Map lookup, not fuzzy match — add fuzzy only if real misses show up.\nconst aliasIndexCache = new WeakMap<SkillAliases, Map<string, string>>();\n\nfunction getAliasIndex(aliases: SkillAliases): Map<string, string> {\n let index = aliasIndexCache.get(aliases);\n if (!index) {\n index = new Map();\n for (const [canonical, aliasList] of Object.entries(aliases)) {\n const lower = canonical.toLowerCase();\n index.set(lower, lower);\n for (const alias of aliasList) {\n index.set(alias.toLowerCase(), lower);\n }\n }\n aliasIndexCache.set(aliases, index);\n }\n return index;\n}\n\nexport function normalizeSkill(skill: string, aliases: SkillAliases): string {\n const normalized = skill.trim().toLowerCase();\n return getAliasIndex(aliases).get(normalized) ?? normalized;\n}\n\nexport function normalizeSkills(skills: string[], aliases: SkillAliases): string[] {\n return unique(skills.map((skill) => normalizeSkill(skill, aliases)));\n}\n\nexport function skillMatched(candidate: string, targetSkills: Set<string>, aliases: SkillAliases): boolean {\n const normalizedCandidate = normalizeSkill(candidate, aliases);\n return targetSkills.has(normalizedCandidate);\n}\n\n/** Derive a flat canonical->aliases map from a keyword registry (back-compat with SkillAliases). */\nexport function deriveSkillAliases(registry: KeywordRegistry): SkillAliases {\n const aliases: SkillAliases = {};\n for (const entry of registry) {\n aliases[entry.canonical] = entry.aliases;\n }\n return aliases;\n}\n\n/** Derive a canonical->category lookup from a keyword registry. */\nexport function buildCategoryIndex(registry: KeywordRegistry): Map<string, KeywordCategory> {\n const index = new Map<string, KeywordCategory>();\n for (const entry of registry) {\n index.set(entry.canonical.toLowerCase(), entry.category);\n }\n return index;\n}\n\n/** Merge two registries by canonical term; entries in `overrides` win. */\nexport function mergeKeywordRegistries(base: KeywordRegistry, overrides: KeywordRegistry): KeywordRegistry {\n const byCanonical = new Map<string, KeywordRegistry[number]>();\n for (const entry of base) byCanonical.set(entry.canonical.toLowerCase(), entry);\n for (const entry of overrides) byCanonical.set(entry.canonical.toLowerCase(), entry);\n return [...byCanonical.values()];\n}\n","import { ATSProfile, KeywordRegistry } from \"../types/config\";\nimport { deriveSkillAliases } from \"../utils/skills\";\n\n// ponytail: broad seed set per category, still not an exhaustive taxonomy — grow on demand.\nexport const defaultKeywordRegistry: KeywordRegistry = [\n // languages / frameworks\n // ponytail: \"node\" split from javascript — Node.js runtime !== JS language\n { canonical: \"javascript\", aliases: [\"js\"], category: \"technical\" },\n { canonical: \"node\", aliases: [\"node.js\", \"nodejs\"], category: \"technical\" },\n { canonical: \"typescript\", aliases: [\"ts\"], category: \"technical\" },\n { canonical: \"react\", aliases: [\"reactjs\", \"react.js\"], category: \"technical\" },\n { canonical: \"angular\", aliases: [\"angularjs\"], category: \"technical\" },\n { canonical: \"vue\", aliases: [\"vue.js\", \"vuejs\"], category: \"technical\" },\n { canonical: \"svelte\", aliases: [], category: \"technical\" },\n { canonical: \"next.js\", aliases: [\"nextjs\"], category: \"technical\" },\n { canonical: \"c++\", aliases: [\"cpp\"], category: \"technical\" },\n { canonical: \"c#\", aliases: [\"csharp\", \".net\"], category: \"technical\" },\n { canonical: \"java\", aliases: [], category: \"technical\" },\n { canonical: \"python\", aliases: [\"py\"], category: \"technical\" },\n { canonical: \"go\", aliases: [\"golang\"], category: \"technical\" },\n { canonical: \"rust\", aliases: [], category: \"technical\" },\n { canonical: \"ruby\", aliases: [\"ruby on rails\", \"rails\"], category: \"technical\" },\n { canonical: \"php\", aliases: [], category: \"technical\" },\n { canonical: \"swift\", aliases: [], category: \"technical\" },\n { canonical: \"kotlin\", aliases: [], category: \"technical\" },\n { canonical: \"scala\", aliases: [], category: \"technical\" },\n { canonical: \"html\", aliases: [\"html5\"], category: \"technical\" },\n { canonical: \"css\", aliases: [\"css3\"], category: \"technical\" },\n { canonical: \"ios development\", aliases: [\"ios\"], category: \"technical\" },\n { canonical: \"android development\", aliases: [\"android\"], category: \"technical\" },\n { canonical: \"react native\", aliases: [], category: \"technical\" },\n { canonical: \"flutter\", aliases: [], category: \"technical\" },\n { canonical: \"machine learning\", aliases: [\"ml\"], category: \"technical\" },\n { canonical: \"deep learning\", aliases: [], category: \"technical\" },\n { canonical: \"natural language processing\", aliases: [\"nlp\"], category: \"technical\" },\n // tools / platforms / infra\n { canonical: \"sql\", aliases: [\"postgres\", \"mysql\", \"sqlite\"], category: \"tool\" },\n { canonical: \"graphql\", aliases: [\"gql\"], category: \"tool\" },\n { canonical: \"aws\", aliases: [\"amazon web services\"], category: \"tool\" },\n { canonical: \"azure\", aliases: [\"microsoft azure\"], category: \"tool\" },\n { canonical: \"gcp\", aliases: [\"google cloud\", \"google cloud platform\"], category: \"tool\" },\n { canonical: \"docker\", aliases: [\"containers\"], category: \"tool\" },\n { canonical: \"kubernetes\", aliases: [\"k8s\"], category: \"tool\" },\n { canonical: \"terraform\", aliases: [], category: \"tool\" },\n { canonical: \"ansible\", aliases: [], category: \"tool\" },\n { canonical: \"jenkins\", aliases: [], category: \"tool\" },\n { canonical: \"git\", aliases: [\"github\", \"gitlab\"], category: \"tool\" },\n { canonical: \"jira\", aliases: [], category: \"tool\" },\n { canonical: \"confluence\", aliases: [], category: \"tool\" },\n { canonical: \"pytorch\", aliases: [\"torch\"], category: \"tool\" },\n { canonical: \"tensorflow\", aliases: [\"tf\"], category: \"tool\" },\n { canonical: \"scikit-learn\", aliases: [\"sklearn\"], category: \"tool\" },\n { canonical: \"pandas\", aliases: [], category: \"tool\" },\n { canonical: \"numpy\", aliases: [], category: \"tool\" },\n { canonical: \"fastapi\", aliases: [], category: \"tool\" },\n { canonical: \"flask\", aliases: [], category: \"tool\" },\n { canonical: \"django\", aliases: [], category: \"tool\" },\n { canonical: \"kafka\", aliases: [], category: \"tool\" },\n { canonical: \"redis\", aliases: [], category: \"tool\" },\n { canonical: \"elasticsearch\", aliases: [\"elastic\"], category: \"tool\" },\n { canonical: \"spark\", aliases: [\"apache spark\"], category: \"tool\" },\n { canonical: \"tableau\", aliases: [], category: \"tool\" },\n { canonical: \"power bi\", aliases: [\"powerbi\"], category: \"tool\" },\n { canonical: \"excel\", aliases: [\"microsoft excel\", \"ms excel\"], category: \"tool\" },\n { canonical: \"salesforce\", aliases: [], category: \"tool\" },\n { canonical: \"hubspot\", aliases: [], category: \"tool\" },\n { canonical: \"sap\", aliases: [], category: \"tool\" },\n { canonical: \"quickbooks\", aliases: [], category: \"tool\" },\n { canonical: \"workday\", aliases: [], category: \"tool\" },\n { canonical: \"zendesk\", aliases: [], category: \"tool\" },\n { canonical: \"servicenow\", aliases: [], category: \"tool\" },\n { canonical: \"figma\", aliases: [], category: \"tool\" },\n { canonical: \"photoshop\", aliases: [\"adobe photoshop\"], category: \"tool\" },\n { canonical: \"illustrator\", aliases: [\"adobe illustrator\"], category: \"tool\" },\n { canonical: \"autocad\", aliases: [], category: \"tool\" },\n // engineering concepts\n { canonical: \"accessibility\", aliases: [\"a11y\"], category: \"concept\" },\n { canonical: \"frontend\", aliases: [\"front-end\"], category: \"concept\" },\n { canonical: \"backend\", aliases: [\"back-end\"], category: \"concept\" },\n { canonical: \"security\", aliases: [\"cybersecurity\"], category: \"concept\" },\n { canonical: \"testing\", aliases: [\"unittest\", \"pytest\"], category: \"concept\" },\n { canonical: \"microservices\", aliases: [], category: \"concept\" },\n { canonical: \"agile\", aliases: [\"scrum\"], category: \"concept\" },\n { canonical: \"kanban\", aliases: [], category: \"concept\" },\n { canonical: \"blockchain\", aliases: [], category: \"concept\" },\n { canonical: \"devops\", aliases: [], category: \"concept\" },\n { canonical: \"ci/cd\", aliases: [\"continuous integration\", \"continuous deployment\"], category: \"concept\" },\n { canonical: \"rest api\", aliases: [\"restful api\", \"rest apis\"], category: \"concept\" },\n { canonical: \"design patterns\", aliases: [], category: \"concept\" },\n { canonical: \"data structures\", aliases: [], category: \"concept\" },\n { canonical: \"algorithms\", aliases: [], category: \"concept\" },\n { canonical: \"cloud computing\", aliases: [], category: \"concept\" },\n { canonical: \"system design\", aliases: [], category: \"concept\" },\n { canonical: \"tdd\", aliases: [\"test driven development\", \"test-driven development\"], category: \"concept\" },\n { canonical: \"ux design\", aliases: [\"user experience\"], category: \"concept\" },\n { canonical: \"ui design\", aliases: [\"user interface design\"], category: \"concept\" },\n { canonical: \"project management\", aliases: [], category: \"concept\" },\n { canonical: \"change management\", aliases: [], category: \"concept\" },\n { canonical: \"risk management\", aliases: [], category: \"concept\" },\n { canonical: \"quality assurance\", aliases: [\"qa\"], category: \"concept\" },\n // product / data domain\n { canonical: \"roadmap\", aliases: [], category: \"domain\" },\n { canonical: \"stakeholder management\", aliases: [], category: \"domain\" },\n { canonical: \"prioritization\", aliases: [], category: \"domain\" },\n { canonical: \"a/b testing\", aliases: [\"ab testing\"], category: \"domain\" },\n { canonical: \"analytics\", aliases: [], category: \"domain\" },\n { canonical: \"statistics\", aliases: [\"stats\"], category: \"domain\" },\n { canonical: \"data visualization\", aliases: [], category: \"domain\" },\n // finance / accounting domain\n { canonical: \"financial analysis\", aliases: [], category: \"domain\" },\n { canonical: \"budgeting\", aliases: [], category: \"domain\" },\n { canonical: \"forecasting\", aliases: [], category: \"domain\" },\n { canonical: \"bookkeeping\", aliases: [], category: \"domain\" },\n { canonical: \"accounts payable\", aliases: [\"ap\"], category: \"domain\" },\n { canonical: \"accounts receivable\", aliases: [\"ar\"], category: \"domain\" },\n { canonical: \"payroll\", aliases: [], category: \"domain\" },\n { canonical: \"auditing\", aliases: [\"audit\"], category: \"domain\" },\n { canonical: \"tax preparation\", aliases: [], category: \"domain\" },\n { canonical: \"gaap\", aliases: [], category: \"domain\" },\n // sales / account management domain\n { canonical: \"lead generation\", aliases: [], category: \"domain\" },\n { canonical: \"account management\", aliases: [], category: \"domain\" },\n { canonical: \"crm\", aliases: [\"customer relationship management\"], category: \"domain\" },\n { canonical: \"sales pipeline\", aliases: [], category: \"domain\" },\n { canonical: \"cold calling\", aliases: [], category: \"domain\" },\n { canonical: \"upselling\", aliases: [\"cross-selling\"], category: \"domain\" },\n { canonical: \"customer retention\", aliases: [], category: \"domain\" },\n // human resources domain\n { canonical: \"recruiting\", aliases: [\"talent acquisition\"], category: \"domain\" },\n { canonical: \"onboarding\", aliases: [], category: \"domain\" },\n { canonical: \"employee relations\", aliases: [], category: \"domain\" },\n { canonical: \"benefits administration\", aliases: [], category: \"domain\" },\n { canonical: \"performance management\", aliases: [], category: \"domain\" },\n // healthcare domain\n { canonical: \"patient care\", aliases: [], category: \"domain\" },\n { canonical: \"clinical documentation\", aliases: [], category: \"domain\" },\n { canonical: \"hipaa\", aliases: [], category: \"domain\" },\n { canonical: \"electronic health records\", aliases: [\"ehr\", \"emr\"], category: \"domain\" },\n { canonical: \"medical billing\", aliases: [], category: \"domain\" },\n // legal domain\n { canonical: \"contract review\", aliases: [], category: \"domain\" },\n { canonical: \"legal research\", aliases: [], category: \"domain\" },\n { canonical: \"litigation\", aliases: [], category: \"domain\" },\n { canonical: \"regulatory compliance\", aliases: [\"compliance\"], category: \"domain\" },\n { canonical: \"due diligence\", aliases: [], category: \"domain\" },\n // education domain\n { canonical: \"curriculum development\", aliases: [], category: \"domain\" },\n { canonical: \"lesson planning\", aliases: [], category: \"domain\" },\n { canonical: \"classroom management\", aliases: [], category: \"domain\" },\n { canonical: \"instructional design\", aliases: [], category: \"domain\" },\n // operations / supply chain domain\n { canonical: \"supply chain management\", aliases: [\"supply chain\"], category: \"domain\" },\n { canonical: \"inventory management\", aliases: [], category: \"domain\" },\n { canonical: \"procurement\", aliases: [], category: \"domain\" },\n { canonical: \"vendor management\", aliases: [], category: \"domain\" },\n { canonical: \"logistics\", aliases: [], category: \"domain\" },\n // customer service domain\n { canonical: \"customer support\", aliases: [\"customer service\"], category: \"domain\" },\n { canonical: \"technical support\", aliases: [], category: \"domain\" },\n { canonical: \"conflict resolution\", aliases: [], category: \"domain\" },\n // soft skills\n { canonical: \"communication\", aliases: [], category: \"soft\" },\n { canonical: \"leadership\", aliases: [], category: \"soft\" },\n { canonical: \"teamwork\", aliases: [\"collaboration\"], category: \"soft\" },\n { canonical: \"problem solving\", aliases: [\"problem-solving\"], category: \"soft\" },\n { canonical: \"adaptability\", aliases: [\"flexibility\"], category: \"soft\" },\n { canonical: \"time management\", aliases: [], category: \"soft\" },\n { canonical: \"critical thinking\", aliases: [], category: \"soft\" },\n { canonical: \"creativity\", aliases: [], category: \"soft\" },\n { canonical: \"attention to detail\", aliases: [], category: \"soft\" },\n { canonical: \"decision making\", aliases: [\"decision-making\"], category: \"soft\" },\n { canonical: \"emotional intelligence\", aliases: [], category: \"soft\" },\n { canonical: \"negotiation\", aliases: [], category: \"soft\" },\n { canonical: \"organization\", aliases: [\"organizational skills\"], category: \"soft\" },\n { canonical: \"public speaking\", aliases: [\"presentation skills\"], category: \"soft\" },\n { canonical: \"mentoring\", aliases: [\"coaching\"], category: \"soft\" },\n { canonical: \"interpersonal skills\", aliases: [], category: \"soft\" },\n { canonical: \"work ethic\", aliases: [], category: \"soft\" },\n // marketing\n { canonical: \"seo\", aliases: [\"search engine optimization\"], category: \"marketing\" },\n { canonical: \"branding\", aliases: [\"brand strategy\"], category: \"marketing\" },\n { canonical: \"campaign management\", aliases: [], category: \"marketing\" },\n { canonical: \"content marketing\", aliases: [], category: \"marketing\" },\n { canonical: \"social media marketing\", aliases: [\"social media\"], category: \"marketing\" },\n { canonical: \"email marketing\", aliases: [], category: \"marketing\" },\n { canonical: \"digital marketing\", aliases: [], category: \"marketing\" },\n { canonical: \"copywriting\", aliases: [], category: \"marketing\" },\n { canonical: \"market research\", aliases: [], category: \"marketing\" },\n { canonical: \"ppc\", aliases: [\"pay-per-click\", \"google ads\"], category: \"marketing\" },\n { canonical: \"conversion rate optimization\", aliases: [\"cro\"], category: \"marketing\" },\n { canonical: \"public relations\", aliases: [\"pr\"], category: \"marketing\" },\n];\n\nexport const defaultSkillAliases = deriveSkillAliases(defaultKeywordRegistry);\n\nexport const softwareEngineerProfile: ATSProfile = {\n name: \"software-engineer\",\n mandatorySkills: [\"javascript\", \"typescript\", \"react\", \"node\"],\n optionalSkills: [\"graphql\", \"sql\", \"docker\"],\n minExperience: 3,\n};\n\nexport const dataScientistProfile: ATSProfile = {\n name: \"data-scientist\",\n mandatorySkills: [\"python\", \"sql\", \"statistics\"],\n optionalSkills: [\"pandas\", \"numpy\", \"pytorch\", \"tensorflow\"],\n minExperience: 2,\n};\n\nexport const productManagerProfile: ATSProfile = {\n name: \"product-manager\",\n mandatorySkills: [\"roadmap\", \"stakeholder management\", \"prioritization\"],\n optionalSkills: [\"a/b testing\", \"analytics\", \"sql\"],\n minExperience: 3,\n};\n\nexport const defaultProfiles: ATSProfile[] = [\n softwareEngineerProfile,\n dataScientistProfile,\n productManagerProfile,\n];\n","/**\n * English keyword registry (the library's default). Re-exported as its own\n * subpath so language packs are imported uniformly:\n *\n * import en from \"@pranavraut033/ats-checker/en\";\n * analyzeResume({ ..., config: { keywordRegistry: en } });\n */\nimport { defaultKeywordRegistry } from \"../../profiles\";\nimport type { KeywordRegistry } from \"../../types/config\";\n\nconst en: KeywordRegistry = defaultKeywordRegistry;\n\nexport default en;\nexport { en as keywordRegistry };\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { defaultKeywordRegistry } from '../../chunk-ZJ5E4H7Z.mjs';
|
|
2
|
+
|
|
3
|
+
// src/lang/en/index.ts
|
|
4
|
+
var en = defaultKeywordRegistry;
|
|
5
|
+
var en_default = en;
|
|
6
|
+
|
|
7
|
+
export { en_default as default, en as keywordRegistry };
|
|
8
|
+
//# sourceMappingURL=index.mjs.map
|
|
9
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/lang/en/index.ts"],"names":[],"mappings":";;;AAUA,IAAM,EAAA,GAAsB;AAE5B,IAAO,UAAA,GAAQ","file":"index.mjs","sourcesContent":["/**\n * English keyword registry (the library's default). Re-exported as its own\n * subpath so language packs are imported uniformly:\n *\n * import en from \"@pranavraut033/ats-checker/en\";\n * analyzeResume({ ..., config: { keywordRegistry: en } });\n */\nimport { defaultKeywordRegistry } from \"../../profiles\";\nimport type { KeywordRegistry } from \"../../types/config\";\n\nconst en: KeywordRegistry = defaultKeywordRegistry;\n\nexport default en;\nexport { en as keywordRegistry };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/pdf/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * Extract plain text from a PDF buffer.\n *\n * Requires `pdfjs-dist` to be installed (optional peerDependency):\n * npm install pdfjs-dist\n *\n * @param data - Raw PDF bytes as Uint8Array or ArrayBuffer\n * @returns Extracted text, ready to pass as `resumeText` to analyzeResume\n */\nexport async function extractTextFromPDF(\n data: Uint8Array | ArrayBuffer\n): Promise<string> {\n // ponytail: lazy import keeps core zero-dep; missing peer throws with clear message\n let pdfjsLib: typeof import(\"pdfjs-dist\");\n try {\n pdfjsLib = await import(\"pdfjs-dist\");\n } catch {\n throw new Error(\n \"pdfjs-dist is required for PDF extraction. Install it: npm install pdfjs-dist\"\n );\n }\n\n const bytes =\n data instanceof ArrayBuffer ? new Uint8Array(data) : data;\n\n const doc = await pdfjsLib.getDocument({ data: bytes }).promise;\n const pages: string[] = [];\n\n for (let i = 1; i <= doc.numPages; i++) {\n const page = await doc.getPage(i);\n const content = await page.getTextContent();\n\n type RawItem = { x: number; y: number; str: string };\n const items: RawItem[] = [];\n\n for (const item of content.items) {\n if (!(\"str\" in item) || !item.str.trim()) continue;\n const transform: number[] | undefined = Array.isArray(\n (item as { transform?: number[] }).transform\n )\n ? (item as { transform: number[] }).transform\n : undefined;\n\n if (!transform) {\n // No positional info (unit-test mocks) — treat as single-column item\n items.push({ x: 0, y: 0, str: item.str });\n } else {\n items.push({ x: transform[4], y: transform[5], str: item.str });\n }\n }\n\n // Detect column boundary: find the largest x-gap among item start positions.\n // If it exceeds COLUMN_GAP_THRESHOLD, split into left / right columns and\n // process each independently so headers in different columns don't merge.\n // ponytail: single largest-gap heuristic handles the common 2-column resume;\n // n-column needs k-means on x-distribution — upgrade if this proves insufficient.\n // Column boundary heuristic: the largest gap in item x-positions.\n // Real PDF column gutters show as a gap >>80px; normal word spacing is <50px.\n // ponytail: magic number calibrated to PranavRaut2026.pdf (104px gap); raise\n // if single-column PDFs with wide indentation start getting falsely split.\n const COLUMN_GAP_THRESHOLD = 80;\n const xPositions = [...new Set(items.map((it) => Math.round(it.x)))].sort(\n (a, b) => a - b\n );\n\n let columnBoundary: number | null = null;\n let maxGap = 0;\n for (let j = 1; j < xPositions.length; j++) {\n const gap = xPositions[j] - xPositions[j - 1];\n if (gap > maxGap) {\n maxGap = gap;\n columnBoundary = (xPositions[j - 1] + xPositions[j]) / 2;\n }\n }\n if (maxGap < COLUMN_GAP_THRESHOLD) columnBoundary = null;\n\n const columns =\n columnBoundary !== null\n ? [\n items.filter((it) => it.x < columnBoundary!),\n items.filter((it) => it.x >= columnBoundary!),\n ]\n : [items];\n\n const columnTexts = columns.map((col) => renderColumn(col));\n pages.push(columnTexts.filter(Boolean).join(\"\\n\"));\n }\n\n return pages.join(\"\\n\");\n}\n\nfunction renderColumn(items: Array<{ x: number; y: number; str: string }>): string {\n const Y_TOLERANCE = 2;\n const lineMap: Map<number, Array<{ x: number; str: string }>> = new Map();\n const lineOrder: number[] = [];\n\n for (const { x, y, str } of items) {\n let bucketKey: number | undefined;\n for (const key of lineOrder) {\n if (Math.abs(key - y) <= Y_TOLERANCE) {\n bucketKey = key;\n break;\n }\n }\n if (bucketKey === undefined) {\n bucketKey = y;\n lineOrder.push(y);\n lineMap.set(y, []);\n }\n lineMap.get(bucketKey)!.push({ x, str });\n }\n\n // pdfjs y=0 is bottom of page — sort descending so top comes first\n lineOrder.sort((a, b) => b - a);\n\n return lineOrder\n .map((key) =>\n (lineMap.get(key) ?? [])\n .sort((a, b) => a.x - b.x)\n .map((it) => it.str)\n .join(\" \")\n .replace(/[^\\S\\n]+/g, \" \")\n .trim()\n )\n .filter(Boolean)\n .join(\"\\n\");\n}\n"]}
|