
๐ AI-Powered Recruitment Pipeline
Category: HR / Talent | Difficulty: Advanced
Description: An AI-powered resume screening pipeline that processes every job application the moment it arrives. A webhook receives the application payload โ including resume text, LinkedIn URL, and job requirements โ validates required fields, and passes everything to GPT-4o for structured evaluation against the specific role. GPT-4o returns six fields: a score out of 100, a list of candidate strengths, identified gaps, a recommendation (advance/maybe/reject), a summary, and five tailored interview questions generated for that exact candidate. Applicants scoring 75 or above get a personalized HTML interview invitation email highlighting what impressed the screener, alongside a Slack notification to the hiring manager with the full AI analysis and ready-to-use interview questions. Applicants below the threshold receive a professional rejection email. Every candidate โ advanced or rejected โ is logged to an Airtable ATS with their score, recommendation, status, and timestamps.
The Problem
Hiring teams at growing companies face the same impossible math: the more you grow, the more applications you receive, and the more time screening consumes โ time that should go to interviewing, selling the role to top candidates, and closing offers. Manual resume screening is slow, inconsistent, and unconsciously biased toward patterns the reviewer already recognizes. A strong candidate in an unfamiliar industry gets rejected on a gut feel. A weak candidate with a familiar company name gets advanced. And every rejected applicant who never gets a response becomes a permanent negative impression of the company.
Key pain points:
- Three open roles running simultaneously, receiving a combined 180+ applications in the first two weeks โ the agency owner and operations manager were splitting screening duties on top of their full-time workloads
- No consistent evaluation criteria across reviewers โ the owner advanced candidates the ops manager would have rejected, and vice versa, with no documented standard to resolve disagreements
- Interview questions written fresh for each candidate the morning of the interview, often generic and role-agnostic
- Rejection emails not sent to 60โ70% of applicants โ no bandwidth to write individual responses, damaging the agency’s employer brand in a small market where candidates talk
- ATS was a shared Google Sheet updated irregularly โ candidate status was perpetually unclear, with three people editing the same file
The Solution
A webhook-triggered recruitment screening pipeline built on n8n. Every application submission fires a POST to the webhook endpoint. A JavaScript validation node enforces required fields (name and email are mandatory โ the workflow throws a hard error rather than processing an incomplete application) and normalizes the payload with defaults for optional fields. GPT-4o receives the role title, job requirements, candidate name, LinkedIn URL, and resume text at temperature 0.2 โ near-deterministic for consistent, fair evaluation across all candidates for the same role. The structured JSON response is parsed and validated by a second JavaScript node, which merges the AI output with the original application data and sets should_advance: true for scores at or above 75.
The IF node routes: advancing candidates trigger two simultaneous actions โ a personalized HTML email with a Calendly scheduling link and a bullet list of their specific strengths pulled from the GPT-4o output, plus a Slack message to #recruiting with the candidate name, score, AI summary, and all five generated interview questions formatted and numbered. Rejected candidates receive a dignified, personal-feeling HTML rejection email that thanks them by name for the specific role they applied for. Both paths write to Airtable โ a full candidate record with score, recommendation, summary, status, source, and timestamps.
Who it was built for: A digital marketing agency in Davao City scaling from 12 to 25 staff, simultaneously hiring a Senior Social Media Strategist, Paid Ads Specialist, and Copywriter โ three open roles with different requirements, all funneling into the same inbox, with no dedicated HR function and the owner personally handling screening between client work.
Results & Impact
| Metric | Before | After |
|---|---|---|
| Time to screen one application | 8โ12 minutes โ open resume, read, score mentally, update Sheet, draft response if advancing | Under 30 seconds, fully automated |
| Total screening time across 3 roles | ~28 hours over 2 weeks (owner + ops manager splitting duties) | Under 2 hours total โ review Airtable, confirm advances, done |
| Applications received (first 2 weeks) | 186 across 3 roles | 186 โ all processed automatically within seconds of submission |
| Candidates advanced to interview | 22 identified after 2 weeks of manual screening | 19 flagged by GPT-4o (score โฅ75) โ 3 fewer but with stronger reasoning and role-specific interview questions ready |
| Screening consistency | Owner and ops manager disagreed on 30% of borderline candidates | 100% consistent โ same ICP criteria applied identically to every application per role |
| Rejection email send rate | 31% โ only candidates the team had energy to write to individually | 100% โ every rejected candidate received a personalized response within seconds |
| Interview questions prepared | Written morning-of, took 20โ30 minutes per candidate | Five tailored questions generated per candidate at screening time โ hiring manager reviews before the call |
| ATS accuracy | Google Sheet updated by 3 people, perpetually out of sync | Airtable updated in real time on every application โ single source of truth |
| Time-to-first-response to candidate | 2.5 days average (manual queue) | Under 60 seconds โ invite or rejection fires the moment the application arrives |
| Employer brand incidents | 2 candidates publicly posted about being ghosted on a local Facebook jobs group | Zero since deployment โ 100% response rate eliminates ghosting entirely |
| Cost-per-hire reduction | ~โฑ18,000 per hire in owner time (at blended hourly rate) | Estimated โฑ4,500 per hire โ 75% reduction in time cost |
Industry context: The average time-to-hire in Philippine SMBs is 32 days, with manual screening accounting for 40โ60% of that timeline. A 100% response rate also has measurable employer brand value in the local market โ Jobstreet candidates frequently reference response experience in reviews.
Technical Details
Tech Stack: n8n ยท Webhook ยท OpenAI GPT-4o ยท Airtable ยท Gmail ยท Slack ยท JavaScript
How each tool is used:
- n8n โ Webhook receiver, validation, AI screening orchestration, conditional routing, and ATS logging
- Webhook โ Generic endpoint accepting application POSTs from the agency’s Webflow careers form and a custom Jobstreet integration that forwards applications via Zapier
- JavaScript (validate) โ Hard throws on missing name or email, generates a timestamped application ID (
APP-YYYYMMDD-XXXX), normalizes optional fields, extracts role-specific job requirements from the payload โ three different requirement sets for three concurrent roles, selected by arole_idfield in the submission - OpenAI GPT-4o โ Six-field structured JSON at temperature 0.2:
score(1โ100),strengths(array),gaps(array),recommendation(advance/maybe/reject),summary(string),interview_questions(array of 5, tailored to the candidate’s specific resume and the role requirements) - JavaScript (parse screening) โ try/catch JSON parse with hard error on failure, merges AI output onto original application object, sets
should_advance: score >= 75 - IF node โ Routes
should_advance: trueto the interview path; false to rejection - Gmail (interview invite) โ Personalized HTML email with candidate name, role title, Calendly scheduling link, and a dynamically generated bullet list of their specific strengths โ opening line references the exact role and something specific from their application, not a generic “we were impressed”
- Slack โ Posts to #recruiting with candidate name, email, role, AI score out of 100, one-sentence summary, and all five interview questions numbered โ hiring manager has everything needed before the call without opening Airtable
- Gmail (rejection) โ Professional HTML rejection email addressing the candidate by name, naming the specific role, acknowledging the application, and wishing them well โ sent within seconds regardless of inbox volume
- Airtable โ Creates a full candidate record with 12 fields: name, email, role applied, score, recommendation, summary, status (Interview Scheduled or Rejected), source (Webflow or Jobstreet), application timestamp, and screening timestamp โ serves as the live ATS replacing the shared Google Sheet
- Respond to Webhook โ Returns
{status, application_id, score, recommendation, advanced}to the calling system
Workflow architecture (10 nodes, linear โ conditional โ converge โ log): Webhook โ JS Validate โ GPT-4o Screen โ JS Parse โ IF Score โฅ75 โ [True: Gmail Invite + Slack Notify in parallel] / [False: Gmail Reject] โ Airtable ATS โ Respond with Result
Complexity highlights:
- Hard validation before AI โ the workflow throws a named error on missing required fields rather than passing an incomplete application to GPT-4o and wasting an API call on unscreenable data
- Multi-role routing from a single workflow โ the
role_idfield in the payload selects which job requirements string is injected into the GPT-4o prompt, meaning one workflow handles all three concurrent roles with different evaluation criteria - Six-field structured output โ GPT-4o returns strengths, gaps, score, recommendation, summary, and interview questions in a single call. The interview questions are the detail that made the biggest difference operationally โ the hiring manager reported spending 25 minutes per candidate prepping questions before, and now spends 3 minutes reviewing the pre-generated ones
- Score threshold as a single parameter โ
score >= 75is set in one place, adjusted to 70 for the Copywriter role in week 2 after reviewing the applicant pool and finding the creative portfolio requirements were penalizing otherwise strong candidates - Strengths-driven invite email โ the interview invitation dynamically renders the candidate’s specific strengths as an HTML bullet list โ two candidates specifically mentioned the invitation felt personal and thoughtful when asked about their application experience
- Parallel advance actions โ Gmail invite and Slack notification fire simultaneously, so the hiring manager sees the alert at the same moment the candidate gets the email
- Both paths converge on Airtable โ every applicant logged regardless of outcome, giving the owner a complete view of the full funnel for the first time
Note on scope: The Calendly link in the invite email is a static URL โ there’s no live Calendly API node checking availability. A v2 addition would be a Calendly API call that creates a one-time scheduling link specific to each candidate, preventing double-bookings when multiple interviews are requested simultaneously.
Context & Social Proof
- Build timeline: 3 days โ Day 1: Airtable schema design and GPT-4o prompt engineering tested against 20 real resumes across all 3 roles. Day 2: full workflow build and integration testing. Day 3: Jobstreet/Zapier forwarding setup, threshold calibration, and live deployment with real applications
- Your role: Solo build โ multi-role payload routing, GPT-4o six-field screening prompt tuned separately for creative vs. technical roles, parse and merge logic, dual-path routing, strengths-driven email personalization, Airtable schema, and end-to-end testing with actual submitted resumes
- Deployment: n8n cloud; Webflow careers form webhook updated in one field, Zapier forwards Jobstreet applications to the same endpoint โ zero changes to the application experience for candidates
- Client quote: “I used to dread opening my email on Monday mornings during a hiring sprint. Now I check Airtable over coffee, see exactly who’s worth calling, and I already have the interview questions. We hired all three roles in 19 days โ we’ve never moved that fast.” โ Agency Owner, digital marketing, Davao City
- Reusability: The job title, requirements string, score threshold, Calendly link, and Airtable base are the only variables per deployment. The same workflow ran across three simultaneously active roles by adding a
role_idfield to the form payload and mapping it to three different requirements strings in the validation node
Use Cases & Ideal Buyer
Best fit for:
- Startups and agencies hiring for multiple roles simultaneously without a dedicated HR or recruiting function
- Recruitment agencies managing high-volume applications across multiple client roles who need consistent, defensible scoring
- HR teams at scale-ups where every open role gets 100+ applications and screening is consuming more time than interviewing
- Companies that have damaged employer brand by ghosting applicants โ particularly in smaller local markets where reputation travels fast
Can also be adapted for:
- Freelance and contractor vetting โ score project proposals against scope requirements the same way resumes are screened against job requirements
- University admissions screening โ score applications against program criteria with structured feedback per applicant
- Grant or funding application review โ evaluate applicant qualifications against grant criteria with consistent scoring and documented reasoning
- Internal transfer or promotion screening โ apply the same structured evaluation to internal candidates with a separate (more generous) threshold and different requirement set
