๐Ÿ” 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 a role_id field 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: true to 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_id field 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 >= 75 is 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_id field 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