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 →
{
"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
}
]
]
}
}
}
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Transform customer feedback into actionable insights automatically with AI analysis, professional PDF reports, personalized emails, and real-time team notifications. Overview Features Demo Prerequisit
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
Transform your webinar registrations from basic form submissions into a verified, personalized, and premium attendee experience.
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
This system meticulously guides each lead through a fully automated journey, from initial contact to a personalized follow-up and CRM integration.