engines/adapters/domain/resume-scorer
resume-scorer
Resume / CV parsing and candidate-matching microservice for recruiters and ATS pipelines: parse raw resume text into structured {contact, skills, experience, education, links, summary}; score a...
resume-scorer (engines/adapters/domain/resume-scorer)
Intelligent resume/CV parsing and candidate-matching microservice — the read side of hiring. Parses raw resume text into structured fields and scores candidates against a job description. Hybrid: every tool has a deterministic heuristic core (regex + token overlap + a skills lexicon) that runs fully offline; parse optionally enriches via a reachable LLM and tags results mode: 'heuristic' | 'llm'. Never requires a model; a down model never throws.
Tools
| tool | input | what it does |
|---|---|---|
parse | { resume } | { contact{name,email,phone}, links, summary, skills, experience{totalYears,titles,periods}, education{degrees} }. |
scoreVsJd | { resume, jd } | 0–100 match %, verdict, skills/keywords/years breakdown, matched & missing lists. |
skillsGap | { resume, skills } | have / missing / extra skills + coverage % vs a required set. |
atsCheck | { resume } | Flags ATS parsing hazards (columns/tables, headers/footers, emoji, missing sections) + 0–100 ATS score. |
keywordMatch | { resume, keywords } | Per-keyword count/density, coverage %, matched & missing. |
seniorityEstimate | { resume } | Infers level (intern→vp) from years, titles and leadership signals with a confidence. |
Usage
import rs from './index.js';
rs.adapters.scoreVsJd({ resume, jd });
rs.adapters.skillsGap({ resume, skills: ['python', 'aws', 'kubernetes'] });
rs.adapters.atsCheck({ resume });
DRY boundaries
- This is the read side (parse & score candidates);
jd-writeris the write side (author the
posting); interview-kit is the assess side (questions/scorecards).
- Skill/keyword extraction is hiring-domain (a curated skills lexicon), not the generic tokenizer of
nlp / a-text.
- Self-contained: no cross-pack imports except
../_shared/llm.jsfor the optional AI mode.