To build AI resume screening bot, connect n8n to GPT-4o via the OpenAI API, ingest resumes through a webhook, extract candidate qualifications against your job requirements using prompt engineering, score matches, and trigger calendar integrations to auto-schedule qualified candidates. GPT-4o processes resume text in seconds, comparing skills, experience, and certifications to predefined criteria. n8n orchestrates the workflow: PDF parsing → qualification extraction → scoring logic → calendar API calls (Google Calendar, Calendly, or Outlook). This cuts recruiter triage from hours to minutes. The bot filters noise, surfaces top candidates ranked by fit, and eliminates manual scheduling. You can layer ATS integration and candidate database storage for audit trails and compliance. Deploy via webhook so resumes trigger the workflow instantly.
What you need
To build ai resume screening bot, you need a workflow engine to orchestrate the screening logic, an LLM to score candidates, integrations to your hiring stack, and a way to surface results to your calendar and ATS.
| Tool | Plan/Price | Role |
|---|---|---|
| n8n | Free tier (limited); Cloud Pro from $30/month | Workflow orchestration; triggers on resume upload, routes to GPT-4o, writes results to database and calendar |
| GPT-4o | $0.005/1K input tokens, $0.015/1K output tokens (via OpenAI API) | Extracts candidate qualifications, scores against job requirements, generates screening summary |
| Make | Free tier (1,000 ops/month); Pro from $10/month | Alternative to n8n; integrates resume source, LLM, and calendar/ATS in single workflow |
| Zapier | Free tier (100 tasks/month); Team from $19/month | Lower-code alternative; slower for high-volume screening but simpler setup for small teams |
| Calendar integration (Google Calendar / Outlook) | Native API (free) | Auto-schedules qualified candidates for interviews via n8n or Make webhook |
| ATS integration (Lever, Greenhouse, Workable) | Via vendor API (free tier or included) | Writes screening scores and notes back to candidate record; enables two-way sync |
| Candidate database (Airtable / PostgreSQL) | Airtable free tier; PostgreSQL free (self-hosted) | Stores extracted qualifications, scores, and screening audit trail for compliance |
How it works
- Resume ingestion via webhook. A candidate submits a resume through your careers page or email. n8n receives the submission via a webhook trigger, extracts the PDF or text, and stores the raw content in a candidate database (Airtable, PostgreSQL, or Supabase).
- Job requirements setup. You define the target role's must-haves (skills, years of experience, certifications, location) in n8n as a static JSON object or pull them from your ATS integration (Lever, Greenhouse, or Workable). This becomes the scoring rubric.
- Resume parsing and extraction. n8n sends the resume text to the OpenAI API with GPT-4o as the model. The prompt instructs GPT-4o to extract candidate name, email, phone, skills, years of experience, education, and prior titles in structured JSON format.
- Qualification scoring. A second GPT-4o call compares extracted qualifications against job requirements. The prompt returns a match score (0-100) and a brief reason for the score. n8n stores this score and reasoning back in the candidate database.
- Threshold routing and calendar sync. If the score exceeds your threshold (e.g., 75+), n8n triggers a calendar integration (Google Calendar or Outlook via Make or Zapier as a fallback) to auto-book a 30-minute screening call with your recruiter.
- Rejection or hold. Candidates below threshold receive an automated email via SendGrid or Mailgun. Those in the middle range are flagged for manual review in your candidate database dashboard.
How to build it
- Set up n8n and create a new workflow. Start with a Webhook node as your trigger. Configure it to accept POST requests with resume data (candidate name, email, resume text, job title). This becomes your entry point for resume submissions from your ATS, email, or a custom form. Name the webhook endpoint
/resume-intakefor clarity.
- Add a Text node to parse the resume. Use n8n's Text node to extract structured fields from the raw resume text: years of experience, technical skills, education, previous job titles, and certifications. This prepares the data for the next step. If resumes arrive as PDFs, add a PDF extraction step first (many ATS systems export as text; if not, use a third-party PDF-to-text service via HTTP request).
- Connect to GPT-4o via the OpenAI API node. Add an OpenAI node and configure it to use the GPT-4o model. Set the node to send the parsed resume and the job description (stored as a workflow variable) to GPT-4o. The model will score the candidate against your job requirements using a structured prompt. Set temperature to 0.3 for consistent, deterministic scoring.
- Create a scoring prompt using prompt engineering. In the OpenAI node's "Messages" field, use a system prompt that instructs GPT-4o to evaluate the candidate on specific criteria: years of experience, required skills match, education level, and domain expertise. Request JSON output with a numeric score (0-100) and a brief reason for each criterion. See the code block below for a production-ready prompt.
- Add a conditional router based on the score. Insert an IF node that checks the score returned by GPT-4o. Set the threshold (e.g., score ≥ 70) to route qualified candidates forward and unqualified candidates to a rejection email. This prevents calendar spam and keeps your hiring team focused.
- Connect qualified candidates to your calendar via Zapier or Make (optional fallback). If n8n's native calendar integrations are limited for your provider, use a Zapier webhook node or Make connector as a bridge. Most teams use Google Calendar or Outlook. Configure the calendar node to create a 30-minute screening call slot 2-3 days out, with the candidate's email in the invite. Include the candidate's name, score, and top matching skills in the event description.
- Store candidate data in a candidate database. Add an HTTP Request node to POST the candidate's name, email, score, and screening date to a Supabase table, Airtable base, or your ATS's API. This creates an audit trail and allows your team to track pipeline velocity. Tag records with "auto-screened" so you know which candidates came through the bot.
- Send automated emails to candidates. Add two Email nodes: one for qualified candidates (inviting them to a screening call with the calendar link) and one for unqualified candidates (thanking them and noting you'll keep their resume on file). Use n8n's template engine to personalize each message with the candidate's name and the role title.
- Test end-to-end with a webhook trigger. Use Postman or curl to send a test POST request to your webhook with sample resume data. Verify that the workflow executes, GPT-4o scores the candidate, and the calendar invite and email arrive. Monitor n8n's execution logs for errors.
Code block 1: n8n workflow JSON excerpt (OpenAI node configuration)
Code block 2: System prompt for GPT-4o (copy into the OpenAI node)
This workflow runs on n8n's free tier (up to 5 active workflows) or paid plans starting at $10/month. For high volume (500+ resumes/month), use Make or Zapier as alternatives, though n8n offers tighter ATS integration and lower per-execution costs. Calendar integration works with Google Calendar (native n8n support), Outlook (via Microsoft Graph API), or Calendly (via webhook). Test with 10 real resumes before going live to calibrate your score threshold.
What it costs to run
| Component | 100 resumes/mo | 1,000 resumes/mo | 10,000 resumes/mo |
|---|---|---|---|
| GPT-4o API | $2-5 | $20-50 | $200-500 |
| n8n (self-hosted or cloud) | $0-19 | $0-19 | $48-99 |
| Calendar API (Google/Microsoft) | $0 | $0 | $0 |
| Candidate database (Airtable/Postgres) | $0-12 | $0-12 | $0-120 |
| ATS webhook sync (if applicable) | $0 | $0 | $0 |
| Total (low estimate) | $2/mo | $20/mo | $248/mo |
| Total (high estimate) | $36/mo | $81/mo | $719/mo |
Assumptions: GPT-4o pricing assumes ~500 tokens per resume at $0.005 per 1K input tokens; n8n cloud tier ($19/mo) handles up to ~5K executions monthly, self-hosted is free but requires infrastructure; calendar and ATS integrations use native APIs (no additional cost); candidate database uses Airtable free tier (1,200 records) or paid ($12/mo) for scale. Actual costs vary by prompt length, token efficiency, and whether you self-host n8n. Check current OpenAI API pricing and n8n plan limits for your volume.
Where this breaks
Resume parsing fails on non-standard formats. PDFs with images, scanned documents, or unusual layouts cause GPT-4o to extract garbled or incomplete text, returning null fields for experience or skills. Pre-process all uploads through a dedicated PDF-to-text tool like Textract (AWS) or Doctr before sending to GPT-4o; reject or flag files that fail parsing with confidence below 85%.
Prompt drift causes inconsistent scoring across batches. If your job requirements prompt changes mid-week or a team member tweaks the scoring rubric in n8n without version control, candidates screened Monday score differently than Friday, breaking downstream calendar logic and creating false negatives. Lock your scoring prompt in a dedicated n8n variable or Make module, version it with timestamps, and log every prompt change; rerun borderline candidates (scores 60-75) whenever the prompt updates.
Calendar integration hits rate limits during bulk screening. If you screen 200 resumes in an hour and auto-schedule all qualified candidates into Google Calendar or Outlook via webhook, the calendar API throttles requests after ~100 writes, causing scheduled interviews to queue or fail silently. Batch calendar writes into groups of 10-15 per minute using n8n's delay node set to 4-6 seconds between requests; monitor webhook response codes and retry failed bookings with exponential backoff.
ATS sync creates duplicate candidate records. When your n8n workflow writes qualified candidates to both your candidate database and your ATS (Lever, Greenhouse, Workable), a network hiccup or duplicate webhook trigger can create two records for the same person, confusing hiring teams and breaking email follow-ups. Add a deduplication step in n8n using email + phone as a composite key before any write operation; query your candidate database first and update existing records instead of always inserting new ones.
Can GPT-4o really score resumes accurately, or will it miss red flags?
GPT-4o performs well on structured scoring (years of experience, specific skills, certifications) but struggles with context that requires domain expertise - for example, it may miss that a candidate's "5 years in DevOps" involved only container orchestration, not infrastructure-as-code. Pair GPT-4o scoring with a human review step for final-stage candidates and retrain your prompt monthly against hiring outcomes to catch systematic blind spots.
What happens if a candidate's resume is a scanned PDF or image?
n8n can pipe PDFs through OCR tools (Tesseract, AWS Textract, or Make's built-in PDF parser), but quality degrades with poor scans, handwriting, or non-standard layouts. For high-volume recruiting, require candidates to submit plain-text or .docx resumes in your application form rather than PDFs; if you must accept images, add a manual verification step for candidates who score above your threshold.
How do I prevent the bot from auto-scheduling unqualified candidates into my calendar?
Set a hard scoring threshold (e.g., only schedule if GPT-4o returns a score ≥ 75 and explicitly confirms all must-have skills) and require a second validation step - such as a webhook that checks the candidate's email domain against a blocklist or verifies they passed a pre-screening question. Log every scheduled meeting with the bot's reasoning so you can audit false positives and tighten your prompt.
Should I use Make, Zapier, or n8n for this, or does it matter?
n8n offers the most control over prompt engineering and webhook logic at the lowest cost (free tier for self-hosted), but requires server setup; Make and Zapier are faster to deploy and include calendar integrations out of the box, though they charge per task and offer less transparency into how data flows. Choose n8n if you're comfortable with infrastructure and need to iterate on scoring logic; choose Make or Zapier if you want to launch in a day and can absorb per-resume costs.
For a deeper technical reference, see n8n's documentation.