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.cjs
CHANGED
|
@@ -961,7 +961,32 @@ var init_en = __esm({
|
|
|
961
961
|
"monthly",
|
|
962
962
|
"quarterly",
|
|
963
963
|
"annual",
|
|
964
|
-
"annually"
|
|
964
|
+
"annually",
|
|
965
|
+
// More generic words that aren't skills
|
|
966
|
+
"code",
|
|
967
|
+
"coding",
|
|
968
|
+
"url",
|
|
969
|
+
"contact",
|
|
970
|
+
"information",
|
|
971
|
+
"apply",
|
|
972
|
+
"application",
|
|
973
|
+
"review",
|
|
974
|
+
"reviews",
|
|
975
|
+
"quality",
|
|
976
|
+
"scale",
|
|
977
|
+
"scalable",
|
|
978
|
+
"system",
|
|
979
|
+
"systems",
|
|
980
|
+
"solution",
|
|
981
|
+
"feature",
|
|
982
|
+
"features",
|
|
983
|
+
"project",
|
|
984
|
+
"projects",
|
|
985
|
+
"build",
|
|
986
|
+
"building",
|
|
987
|
+
"deliver",
|
|
988
|
+
"delivery",
|
|
989
|
+
"cross-functional"
|
|
965
990
|
]
|
|
966
991
|
};
|
|
967
992
|
en_default = en;
|
|
@@ -1852,7 +1877,33 @@ function matchJobDescription(resume, jobDescription, language = "en") {
|
|
|
1852
1877
|
}
|
|
1853
1878
|
}
|
|
1854
1879
|
const matchPercentage = jdKeywords.length > 0 ? Math.round(matched.length / jdKeywords.length * 100) : 0;
|
|
1855
|
-
|
|
1880
|
+
const resumeSkillKeywords = [];
|
|
1881
|
+
for (const s of resume.skills || []) {
|
|
1882
|
+
for (const kw of s.keywords || []) {
|
|
1883
|
+
resumeSkillKeywords.push(kw.toLowerCase());
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
const jdStemSet = /* @__PURE__ */ new Set();
|
|
1887
|
+
const jdTokenSet = /* @__PURE__ */ new Set();
|
|
1888
|
+
for (const kw of jdKeywords) {
|
|
1889
|
+
jdTokenSet.add(kw.toLowerCase());
|
|
1890
|
+
for (const part of kw.split(/\s+/)) {
|
|
1891
|
+
jdStemSet.add(simpleStem(part, language));
|
|
1892
|
+
jdTokenSet.add(part.toLowerCase());
|
|
1893
|
+
}
|
|
1894
|
+
}
|
|
1895
|
+
const jdFullTokens = tokenize(stripNoise(jobDescription), new Set(langData.stopWords));
|
|
1896
|
+
const jdFullStems = new Set(jdFullTokens.map((t) => simpleStem(t, language)));
|
|
1897
|
+
const extra = [];
|
|
1898
|
+
const seenExtra = /* @__PURE__ */ new Set();
|
|
1899
|
+
for (const skill of resumeSkillKeywords) {
|
|
1900
|
+
const stem = simpleStem(skill, language);
|
|
1901
|
+
if (!jdFullStems.has(stem) && !jdTokenSet.has(skill) && !seenExtra.has(skill)) {
|
|
1902
|
+
seenExtra.add(skill);
|
|
1903
|
+
extra.push(skill);
|
|
1904
|
+
}
|
|
1905
|
+
}
|
|
1906
|
+
return { matched, missing, extra, matchPercentage };
|
|
1856
1907
|
}
|
|
1857
1908
|
var init_jdMatcher = __esm({
|
|
1858
1909
|
"src/ats/jdMatcher.ts"() {
|