This workflow corresponds to n8n.io template #8529 — we link there as the canonical source.
This workflow follows the Agent → Google Drive 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": "uoTYOXDUavQ2tQew",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Drive to clickup resume automation",
"tags": [],
"nodes": [
{
"id": "64d82c9f-f5aa-478d-9c0c-f190a30832d0",
"name": "Save Candidate to Database",
"type": "n8n-nodes-base.googleSheets",
"position": [
1920,
1408
],
"parameters": {
"options": {},
"fieldsUi": {
"values": [
{
"column": "Email",
"fieldValue": "={{ $json.email }}"
},
{
"column": "Phone ",
"fieldValue": "={{ $json.phone }}"
},
{
"column": "Years of experience",
"fieldValue": "={{ $json.experience_years }}"
},
{
"column": "skills",
"fieldValue": "={{ $json.skills }}"
},
{
"column": "curent role",
"fieldValue": "={{ $json.current_role }}"
},
{
"column": "education",
"fieldValue": "={{ $json.education }}"
}
]
},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1JlXxy90s0we_IqErHyvomrJSijb8pd4H91hOUCH6xCA/edit?usp=drivesdk",
"cachedResultName": "Resume store"
},
"valueToMatchOn": "={{ $json.name }}",
"columnToMatchOn": "Name"
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "08397c1b-0ea9-4327-a520-7d52128f8ec7",
"name": "AI Resume Analyzer",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1296,
1408
],
"parameters": {
"text": "=Extract the following fields from the resume text below and return them as JSON only:\n\n{\n \"name\": \"\",\n \"email\": \"\",\n \"phone\": \"\",\n \"experience_years\": \"\",\n \"skills\": [],\n \"current_role\": \"\",\n \"education\": \"\"\n}\n\nResume text:\n{{$json[\"text\"]}}\n\n",
"options": {},
"promptType": "define"
},
"typeVersion": 2.1
},
{
"id": "586d9851-1966-4f38-bf36-0f19398ceda3",
"name": "AI Language Model",
"type": "@n8n/n8n-nodes-langchain.lmChatAzureOpenAi",
"position": [
1392,
1632
],
"parameters": {
"model": "gpt-4o-mini",
"options": {}
},
"credentials": {
"azureOpenAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "9f08c682-2991-40a4-9951-b39e34d1bb63",
"name": "Download Resume File",
"type": "n8n-nodes-base.googleDrive",
"position": [
848,
1408
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.id }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "cee0376c-3385-4125-8e1f-57caeeecf78a",
"name": "Convert PDF to Text",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1072,
1408
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "40a097eb-dd40-4f56-8962-1c024849fb00",
"name": "Clean AI Response",
"type": "n8n-nodes-base.code",
"position": [
1696,
1408
],
"parameters": {
"jsCode": "return items.map(item => {\n let text = item.json.output;\n\n // Remove code fences like ```json ... ```\n text = text.replace(/```json|```/g, \"\").trim();\n\n let parsed = {};\n try {\n parsed = JSON.parse(text);\n } catch (err) {\n parsed = { error: \"Failed to parse JSON\", raw: text };\n }\n\n return { json: parsed };\n});"
},
"typeVersion": 2
},
{
"id": "90f8d384-9923-45bb-bef4-a00b04245e2b",
"name": "Watch for New Resumes",
"type": "n8n-nodes-base.googleDriveTrigger",
"position": [
624,
1408
],
"parameters": {
"event": "fileCreated",
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "specificFolder",
"folderToWatch": {
"__rl": true,
"mode": "list",
"value": "1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
"cachedResultUrl": "https://drive.google.com/drive/folders/1MIvpHU_ZqG76Vov2-D5WlS5dD3UhOMSz",
"cachedResultName": "Resume_store"
}
},
"credentials": {
"googleDriveOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "55ecd2df-08d0-4130-beab-1c90676a2b68",
"name": "Create Hiring Task",
"type": "n8n-nodes-base.clickUp",
"position": [
2144,
1408
],
"parameters": {
"list": "901610812551",
"name": "={{ $json.name }} Hiring process",
"team": "9016683627",
"space": "90162844741",
"folder": "90164394824",
"additionalFields": {
"assignees": [
95074494
]
}
},
"credentials": {
"clickUpApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "745375f6-d00c-45cf-bbd6-add9d82a942d",
"name": "Sticky Note - Trigger",
"type": "n8n-nodes-base.stickyNote",
"position": [
160,
1248
],
"parameters": {
"width": 400,
"height": 332,
"content": "## \ud83d\ude80 WORKFLOW START\n**Watch for New Resumes**\n\n\ud83d\udd0d **What it does:**\n- Monitors Google Drive folder every minute\n- Automatically detects new resume uploads\n- Triggers the entire workflow when new files arrive\n\n\u2699\ufe0f **Settings:**\n- Checks folder: Resume_store\n- Frequency: Every 1 minute\n- Event: New file created\n\n\ud83d\udca1 **User Tip:** Just upload a resume to the watched folder and the automation starts!"
},
"typeVersion": 1
},
{
"id": "1b150921-0403-48f5-b8a9-2f17a6223fe7",
"name": "Sticky Note - Download",
"type": "n8n-nodes-base.stickyNote",
"position": [
656,
1072
],
"parameters": {
"width": 432,
"height": 316,
"content": "## \ud83d\udce5 STEP 1\n**Download Resume File**\n\n\ud83d\udd0d **What it does:**\n- Downloads the new resume file from Google Drive\n- Retrieves the actual PDF document\n- Prepares file for text extraction\n\n\u2699\ufe0f **Process:**\n- Gets file ID from trigger\n- Downloads complete file content\n- Passes to next step\n\n\ud83d\udca1 **User Tip:** Supports PDF format resumes"
},
"typeVersion": 1
},
{
"id": "2a282f96-895f-415b-9bc3-4d53df11d445",
"name": "Sticky Note - Extract",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
1568
],
"parameters": {
"width": 400,
"height": 348,
"content": "## \ud83d\udcc4 STEP 2\n**Convert PDF to Text**\n\n\ud83d\udd0d **What it does:**\n- Extracts all text content from PDF resume\n- Converts document to readable text format\n- Preserves formatting and structure\n\n\u2699\ufe0f **Process:**\n- Processes PDF files only\n- Extracts complete text content\n- Outputs clean text for AI analysis\n\n\ud83d\udca1 **User Tip:** Works best with text-based PDFs (not scanned images)"
},
"typeVersion": 1
},
{
"id": "ab566a24-0be9-4527-aef4-6e79c6a3fbdf",
"name": "Sticky Note - AI Analysis",
"type": "n8n-nodes-base.stickyNote",
"position": [
1136,
1008
],
"parameters": {
"width": 400,
"height": 380,
"content": "## \ud83e\udd16 STEP 3\n**AI Resume Analyzer**\n\n\ud83d\udd0d **What it does:**\n- Uses advanced AI to read resume content\n- Extracts structured candidate information\n- Returns standardized JSON format\n\n\ud83d\udccb **Extracts:**\n- Name, Email, Phone\n- Years of experience\n- Current role & Skills\n- Education details\n\n\ud83d\udca1 **User Tip:** AI is smart enough to find info even in different resume formats!"
},
"typeVersion": 1
},
{
"id": "081608b5-fbfd-4994-adb7-5180e2b61702",
"name": "Sticky Note - Clean Data",
"type": "n8n-nodes-base.stickyNote",
"position": [
1600,
1024
],
"parameters": {
"width": 400,
"height": 348,
"content": "## \ud83d\udd27 STEP 4\n**Clean AI Response**\n\n\ud83d\udd0d **What it does:**\n- Cleans up AI output for database storage\n- Removes formatting characters\n- Validates JSON structure\n\n\u2699\ufe0f **Process:**\n- Removes code blocks (```json```)\n- Parses JSON safely\n- Handles errors gracefully\n\n\ud83d\udca1 **User Tip:** Ensures data is properly formatted before saving"
},
"typeVersion": 1
},
{
"id": "7a7cc437-c52f-47f0-8469-d279f3055caf",
"name": "Sticky Note - Database",
"type": "n8n-nodes-base.stickyNote",
"position": [
1856,
1616
],
"parameters": {
"width": 400,
"height": 348,
"content": "## \ud83d\udcbe STEP 5\n**Save Candidate to Database**\n\n\ud83d\udd0d **What it does:**\n- Saves candidate info to Google Sheets\n- Updates existing records or creates new ones\n- Maintains central candidate database\n\n\ud83d\udcca **Saves:**\n- All extracted candidate details\n- Organized in spreadsheet rows\n- Searchable and sortable data\n\n\ud83d\udca1 **User Tip:** Creates permanent record for HR team reference"
},
"typeVersion": 1
},
{
"id": "0e74e62b-70dd-4ed6-9cb0-cac50ea7e278",
"name": "Sticky Note - Task Creation",
"type": "n8n-nodes-base.stickyNote",
"position": [
2112,
1024
],
"parameters": {
"width": 400,
"height": 348,
"content": "## \u2705 STEP 6 - FINAL\n**Create Hiring Task**\n\n\ud83d\udd0d **What it does:**\n- Creates new task in ClickUp project management\n- Assigns task to hiring team member\n- Starts formal hiring process\n\n\ud83d\udccb **Task Details:**\n- Title: \"[Candidate Name] Hiring Process\"\n- Assigned to recruiting team\n- Ready for interview scheduling\n\n\ud83d\udca1 **User Tip:** Seamlessly connects recruitment pipeline with project management!"
},
"typeVersion": 1
},
{
"id": "bfb8ee2c-53ec-42cb-a1c6-8c20baf9e13b",
"name": "Sticky Note - Overview",
"type": "n8n-nodes-base.stickyNote",
"position": [
1232,
1856
],
"parameters": {
"width": 600,
"height": 528,
"content": "## \ud83d\udd25 COMPLETE AUTOMATION WORKFLOW\n**Drive to ClickUp Resume Processing**\n\n\ud83c\udfaf **Purpose:** \nAutomatically process new resume uploads and create hiring tasks\n\n\ud83d\udcc8 **Benefits:**\n\u2705 Zero manual data entry\n\u2705 Instant candidate database updates \n\u2705 Automatic task assignment\n\u2705 Faster hiring process\n\u2705 No missed candidates\n\n\ud83d\udd04 **Process Flow:**\n1. Upload resume \u2192 2. Download \u2192 3. Extract text \u2192 4. AI analysis \u2192 5. Save data \u2192 6. Create task\n\n\u23f1\ufe0f **Speed:** Complete processing in under 2 minutes!\n\n\ud83d\udee0\ufe0f **Setup Required:**\n- Google Drive folder access\n- Google Sheets database\n- ClickUp project access\n- AI service credentials"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "c59e15c8-f1d1-4730-981b-f034c69da321",
"connections": {
"AI Language Model": {
"ai_languageModel": [
[
{
"node": "AI Resume Analyzer",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Clean AI Response": {
"main": [
[
{
"node": "Save Candidate to Database",
"type": "main",
"index": 0
}
]
]
},
"AI Resume Analyzer": {
"main": [
[
{
"node": "Clean AI Response",
"type": "main",
"index": 0
}
]
]
},
"Convert PDF to Text": {
"main": [
[
{
"node": "AI Resume Analyzer",
"type": "main",
"index": 0
}
]
]
},
"Download Resume File": {
"main": [
[
{
"node": "Convert PDF to Text",
"type": "main",
"index": 0
}
]
]
},
"Watch for New Resumes": {
"main": [
[
{
"node": "Download Resume File",
"type": "main",
"index": 0
}
]
]
},
"Save Candidate to Database": {
"main": [
[
{
"node": "Create Hiring Task",
"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.
azureOpenAiApiclickUpApigoogleDriveOAuth2ApigoogleSheetsOAuth2Api
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Process new resumes from Google Drive, extract structured candidate data with AI, save to Google Sheets, and auto-create a ClickUp hiring task. Gain a centralized, searchable candidate database and instant task kickoff—no manual data entry. 🚀 Watches a Google Drive folder for…
Source: https://n8n.io/workflows/8529/ — 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.
This workflow is designed to evaluate newly added CVs for Diversity, Equity, and Inclusion (DEI) eligibility. It automatically ingests CVs from Google Drive, extracts key fields, analyzes them with Az
This comprehensive n8n workflow automates the entire Meta (Facebook/Instagram) advertising process, from asset analysis to ad creation. It combines AI-powered content analysis with automated ad deploy
This workflow is designed for marketers, content creators, agencies, and solo founders who want to publish long‑form posts with visuals on autopilot using n8n and AI agents.
Automatically compare candidate resumes to job descriptions (PDFs) from Google Drive, generate a 0–100 fit score with gap analysis, and update Google Sheets—powered by Azure OpenAI (GPT-4o-mini). Fast
This workflow automates the creation, storage, and reporting of personalized sales collateral for booked leads using GPT-4o, Google Sheets, Google Drive, and Gmail. It pulls leads from a central sheet