→ Takes two inputs: a job description (text) and
a candidate resume (PDF)
→ Extracts structured data from the resume using
Claude API — skills, experience, education,
and key achievements as typed fields
→ Scores the candidate against the job description
on a 0–100 match scale with field-level reasoning
→ Returns a Pydantic-validated output object —
candidate name, match score, extracted skills,
experience summary, and recommended action
→ Auto-correcting feedback loop: if Claude returns
malformed JSON, the validation error is injected
back automatically for self-correction
→ Zero frontend — pure Python CLI and API,
designed to be embedded into any existing
hiring workflow or ATS backend