Overview
Recruiters drown in resumes. This n8n workflow watches a jobs@ inbox, parses each PDF with GPT-4o vision, ranks the candidate against a job description using a structured rubric, and pushes to your ATS (Ashby, Greenhouse) with a match score and a two-line summary.
How it works
- Gmail trigger on new email with attachment.
- GPT-4o vision extracts structured resume data (roles, tenure, skills, education).
- Second call ranks against the JD rubric (skills match, seniority fit, red flags).
- Ashby/Greenhouse API creates a candidate with tags and a summary note.
Benefits
- Recruiters open pre-ranked candidates.
- Zero data entry per resume.
- Consistent screening rubric removes reviewer variance.
Use cases
- Startups without a dedicated sourcing team.
- High-volume roles (support, sales, entry-level eng).
- Agencies managing multiple client roles.
Step-by-step guide
Step 1: Set up the jobs inbox
One inbox per role, or use +role addressing on a shared jobs@. Filter to attachments only.
Step 2: Vision extraction
GPT-4o with a strict schema: {name, email, roles: [{title, company, start, end, bullets}], skills, education}.
Step 3: Ranking rubric
JD-specific: must-have skills, nice-to-have, seniority (junior/mid/senior/staff), red flags (job hops without justification, sensitive gaps).
Step 4: Match score + notes
'Return {score:0-10, must_haves_met, nice_haves_met, concerns[], one_line_summary}'.
Step 5: ATS push
Create candidate with the extracted fields, attach original PDF, add score as a tag or custom field.
Example
Match: 8/10. Summary: 'Senior FE eng, 6y React, ex-Stripe, strong design collab experience.' Concerns: 'Two < 1yr tenures in last 3 years.'