Automate Resume Screening with n8n and a Free AI Model
A single job posting can pull in 200 resumes for a role that needs 5 interviews. We built an n8n workflow that reads each resume against the job description, scores it, and ranks the pile — then tested it against 30 resumes with a human-scored ranking to compare against.
- The model’s top-10 ranked candidates matched a human recruiter’s top-10 list on 8 of 10 picks.
- Scoring is based only on skills and experience stated in the resume text — no names, schools, or photos are sent to the model.
- The workflow ranks candidates; it does not reject anyone automatically.
- Cost: $0 in software using n8n Community Edition and a free local model.
How resume scoring works
Each resume is converted to text, stripped of name and contact details, and compared against the job description by the model, which returns a 1-10 score with reasons tied to specific requirements (“meets 4 of 5 required skills, missing X”). n8n sorts all candidates by score into a ranked sheet for a recruiter to review, starting from the top.
| Part | What we used | Job |
|---|---|---|
| Trigger | Email or form with resume attachment | Receives new applications |
| Strip PII | Code node | Removes name, email, phone before scoring |
| Model | Llama 3.2 3B via Ollama | Scores fit against the job description |
| Output | Google Sheets, sorted | Ranked list with score and reasons |
Build it in n8n
Receive resume
Form or email attachment triggers the workflow.
Trigger
Extract and strip PII
Pull text from PDF/DOCX, remove name and contact fields.
Privacy
Score against job description
Model returns a 1-10 score and specific reasons.
Model
Rank in a sheet
Sort by score; a recruiter reviews from the top down.
Output
Our system message:
We tested it on 30 resumes
For a mid-level developer role, we scored 30 sample resumes with the workflow and separately had the results ranked by a human reviewer using the same job description, then compared the two top-10 lists.
The two candidates the model ranked lower than the human did both had relevant experience described in unconventional job titles (“Product Engineer” doing what was functionally backend development), which the model’s keyword-anchored scoring underweighted. This is the known failure mode for this kind of scoring: it rewards resumes that use the same language as the job description, so candidates with equivalent experience described differently can rank lower than they should.
Reducing bias in the scoring
Stripping names, schools, and photos before scoring removes the most obvious channels for bias, but it doesn’t remove all of it — the language-matching issue above is a different kind of unfairness that disadvantages people who describe their experience differently rather than people from any particular group. Treat the ranked list as a starting point for who to look at first, not a hire/no-hire decision, and periodically pull a handful of lower-ranked resumes to sanity-check that the model isn’t systematically missing good candidates.
Frequently asked questions
Is it legal to use AI to screen resumes?
Rules vary by location and are changing; several jurisdictions require disclosure or audits for automated hiring tools. Check your local requirements before using this in a live hiring process.
Does the AI reject candidates automatically?
No. This workflow only ranks candidates for a human recruiter to review; nobody is automatically rejected.
How do I reduce bias in AI resume screening?
Strip identifying details before scoring, base scores only on stated skills and experience, and regularly audit the rankings against human judgment.
Can this handle any resume format?
PDF and DOCX text extraction works well for most resumes; heavily designed resumes with text embedded in images need OCR first.
Sources and further reading
- n8n Code node and AI Agent node documentation.
- Our guide: Automate Employee Onboarding.