The problem
HR was drowning in manual steps every time an applicant emailed in: download the resume, file it, copy candidate details into a spreadsheet, ping the team on Slack, then later remember to email assessments, find a free interview slot, send confirmations, and keep the tracker in sync the whole way.
Each step was simple — and each step was a place errors crept in. Resumes got lost in inboxes. Candidates were double-booked. Status updates lagged behind reality. The fix wasn't a new tool; it was wiring the existing tools together so the workflow ran itself.
Architecture
Four logical stages, 25 nodes, 18 connections. Each stage is independent and idempotent.
Resume Intake
A Gmail trigger watches a dedicated applicant inbox. New messages route the resume attachment to a Drive folder, a Set node enriches the candidate record (name, email, role, applied-on), the row is appended to a Google Sheets tracker, and HR is notified in Slack with a link to the new entry.
Status Routing
When HR updates a candidate's status in the tracker, a Sheets trigger fires a Switch node. Each branch handles a different decision: send an assessment email, kick off interview scheduling, or send a polite decline — all idempotent so re-saving a row never duplicates emails.
Interview Scheduling
For candidates moving forward, the workflow checks Google Calendar availability against the requested slot. If a conflict exists it flags the row; if the slot is free it creates the meeting, then a Switch routes Initial vs Final interview into the right confirmation track.
Confirmation & Sync
The matching confirmation email goes out (Initial or Final), the tracker is stamped with meeting status + time, and the team is notified in Slack so panelists can prep — closing the loop without a single manual hand-off.
Outcome
- Resume triage time dropped from hours to seconds — every applicant lands in the tracker the moment their email arrives
- Zero double-bookings: Calendar conflicts are caught before a meeting is created
- HR team gets Slack pings at every stage, eliminating status-check follow-ups
- Re-runnable safely — Switch + If guards make the workflow idempotent on retry
Want to ship something like this?
I build production n8n workflows for ops, sales, and customer support teams.