This workflow corresponds to n8n.io template #3838 — we link there as the canonical source.
This workflow follows the Agent → Gmail Tool 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": "2ddwHvuidKc6lZia",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "AI Agent - Cv Resume - Automated Screening , Sorting , Rating and Tracker System",
"tags": [],
"nodes": [
{
"id": "92b75a8f-da03-4545-91ef-da29b88f1cef",
"name": "GDocs - Get Job Desc",
"type": "n8n-nodes-base.googleDocs",
"position": [
220,
120
],
"parameters": {
"operation": "get",
"documentURL": "https://docs.google.com/document/d/12dv1AXaotpJ3ST1nUI-QgCoi5SJjM52zeHmjhwZUtvs/edit?usp=sharing"
},
"credentials": {
"googleDocsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 2
},
{
"id": "213712d5-f7ef-4c49-bfa6-da02be76a213",
"name": "Google Drive - Resume CV File Created",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
-540,
120
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyHour"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "17g2HGxLieONy6EWfsPADvA9IXDp5nJ8p",
"cachedResultUrl": "https://drive.google.com/drive/folders/17g2HGxLieONy6EWfsPADvA9IXDp5nJ8p",
"cachedResultName": "Unfiltered"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "31075389-e8c5-431a-b5e1-807422dbcd5f",
"name": "Download Resume File From Gdrive",
"type": "n8n-nodes-base.googleDrive",
"position": [
-220,
120
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {
"fileName": "={{ $json.name }}"
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "367d4e61-a73c-4e47-bd73-690b2a63e0ae",
"name": "AI Agent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
720,
-400
],
"parameters": {
"text": "=You are expert backend principal engineer specialize in python. You will compare job description and candidate profile.\n\nThen you will response with decision [REJECTED/KIV/SHORTLISTED].\n, provide a reason and give a score rating\n{ decision, reason , score}\n\nAfter you identify a decision, used the tool in sequence.\n1. Use the relevant tool to move the candidate resume file accordingly to the right folder GoogleDrive:MoveFileToReject or GoogleDrive:MoveFileToShortlisted or GoogleDrive:MoveFileToKIV\n2. Use the Gsheet:UpdateTracker tool to update the tracker status.\n3. Use the Gmail:NotificationTool to infor the candidate name, role, decision and reason\n\n==[JOB-DESC]===\n{{ $json.content }}\n==[/JOB-DESC]===\n\n==[CANDIDATE-DESC]===\n{{ $('Extract from File').item.json.text }}\n \n==[/CANDIDATE-DESC]===\n\n",
"options": {
"systemMessage": "You are expert backend principal engineer specialize in python. You will compare job description and candidate profile.\n\nThen you will response with decision [REJECTED/KIV/SHORTLISTED].\nand provide a reason.\n{ decision, reason}\n\nAfter you identify a decision, used the tool \n1. Use the relevant tool to move the candidate resume file accordingly to the right folder GoogleDrive:MoveFileToReject or GoogleDrive:MoveFileToShortlisted or GoogleDrive:MoveFileToKIV\n2. Use the Gsheet-UpdateTracker tool to update the tracker status.\n"
},
"promptType": "define"
},
"typeVersion": 1.9
},
{
"id": "f2a16cf3-0404-4791-b7d4-64f1909e02c2",
"name": "Extract from File",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-40,
120
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "98af749e-d4ee-4f9b-bacc-f78a47525077",
"name": "Gmail:Notification",
"type": "n8n-nodes-base.gmailTool",
"position": [
1760,
120
],
"parameters": {
"sendTo": "user@example.com",
"message": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Message', ``, 'string') }}",
"options": {},
"subject": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Subject', ``, 'string') }}",
"descriptionType": "manual",
"toolDescription": "Gmail:NotificationTool - This tool will notify the candidate name, job role, and status of [shortlisted/kiv/rejected]"
},
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "343f7f0f-d505-448f-a95d-0fc7d3c14730",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
500,
-60
],
"parameters": {
"color": 4,
"width": 660,
"height": 400,
"content": "## 1. Move candidate cv to folder\n "
},
"typeVersion": 1
},
{
"id": "9941231e-7cfb-442e-9593-aed21fe86cf8",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1220,
-60
],
"parameters": {
"color": 4,
"width": 320,
"height": 400,
"content": "## 2. Update tracker\n "
},
"typeVersion": 1
},
{
"id": "bfd181ec-cf79-4320-9acd-f3e35fb499c5",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1640,
-60
],
"parameters": {
"color": 4,
"width": 320,
"height": 400,
"content": "## 3. Send email notification\n "
},
"typeVersion": 1
},
{
"id": "60fd65e7-6e8a-4092-9fce-2dd97e35b236",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-280,
-60
],
"parameters": {
"color": 2,
"width": 380,
"height": 400,
"content": "## Download and read candidate CV Resume\n "
},
"typeVersion": 1
},
{
"id": "d5d3cf16-d84d-4e7d-af75-f5341af20f59",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
100,
-60
],
"parameters": {
"color": 2,
"width": 380,
"height": 400,
"content": "## Read Job Description\n "
},
"typeVersion": 1
},
{
"id": "0ee07985-b24b-492b-a394-2f7097254911",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2040,
-80
],
"parameters": {
"color": 6,
"width": 620,
"height": 1040,
"content": "# AI-Agent : Automated CV Resume Screening Evaluate Rating System\n\n## What is this for?\n### Let AI agent intelligently analyze and rate your Candidate's cv resumes based on your job description. This will help ensure a fast and accurate screening process.\n\n### The Screening AI automatically organizes resumes into appropriate folders, updates statuses and scores in your tracking system, and sends timely notifications\u2014saving you valuable time and effort. \n\n\n### Let AI Agent and automation handle the heavy lifting while you focus on making the best hiring decisions!\n\n\n```\n```\n\n## Prerequisite\n\n### Please follow official n8n integration document on how setup your gdrive,gmail,gdoc,gsheet credentials. \n\n \n```\n```\n\n## How it works?\n\n### Each time you place a new pdf resume in the 'Unfiltered' folder , you will automatically get screening results in the tracker for the candidate. \n\nThe AI agent will help notify email and do CV sorting into appropriate folder.\n\n "
},
"typeVersion": 1
},
{
"id": "aa43af12-fae1-4a98-9cad-7859051baf48",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-620,
-60
],
"parameters": {
"color": 2,
"width": 260,
"height": 400,
"content": "## Add candidate CV Resume into folder\n "
},
"typeVersion": 1
},
{
"id": "7ad2b8a9-3720-4713-a8dd-af8f6745f95d",
"name": "Gdrive:Move-To-Reject-Folder",
"type": "n8n-nodes-base.googleDriveTool",
"position": [
580,
120
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Google Drive - Resume CV File Created').item.json.id }}"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"folderId": {
"__rl": true,
"mode": "list",
"value": "16BR7dhzd4-6i_kHYRStJd5UdqNWhpXKA",
"cachedResultUrl": "https://drive.google.com/drive/folders/16BR7dhzd4-6i_kHYRStJd5UdqNWhpXKA",
"cachedResultName": "REJECTED"
},
"operation": "move",
"descriptionType": "manual",
"toolDescription": "GoogleDrive:MoveFileToReject\nUse this tool to move rejected candidate profile to reject folder\n "
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "921a0561-9733-47fe-a6ee-191abf30ac37",
"name": "Gdrive:Move-To-KIV-Folder",
"type": "n8n-nodes-base.googleDriveTool",
"position": [
800,
120
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Google Drive - Resume CV File Created').item.json.id }}"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1KLfykacUhwtO0-wgYs6WsrcxbCHHKJ7o",
"cachedResultUrl": "https://drive.google.com/drive/folders/1KLfykacUhwtO0-wgYs6WsrcxbCHHKJ7o",
"cachedResultName": "KIV"
},
"operation": "move",
"descriptionType": "manual",
"toolDescription": "GoogleDrive:MoveFileToKIV\nUse this tool to move KIV candidate profile to KIV folder"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "0b32131c-3811-406f-a50d-875750781906",
"name": "Gdrive:Move-To-Shortlisted-Folder",
"type": "n8n-nodes-base.googleDriveTool",
"position": [
1000,
120
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $('Google Drive - Resume CV File Created').item.json.id }}"
},
"driveId": {
"__rl": true,
"mode": "list",
"value": "My Drive",
"cachedResultUrl": "https://drive.google.com/drive/my-drive",
"cachedResultName": "My Drive"
},
"folderId": {
"__rl": true,
"mode": "list",
"value": "1m8vrejmyPWpGsjJc6amnWfSXBRESlpfO",
"cachedResultUrl": "https://drive.google.com/drive/folders/1m8vrejmyPWpGsjJc6amnWfSXBRESlpfO",
"cachedResultName": "SHORTLISTED"
},
"operation": "move",
"descriptionType": "manual",
"toolDescription": "GoogleDrive:MoveFileToShortlisted\nUse this tool to move Shortlisted candidate profile to Shortlisted folder"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "98a656c7-bb17-4808-abf8-ef4e23716b60",
"name": "Gsheet: Update Candidate Tracker",
"type": "n8n-nodes-base.googleSheetsTool",
"position": [
1340,
120
],
"parameters": {
"columns": {
"value": {
"AI Score": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('AI_Score', ``, 'string') }}",
"AI Reason": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('AI_Reason', ``, 'string') }}",
"AI Verdict": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('AI_Verdict', ``, 'string') }}",
"Candidate Name": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Candidate_Name__using_to_match_', ``, 'string') }}"
},
"schema": [
{
"id": "Candidate Name",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "Candidate Name",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Current Role",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Current Role",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Role Scope",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Role Scope",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Score",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "AI Score",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Verdict",
"type": "string",
"display": true,
"required": false,
"displayName": "AI Verdict",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "AI Reason",
"type": "string",
"display": true,
"required": false,
"displayName": "AI Reason",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Referral",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Referral",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Due date",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Due date",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Notes",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Notes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Human verdict",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Human verdict",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"Candidate Name"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 843593464,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SwnbH_dnqPMho7SqX1LKAjFMc0YvLBGok4I1AdgrJjE/edit#gid=843593464",
"cachedResultName": "main"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1SwnbH_dnqPMho7SqX1LKAjFMc0YvLBGok4I1AdgrJjE",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1SwnbH_dnqPMho7SqX1LKAjFMc0YvLBGok4I1AdgrJjE/edit?usp=drivesdk",
"cachedResultName": "ResumeScreening- Candidate Tracker"
},
"descriptionType": "manual",
"toolDescription": "Gsheet:UpdateTracker\nThis tool help update relevant candidate status"
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "c9eb92a0-f3bc-4226-835e-602a2f808e4c",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1340,
-80
],
"parameters": {
"color": 6,
"width": 600,
"height": 1300,
"content": "\n## Folder & File Setup\n### 1. Create a google-drive folder like this\n \n[View directory example](https://drive.google.com/drive/folders/1Uh7VdJORE03YBJkCmvr1TXg_esbiNnTV?dmr=1&ec=wgc-drive-hero-goto)\n\n\n\n### 2. Create a job description like this\n \n[View file example](https://docs.google.com/document/d/12dv1AXaotpJ3ST1nUI-QgCoi5SJjM52zeHmjhwZUtvs/edit?usp=drive_link)\n\n\n\n\n### 3. Configure a tracker like this\n \n[View file example](https://docs.google.com/spreadsheets/d/1SwnbH_dnqPMho7SqX1LKAjFMc0YvLBGok4I1AdgrJjE/edit?gid=843593464#gid=843593464)\n\n"
},
"typeVersion": 1
},
{
"id": "e0d419d7-dcc1-40c5-afb1-5bda110e681c",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-560,
20
],
"parameters": {
"color": 7,
"width": 150,
"height": 80,
"content": "UNFILTERED FOLDER"
},
"typeVersion": 1
},
{
"id": "d9034b09-41f9-4f27-8d9d-e40f8603e1ea",
"name": "Groq - llama 4 AI MODEL",
"type": "@n8n/n8n-nodes-langchain.lmChatGroq",
"position": [
680,
-200
],
"parameters": {
"model": "meta-llama/llama-4-maverick-17b-128e-instruct",
"options": {}
},
"credentials": {
"groqApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "adba9994-2c2e-40f2-9a73-8a57b48b3bc4",
"connections": {
"AI Agent": {
"main": [
[]
]
},
"Extract from File": {
"main": [
[
{
"node": "GDocs - Get Job Desc",
"type": "main",
"index": 0
}
]
]
},
"Gmail:Notification": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"GDocs - Get Job Desc": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"Groq - llama 4 AI MODEL": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Gdrive:Move-To-KIV-Folder": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Gdrive:Move-To-Reject-Folder": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Download Resume File From Gdrive": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Gsheet: Update Candidate Tracker": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Gdrive:Move-To-Shortlisted-Folder": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"Google Drive - Resume CV File Created": {
"main": [
[
{
"node": "Download Resume File From Gdrive",
"type": "main",
"index": 0
}
]
]
}
}
}
Credentials you'll need
Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.
gmailOAuth2googleDocsOAuth2ApigoogleDriveOAuth2ApigoogleSheetsOAuth2ApigroqApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
You will find this workflow or template perfect if you are in the internal talent acquisition teams, recruitment agencies, HR professionals, and hiring managers seeking to bulk automate the initial screening of CVs and resumes.
Source: https://n8n.io/workflows/3838/ — 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.
AI Agent - Cv Resume - Automated Screening , Sorting , Rating and Tracker System. Uses googleDocs, googleDriveTrigger, googleDrive, agent. Event-driven trigger; 20 nodes.
> Automate Your Entire RFP Lifecycle
Transcript Evalu8r V2 is a robust browser-based transcript analysis tool powered by Deepgram’s speech-to-text API and built into an n8n workflow template. This release introduces full in-browser audio
Transcript Evalu8r is an AI-powered transcript analysis workflow that automates the processing, visualization, and evaluation of transcribed conversations. This n8n workflow template is designed to he
Watches a Google Drive folder for new (scanned) invoices. Each new file automatically triggers the workflow. Downloads and processes each invoice through OCR Space to extract the text. Extracts the co