resuml 1.12.2 → 1.13.1
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/dist/index.cjs +53 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -0
- package/dist/mcp/server.cjs +53 -2
- package/dist/mcp/server.cjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
package/dist/mcp/server.cjs
CHANGED
|
@@ -737,7 +737,32 @@ var en = {
|
|
|
737
737
|
"monthly",
|
|
738
738
|
"quarterly",
|
|
739
739
|
"annual",
|
|
740
|
-
"annually"
|
|
740
|
+
"annually",
|
|
741
|
+
// More generic words that aren't skills
|
|
742
|
+
"code",
|
|
743
|
+
"coding",
|
|
744
|
+
"url",
|
|
745
|
+
"contact",
|
|
746
|
+
"information",
|
|
747
|
+
"apply",
|
|
748
|
+
"application",
|
|
749
|
+
"review",
|
|
750
|
+
"reviews",
|
|
751
|
+
"quality",
|
|
752
|
+
"scale",
|
|
753
|
+
"scalable",
|
|
754
|
+
"system",
|
|
755
|
+
"systems",
|
|
756
|
+
"solution",
|
|
757
|
+
"feature",
|
|
758
|
+
"features",
|
|
759
|
+
"project",
|
|
760
|
+
"projects",
|
|
761
|
+
"build",
|
|
762
|
+
"building",
|
|
763
|
+
"deliver",
|
|
764
|
+
"delivery",
|
|
765
|
+
"cross-functional"
|
|
741
766
|
]
|
|
742
767
|
};
|
|
743
768
|
var en_default = en;
|
|
@@ -1602,7 +1627,33 @@ function matchJobDescription(resume, jobDescription, language = "en") {
|
|
|
1602
1627
|
}
|
|
1603
1628
|
}
|
|
1604
1629
|
const matchPercentage = jdKeywords.length > 0 ? Math.round(matched.length / jdKeywords.length * 100) : 0;
|
|
1605
|
-
|
|
1630
|
+
const resumeSkillKeywords = [];
|
|
1631
|
+
for (const s of resume.skills || []) {
|
|
1632
|
+
for (const kw of s.keywords || []) {
|
|
1633
|
+
resumeSkillKeywords.push(kw.toLowerCase());
|
|
1634
|
+
}
|
|
1635
|
+
}
|
|
1636
|
+
const jdStemSet = /* @__PURE__ */ new Set();
|
|
1637
|
+
const jdTokenSet = /* @__PURE__ */ new Set();
|
|
1638
|
+
for (const kw of jdKeywords) {
|
|
1639
|
+
jdTokenSet.add(kw.toLowerCase());
|
|
1640
|
+
for (const part of kw.split(/\s+/)) {
|
|
1641
|
+
jdStemSet.add(simpleStem(part, language));
|
|
1642
|
+
jdTokenSet.add(part.toLowerCase());
|
|
1643
|
+
}
|
|
1644
|
+
}
|
|
1645
|
+
const jdFullTokens = tokenize(stripNoise(jobDescription), new Set(langData.stopWords));
|
|
1646
|
+
const jdFullStems = new Set(jdFullTokens.map((t) => simpleStem(t, language)));
|
|
1647
|
+
const extra = [];
|
|
1648
|
+
const seenExtra = /* @__PURE__ */ new Set();
|
|
1649
|
+
for (const skill of resumeSkillKeywords) {
|
|
1650
|
+
const stem = simpleStem(skill, language);
|
|
1651
|
+
if (!jdFullStems.has(stem) && !jdTokenSet.has(skill) && !seenExtra.has(skill)) {
|
|
1652
|
+
seenExtra.add(skill);
|
|
1653
|
+
extra.push(skill);
|
|
1654
|
+
}
|
|
1655
|
+
}
|
|
1656
|
+
return { matched, missing, extra, matchPercentage };
|
|
1606
1657
|
}
|
|
1607
1658
|
|
|
1608
1659
|
// src/ats/scoring.ts
|