Built a CV screening & ranking automation for recruitment agencies, sharing the architecture and a few real gotchas in case it's useful to anyone building something similar.
The idea: recruiter submits a job spec (title, must-haves, nice-to-haves, experience level) + a batch of CVs through a form. The workflow scores every candidate against that spec using AI, ranks them, flags red flags, and outputs a sorted list to Google Sheets plus an optional dark-themed dashboard.
Stack: Tally (form intake) → n8n → Gemini 2.5 Flash (scoring) → Google Sheets → HTML dashboard.
Architecture: Tally webhook triggers → code node extracts job spec fields + splits CVs into individual items → each CV gets downloaded → routed by file type → text extracted → a code node builds a structured scoring prompt per candidate → Gemini scores it and returns strict JSON (skills match, experience score, education fit, red flags, reasoning) → results get ranked and written to Sheets → a second webhook serves a live ranked dashboard on demand.
A few things I hit building this, in case they save someone time:
Tally has no native trigger node in n8n, you have to use a plain Webhook node and connect it manually through Tally's own webhook integration settings, not obvious from the docs.
n8n's Extract From File node doesn't support DOCX at all, only PDF, CSV, HTML, JSON, RTF, XML, XLS/XLSX, etc. If your intake needs to handle Word docs, you'll need either a conversion step or a different extraction approach, I'm currently restricting uploads to PDF only until I build that out properly.
Careful with per-item vs "run once for all items" code node modes when processing a batch, mixing them up silently drops items rather than throwing a clear error, cost me a good chunk of debugging time tracing why only one candidate out of two was landing in the sheet.
Gemini's free tier (AI Studio) is a solid, genuinely free option for this kind of scoring task, no credit card needed, plenty of headroom for testing and even early production use.
Happy to answer questions if anyone's building something similar or hits the same walls.