Recruiting Screener Agent
Reads a résumé PDF against a job description and returns a fit score, skill gaps, and interview questions.
Stack: Next.js, React, TypeScript, Tailwind CSS, Groq, pdf-parse
The problem
Screening a résumé against a job description is a repetitive first pass that is easy to do inconsistently.
How it works
A résumé PDF and a job description go in. Text is extracted with pdf-parse. A Groq function-calling agent decides the order of five tools: parse résumé, parse job description, score fit, identify gaps, and generate interview questions. Every tool call is logged as an inspectable trace, and each step returns JSON.
Decisions
Decisions worth explaining
Function-calling loop instead of monolithic prompt
A function-calling loop instead of one giant prompt, so each step can be inspected and retried, and new steps are new tools. The tradeoff is a few extra seconds of latency.
Structured output pipeline
Structured output at every step so one step's result feeds the next with no parsing layer.
Status
What's not finished
It is a first-pass filter that should support a human decision, not make one. A production version needs documented scoring criteria, adverse-impact testing, audit history, authentication, and protection against prompt injection hidden in uploaded résumés.
Next project