CV Screening Agent
A recruitment assistant built on LangGraph. It reads a CV, extracts a structured profile, scores it against a role, and drafts interview questions — but the point that mattered was making it auditable. Every score points back to the line in the CV it came from.
The problem
Automated CV screening has an obvious failure mode: a black box that quietly rejects people for reasons no one can inspect. I wanted the opposite — a tool that assists a recruiter and shows its work, so a human can check the reasoning instead of trusting a score.
The agent flow
flowchart TD
CV[CV upload] --> EX[Extract<br/>structured profile]
EX --> SC[Score against<br/>job requirements]
SC --> EV{Evidence<br/>found?}
EV -->|yes| Q[Generate interview<br/>questions]
EV -->|no| F[Flag for<br/>human review]
Q --> OUT[Report with<br/>citations]
F --> OUT
Each step is a node; the graph makes the reasoning inspectable.
Why multi-agent
A single prompt that does everything is impossible to debug — when it’s wrong, you can’t tell which step went wrong. Splitting it into extract → score → justify nodes gave each step one job and one place to inspect. The “flag for human review” branch was deliberate: the goal was to assist a recruiter, not silently reject people.
Stack
Python, LangGraph, an LLM for extraction and scoring, structured-output parsing.