| name | match-score |
| description | Compute a quantitative match score between a resume and job requirements. Evaluates per-category alignment (must_have, nice_to_have, culture, logistics), identifies strengths and gaps, and produces an overall weighted score from 0 to 100. Use when assessing how well a resume matches a specific job description.
|
Match Score
You are tasked with evaluating how well a resume matches a set of structured
job requirements.
Input
You receive two inputs:
- resumeData: The resume content (either structured ResumeData JSON or
raw .tex source containing the resume content)
- jobRequirements: A structured JobRequirements JSON object with
categorized requirements, keywords, and importance weights
Output
Return a JSON object matching this schema:
{
"overallScore": 72,
"categoryScores": {
"must_have": 68,
"nice_to_have": 80,
"culture": 75,
"logistics": 90
},
"matches": [
{
"requirementId": "req_1",
"evidence": "Resume mentions 5 years of Python in Experience section",
"strength": "strong"
}
],
"gaps": [
{
"requirementId": "req_3",
"description": "No mention of Kubernetes experience",
"severity": "high",
"bridgeable": true,
"bridgeHint": "Docker experience could be reframed to show container orchestration familiarity"
}
],
"keywordCoverage": {
"found": ["Python", "AWS", "Docker"],
"missing": ["Kubernetes", "GraphQL"]
}
}
Deduplication Rules (Strict)
These rules are mandatory. Violating them produces a useless report.
1. One entry per requirement
Each requirementId must appear in exactly one entry across the entire output — either in matches OR in gaps, never in both. A requirement is either covered or it isn't.
2. Distinct evidence within matches
Each entry in matches must describe a different skill or capability matched by the resume. Do not create multiple entries that express the same strength in different words.
- ❌ Bad: separate entries for "5 years Python" and "Python used in ML project" both pointing to
req_1
- ✅ Good: one entry per requirement, summarising the strongest single piece of evidence
3. Distinct missing capabilities in gaps
Each entry in gaps must describe a separate, concrete missing capability. Consolidate related gaps into one entry rather than listing synonyms or closely related items individually.
- ❌ Bad: separate gaps for "no Kubernetes" and "no container orchestration" — these are the same concept
- ✅ Good: one gap entry per distinct skill/domain that the resume does not address
4. Prioritisation
matches: return only the top strongest matches (up to 5), ordered by strength desc (strong → moderate → weak)
gaps: return all significant gaps, ordered by severity desc (high → medium → low); omit low-severity gaps if there are already 8+ entries
Scoring Algorithm
Per-Category Scoring (0–100)
For each category, compute a weighted average:
categoryScore = sum(requirementScore_i * importance_i) / sum(importance_i)
Where requirementScore_i is:
- 100: Strong match — direct evidence in resume
- 70: Partial match — related experience that could bridge the gap
- 30: Weak match — tangentially related content
- 0: No match — no evidence found
Overall Score
overallScore = must_have * 0.50 + nice_to_have * 0.20 + culture * 0.15 + logistics * 0.15
The weights reflect that must_have requirements are the primary hiring signal.
Match Strength Classification
- strong: Direct, explicit evidence (e.g., "5 years Python" for "Python required")
- moderate: Related but not exact (e.g., "Java experience" for "Python required")
- weak: Tangential connection only
Gap Severity Classification
- high: Missing a must_have requirement with importance > 0.7
- medium: Missing a must_have requirement with importance <= 0.7, or a
nice_to_have with importance > 0.6
- low: Missing a nice_to_have or culture/logistics item
Bridgeability Assessment
For each gap, assess whether the candidate's existing experience could be
reframed to partially address it:
- bridgeable: true — The candidate has transferable skills (e.g., has
Docker experience for a Kubernetes requirement)
- bridgeable: false — The requirement cannot be addressed with existing
experience (e.g., needs specific certification the candidate lacks)
- Include a
bridgeHint for bridgeable gaps explaining the potential reframe
Rules
- Score objectively based on evidence, not assumptions
- Don't inflate scores — be realistic about gaps
- Consider both explicit skills and implied experience from job descriptions
- Keywords appearing in context (bullet points) are stronger signals than
appearing in a skills list alone
For detailed scoring rubric and calibration examples, consult
references/RUBRIC.md.