AutomationFlowsAI & RAG › Ai-powered Recruitment System for Resume Screening & Automated Outreach with…

Ai-powered Recruitment System for Resume Screening & Automated Outreach with…

Original n8n title: Ai-powered Recruitment System for Resume Screening & Automated Outreach with Gpt-4

ByMarth - Business Automation @marth on n8n.io

Imagine your recruitment process transformed into a sleek, efficient, AI-powered assembly line for talent. That's exactly what this system creates. It automates the heavy lifting, allowing your human recruiters to focus on strategic decisions and personal connections. Candidate…

Webhook trigger★★★★★ complexityAI-powered30 nodesGoogle SheetsOpenAIGmailGoogle CalendarSlack
AI & RAG Trigger: Webhook Nodes: 30 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #6609 — we link there as the canonical source.

This workflow follows the Gmail → Google Calendar recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "55SEzyQAwM3i4mNE",
  "name": "Automated Intelligent Recruitment & Candidate Engagement System with GPT-4",
  "tags": [],
  "nodes": [
    {
      "id": "414d77db-7373-404e-97f9-fbfd0a7cfcc7",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        0,
        0
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "4ae0ec4b-013a-4006-8dc0-753da1ac2d18",
      "name": "Resume Parser",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        208,
        0
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "133ce33c-7eb1-4184-9830-6a852110d444",
      "name": "Extract Key Candidate Data",
      "type": "n8n-nodes-base.code",
      "position": [
        416,
        0
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "27ae358a-c18e-48ea-8ddf-3100ef7a26bb",
      "name": "Initial Candidate Storage",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Value:\nName: ={{ $json.parsed_candidate_name }}\nEmail: ={{ $json.parsed_email }}\nPhone: ={{ $json.parsed_phone }}\nEducation: ={{ $json.parsed_education }}\nExperience: ={{ $json.parsed_experience }}\nSkills: ={{ $json.parsed_skills }}\nRaw Resume Text: ={{ $json.raw_resume_text }}\nStatus: ={{ $json.status }}\nMatch Score: 0 (Initial)\nCultural Fit Notes:       (Initial)\nInterview Questions:       (Initial)",
      "position": [
        624,
        0
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "23fb207b-8375-4829-becf-110896b9d248",
      "name": "Job Description Input",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "JobID, \nTitle, \nDescription, \nRequired Skills, \nExperience Level",
      "position": [
        832,
        0
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "2059dd49-31e2-4d25-b925-8120816c5561",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        -64
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f6f6cec5-0847-4dc1-a898-57b6a506aab2",
      "name": "Retrieve Candidate for Screening",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Column: Status, \nOperator: is equal to, \nValue: Received - Parsing Complete",
      "position": [
        0,
        368
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "88924ea0-41d4-4612-ba31-a03a60837caa",
      "name": "Retrieve Job Description",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Key Column: JobID (or Title)\n\nKey Value: ={{ $node[\"Google Sheets (Job Description Input)\"].json.data[0].JobID }}",
      "position": [
        208,
        368
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "f4c2f060-0354-479f-a5ea-df2fe9911c99",
      "name": "Prepare Data for AI Screening",
      "type": "n8n-nodes-base.code",
      "position": [
        416,
        368
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "f0bcf28e-1152-427b-a96f-5d423fd5d264",
      "name": "Resume Matcher & Scorer",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        624,
        368
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "b8ae58a5-b3a0-446b-afad-3d88e3705711",
      "name": "Cultural Fit & Red Flag Identifier",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        976,
        368
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "9eca657b-957d-49ee-8355-0134e07596aa",
      "name": "Interview Question Generator",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        1328,
        368
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "e32ccf5d-e016-4b6b-91b6-148b002b40f3",
      "name": "Consolidate AI Screening Results",
      "type": "n8n-nodes-base.code",
      "position": [
        1680,
        368
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "875398ed-388a-49fd-908b-b3e6672cba4d",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        304
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1410de90-ce0e-418c-9ead-64430994dac7",
      "name": "Update Candidate Status & Scores",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Key Column: Email (or ID if you passed it through)\n\nKey Value: ={{ $json.candidate_email }}\nValues: Map the AI-generated fields:\n\nMatch Score: ={{ $json.ai_match_score }}\nCultural Fit Notes: ={{ $json.ai_cultural_fit_notes }}\nRed Flags: ={{ $json.ai_red_flags }}\nInterview Questions: ={{ $json.ai_interview_questions }}\nStatus: ={{ $json.status }}",
      "position": [
        1888,
        368
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "33208940-ab48-461e-b64c-5e7164ea598e",
      "name": "Conditional Branching - High Score",
      "type": "n8n-nodes-base.if",
      "position": [
        0,
        720
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "cace922d-4d22-4ee7-9046-7a263f08fb55",
      "name": "Personalized Outreach Email Generator",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        224,
        720
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "ba67554f-707d-409c-88ee-ebaad42fa151",
      "name": "Send Personalized Email",
      "type": "n8n-nodes-base.gmail",
      "position": [
        576,
        720
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "b8f1ac88-39f7-4c3a-9f12-3cd65f9475ad",
      "name": "Create Placeholder Interview Event",
      "type": "n8n-nodes-base.googleCalendar",
      "position": [
        784,
        720
      ],
      "parameters": {},
      "typeVersion": 1.3
    },
    {
      "id": "28fdc91f-1c81-4dd8-aa11-ee07a4035b0d",
      "name": "Update Candidate Status - Invited for Screening",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Key Column: Email\nKey Value: ={{ $json.candidate_email }}\n\nValues:\nStatus: Invited for Screening\nLast Contacted: ={{ new Date().toISOString() }}",
      "position": [
        992,
        720
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "6c01b47c-c9e6-4d8d-a2e3-fd2ff807eaa6",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        656
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "34b69585-c028-4387-a2c7-eac2ecab3939",
      "name": "For Candidate Response/Scheduling",
      "type": "n8n-nodes-base.wait",
      "position": [
        -16,
        1088
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "90620ece-6854-4b6d-8655-4db40cdd6a9b",
      "name": "Retrieve Candidate Status for Follow-up",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Key Column: Email\nKey Value: ={{ $json.candidate_email }}",
      "position": [
        192,
        1088
      ],
      "parameters": {},
      "notesInFlow": true,
      "typeVersion": 4.6
    },
    {
      "id": "134b52cc-1871-4660-bb2a-498b62915963",
      "name": "Conditional Branching - No Reply/No Schedule",
      "type": "n8n-nodes-base.if",
      "position": [
        368,
        1088
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "1d2241e5-db21-49f1-acea-ae462ca6788f",
      "name": "Gentle Follow-up Generator",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        608,
        1088
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "15864553-892a-4fc0-b580-0c36a81834d8",
      "name": "Send Gentle Follow-up",
      "type": "n8n-nodes-base.gmail",
      "position": [
        960,
        1088
      ],
      "parameters": {},
      "typeVersion": 2.1
    },
    {
      "id": "20c5131d-b02a-429f-89ca-90ba8f65dcc4",
      "name": "Update Candidate Status - Follow-up Sent",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "Values:\n\nStatus: Follow-up Sent - No Reply\nLast Contacted: ={{ new Date().toISOString() }}",
      "position": [
        1168,
        1088
      ],
      "parameters": {},
      "typeVersion": 4.6
    },
    {
      "id": "ccb31204-3f9b-44be-a336-74400a0cfcab",
      "name": "Notify Recruiter for Qualified Candidates",
      "type": "n8n-nodes-base.slack",
      "position": [
        1376,
        1088
      ],
      "parameters": {},
      "typeVersion": 2.3
    },
    {
      "id": "42e6ebcf-6c37-4728-bc45-d71f90f3ad7a",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -64,
        1024
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "6867cc85-b6f8-43ec-8a45-23781abfc796",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -880,
        -64
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "346f451c-bb94-4250-a6f7-4abfc6ed3a8a",
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Resume Parser",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resume Parser": {
      "main": [
        [
          {
            "node": "Extract Key Candidate Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Job Description Input": {
      "main": [
        [
          {
            "node": "Retrieve Candidate for Screening",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Gentle Follow-up": {
      "main": [
        [
          {
            "node": "Update Candidate Status - Follow-up Sent",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Resume Matcher & Scorer": {
      "main": [
        [
          {
            "node": "Cultural Fit & Red Flag Identifier",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send Personalized Email": {
      "main": [
        [
          {
            "node": "Create Placeholder Interview Event",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Job Description": {
      "main": [
        [
          {
            "node": "Prepare Data for AI Screening",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Initial Candidate Storage": {
      "main": [
        [
          {
            "node": "Job Description Input",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Key Candidate Data": {
      "main": [
        [
          {
            "node": "Initial Candidate Storage",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gentle Follow-up Generator": {
      "main": [
        [
          {
            "node": "Send Gentle Follow-up",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Interview Question Generator": {
      "main": [
        [
          {
            "node": "Consolidate AI Screening Results",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Prepare Data for AI Screening": {
      "main": [
        [
          {
            "node": "Resume Matcher & Scorer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Consolidate AI Screening Results": {
      "main": [
        [
          {
            "node": "Update Candidate Status & Scores",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Candidate for Screening": {
      "main": [
        [
          {
            "node": "Retrieve Job Description",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Candidate Status & Scores": {
      "main": [
        [
          {
            "node": "Conditional Branching - High Score",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "For Candidate Response/Scheduling": {
      "main": [
        [
          {
            "node": "Retrieve Candidate Status for Follow-up",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Conditional Branching - High Score": {
      "main": [
        [
          {
            "node": "Personalized Outreach Email Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create Placeholder Interview Event": {
      "main": [
        [
          {
            "node": "Update Candidate Status - Invited for Screening",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Cultural Fit & Red Flag Identifier": {
      "main": [
        [
          {
            "node": "Interview Question Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Personalized Outreach Email Generator": {
      "main": [
        [
          {
            "node": "Send Personalized Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Retrieve Candidate Status for Follow-up": {
      "main": [
        [
          {
            "node": "Conditional Branching - No Reply/No Schedule",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Candidate Status - Follow-up Sent": {
      "main": [
        [
          {
            "node": "Notify Recruiter for Qualified Candidates",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Conditional Branching - No Reply/No Schedule": {
      "main": [
        [
          {
            "node": "Gentle Follow-up Generator",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Candidate Status - Invited for Screening": {
      "main": [
        [
          {
            "node": "For Candidate Response/Scheduling",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Imagine your recruitment process transformed into a sleek, efficient, AI-powered assembly line for talent. That's exactly what this system creates. It automates the heavy lifting, allowing your human recruiters to focus on strategic decisions and personal connections. Candidate…

Source: https://n8n.io/workflows/6609/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

Transform customer feedback into actionable insights automatically with AI analysis, professional PDF reports, personalized emails, and real-time team notifications. Overview Features Demo Prerequisit

OpenAI, Gmail, Google Sheets +2
AI & RAG

This workflow automates the end-to-end process of scheduling technical or behavioral interviews. It captures interview data via Webhook, creates a Google Calendar event with an integrated Google Meet

Google Calendar, OpenAI, Gmail +2
AI & RAG

Transform your webinar registrations from basic form submissions into a verified, personalized, and premium attendee experience.

N8N Nodes Verifiemail, Slack, Stop And Error +4
AI & RAG

This workflow automates the initial screening process for new job applications, freeing up your recruitment team to focus on qualified candidates. It receives applications from a webhook, uses OpenAI

HTTP Request, OpenAI, Google Sheets +2
AI & RAG

This system meticulously guides each lead through a fully automated journey, from initial contact to a personalized follow-up and CRM integration.

OpenAI, @Elevenlabs/N8N Nodes Elevenlabs, Google Drive +4