SKILL.md
---
name: jd-candidate-matching
description: "Match job descriptions to candidate profiles with transparent scoring matrices — skill overlap, seniority fit, keyword/semantic alignment, and match-explanation reports. Use when the user asks to match a CV to a JD, compute ATS match scores, find missing keywords, rank candidates for a job, or optimize a resume for a specific posting."
---
# JD ↔ Candidate Matching
## Purpose
Deterministic + semantic matching between a job description and a profile, producing an explainable match score — the core of every ATS-ranking engine.
## Method
1. **Parse both sides** into structured fields:
- JD: must-have skills, nice-to-haves, seniority, domain, certifications, responsibility keywords
- CV: skills (with years/recency), titles, industries, metric-backed achievements
2. **Skill matching** — exact + synonym/ontology match (React≈React.js, K8s≈Kubernetes, ML≈machine learning). Must-have coverage weighted 2× nice-to-have coverage.
3. **Seniority fit** — map titles to levels; penalize over- and under-qualification symmetrically (over-qualification = retention-risk flag, not auto-reject).
4. **Recency & depth** — a must-have used in the last 2 years scores full; 5+ years ago, half.
5. **Composite score** = 50% must-have skills + 20% nice-to-haves + 15% seniority + 15% domain.
## Explainability (mandatory)
Every score ships with:
- Matched skills list / missing must-haves list
- Evidence quote from the CV per matched skill
- Gap report: what is missing + criticality of each gap (blocker / trainable / irrelevant)
## ATS-optimization mode (for job seekers)
Given CV + target JD, output:
- Match score before/after
- Missing keywords ranked by importance — only ones the candidate genuinely has (never advise stuffing false skills)
- Bullet rewrites that surface real evidence using JD vocabulary
- Formatting warnings: tables/columns/graphics that break ATS parsers, non-standard section headers
## Output formats
- Match report (markdown): score gauge, matched/missing tables, evidence, verdict (Strong/Moderate/Weak)
- JSON schema for automation: {overall_score, must_have_coverage, matched_skills[], missing_skills[], seniority_fit, verdict, evidence[]}