This workflow corresponds to n8n.io template #9878 — we link there as the canonical source.
This workflow follows the Chainllm → Google Sheets 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": "Vx1gBwunQwoW8r3w",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Resume Intelligence and Data Mining using Decodo with GPT-4o-mini",
"tags": [
{
"id": "Kujft2FOjmOVQAmJ",
"name": "Engineering",
"createdAt": "2025-04-09T01:31:00.558Z",
"updatedAt": "2025-04-09T01:31:00.558Z"
},
{
"id": "ZOwtAMLepQaGW76t",
"name": "Building Blocks",
"createdAt": "2025-04-13T15:23:40.462Z",
"updatedAt": "2025-04-13T15:23:40.462Z"
},
{
"id": "ddPkw7Hg5dZhQu2w",
"name": "AI",
"createdAt": "2025-04-13T05:38:08.053Z",
"updatedAt": "2025-04-13T05:38:08.053Z"
},
{
"id": "rKOa98eAi3IETrLu",
"name": "HR",
"createdAt": "2025-04-13T04:59:30.580Z",
"updatedAt": "2025-04-13T04:59:30.580Z"
}
],
"nodes": [
{
"id": "d10ea979-7f28-4236-ab7e-a3f347c88c25",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-144,
128
],
"parameters": {},
"typeVersion": 1
},
{
"id": "24e68c9b-2b5c-4098-97bb-90e294b74520",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
320
],
"parameters": {
"width": 496,
"height": 688,
"content": "## Purpose\n\nAdvanced talent intelligence platform that performs data mining on the JSON resume-based profiles to generate comprehensive recruitment insights and predictive job matching analytics.\n\n### Flow Summary:\n\n- Input: Resume URL\n\n- Decodo: Performs comprehensive web scraping of candidate resume\n\n- OpenAI GPT-4o-mini: Extracts structured profile data with advanced parsing\n\n- Advanced Data Mining Engine: Performs deep analytics including skills analysis, experience intelligence, cultural fit assessment, career trajectory insights, and competitive advantage identification\n\n- Advanced Summarization Engine: Performs the comprehensive and abstraction summarization of the LinkedIn profile content\n\n- Output: Comprehensive JSON with structured profile data and advanced recruitment intelligence ready for ATS, CRM systems, or talent analytics platforms.\n\n### Use Case:\nIdeal for data-driven recruiters, talent acquisition teams, HR analytics professionals, and recruitment technology platforms requiring sophisticated candidate analysis and predictive matching capabilities "
},
"typeVersion": 1
},
{
"id": "8a99dc3d-6c39-4ee6-a855-b8775fdd004d",
"name": "Decodo",
"type": "@decodo/n8n-nodes-decodo.decodo",
"position": [
352,
128
],
"parameters": {
"geo": "={{ $json.geo }}",
"url": "={{ $json.url }}"
},
"credentials": {
"decodoApi": {
"name": "<your credential>"
}
},
"retryOnFail": true,
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "dd017b60-e717-454f-bc10-0bd4a71906b1",
"name": "Set the Input Fields",
"type": "n8n-nodes-base.set",
"position": [
112,
128
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "01a2dade-6674-4158-8303-97a1151d3965",
"name": "url",
"type": "string",
"value": "https://registry.jsonresume.org/thomasdavis?theme=academic-cv-lite"
},
{
"id": "82a8ccde-dc3c-4ed1-b81e-bbcf44a2cf11",
"name": "geo",
"type": "string",
"value": "India"
},
{
"id": "b8104d33-8d7a-415c-935b-1e8432b8a756",
"name": "jobDescription",
"type": "string",
"value": "Senior Software Engineer with 5+ years of experience in React, Node.js, and cloud technologies. Must have experience with AWS, Docker, and agile development methodologies. Looking for someone who can lead technical projects and mentor junior developers."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "80ce7dc5-b8d1-4a76-a991-f982c6bb5113",
"name": "Structured Data Extractor",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
720,
-208
],
"parameters": {
"text": "=Parse and build content using {{ $json.data.results[0].content }} in JSON Resume Schema.\n\nDo not output your own response or thoughts or suggestions. \n\nNeed to output a proper fully formatted JSON response.",
"batching": {},
"messages": {
"messageValues": [
{
"message": "You are an expert resume parser"
}
]
},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 1.7,
"alwaysOutputData": true
},
{
"id": "5b8db369-beaf-4380-96bb-1c0270b49710",
"name": "Advanced Data Mining & Profile-Job Analysis",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
720,
176
],
"parameters": {
"text": "=Perform advanced data mining analysis on the candidate profile and job description.\n\nCandidate Profile:\n{{ $json.data.results[0].content }}\n\nJob Description:\n{{ $('Set the Input Fields').item.json.jobDescription }}\n\nConduct comprehensive data mining including:\n\n1. SKILLS ANALYSIS:\n- Technical skills extraction and categorization\n- Skill level assessment (Beginner/Intermediate/Advanced/Expert)\n- Skills gap analysis against job requirements\n- Transferable skills identification\n\n2. EXPERIENCE INTELLIGENCE:\n- Career progression pattern analysis\n- Industry experience depth assessment\n- Leadership and management experience evaluation\n- Project complexity and scale analysis\n\n3. CULTURAL & CONTEXTUAL FIT:\n- Company culture alignment indicators\n- Work style preferences inference\n- Communication style analysis\n- Learning agility indicators\n\n4. CAREER TRAJECTORY INSIGHTS:\n- Career growth velocity\n- Job stability patterns\n- Promotion frequency analysis\n- Industry transition analysis\n\n5. COMPETITIVE ADVANTAGES:\n- Unique selling points identification\n- Market positioning analysis\n- Salary expectation indicators\n- Availability timeline assessment\n\nOutput comprehensive JSON with data-driven insights for recruitment decisions.\n\nDo not output your own response or thoughts or suggestions. \n\nNeed to output a proper fully formatted JSON response.",
"batching": {},
"messages": {
"messageValues": [
{
"message": "You are a senior data scientist and HR analytics expert specializing in talent intelligence and predictive recruitment analytics."
}
]
},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 1.7,
"alwaysOutputData": true
},
{
"id": "3a48d42b-5412-4ea0-b9e8-99b87f5c4a3f",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-144,
-144
],
"parameters": {
"color": 7,
"width": 384,
"height": 208,
"content": "\n\nOpenAI GPT-4o-mini for the Structured Data Extraction and Data Mining Purposes"
},
"typeVersion": 1
},
{
"id": "1016f828-0030-4a00-8101-b81781ed505c",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
528,
-288
],
"parameters": {
"color": 4,
"width": 608,
"height": 1104,
"content": "## Data Miner"
},
"typeVersion": 1
},
{
"id": "0b584256-8d98-445b-9d83-6c3bc7fdc002",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"position": [
1376,
160
],
"parameters": {
"numberInputs": 3
},
"typeVersion": 3.2
},
{
"id": "ffb0413b-e293-4f68-8fd3-a6ccd9e9cf19",
"name": "Append or update row in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
1600,
176
],
"parameters": {
"columns": {
"value": {},
"schema": [],
"mappingMode": "autoMapInputData",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "appendOrUpdate",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oNScKT5lCIFJTXZ006vAu5IJEC_nWHTOil56tvB3JYU/edit#gid=0",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1oNScKT5lCIFJTXZ006vAu5IJEC_nWHTOil56tvB3JYU",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1oNScKT5lCIFJTXZ006vAu5IJEC_nWHTOil56tvB3JYU/edit?usp=drivesdk",
"cachedResultName": "LinkedIn Talent Intelligence"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.7
},
{
"id": "243a19c7-12ca-409f-841e-fd6db293f094",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
784,
336
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "a418dd98-f39c-4fe8-8d19-8aab9953eeef",
"name": "OpenAI Chat Model for Structured Data Extract",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
736,
-48
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "bef20961-1e35-422d-b0d4-edb4be0ee908",
"name": "Summarizer",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
736,
480
],
"parameters": {
"text": "=Perform abstractive and comprehensive summarize of the following {{ $json.data.results[0].content }} in JSON Resume Schema",
"batching": {},
"messages": {
"messageValues": [
{
"message": "You are an expert resume summarizer"
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"retryOnFail": true,
"typeVersion": 1.7,
"alwaysOutputData": true
},
{
"id": "b5bb3d0a-6acc-46a6-9485-b38fed0f2af1",
"name": "OpenAI Chat Model for Summarizer",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
704,
656
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "gpt-4o-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.2
},
{
"id": "69ba6eae-a116-4c46-8e28-a98c6b189b04",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
912,
656
],
"parameters": {
"schemaType": "manual",
"inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"abstractive_summarizer\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n \"comprehensive_summarizer\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
},
"typeVersion": 1.3
},
{
"id": "c488826d-a4a6-4aad-872f-c9c835447545",
"name": "Read/Write Files from Disk",
"type": "n8n-nodes-base.readWriteFile",
"position": [
1584,
-176
],
"parameters": {
"options": {},
"fileName": "=C:\\\\{{ $('Extract Structured JSON').item.json.basics.name }}.json",
"operation": "write",
"dataPropertyName": "=data"
},
"typeVersion": 1
},
{
"id": "3737445a-f4d8-477e-a9ae-7d6d814b1232",
"name": "Make Binary",
"type": "n8n-nodes-base.function",
"position": [
1376,
-176
],
"parameters": {
"functionCode": "items[0].binary = {\n data: {\n data: new Buffer(JSON.stringify(items[0].json, null, 2)).toString('base64')\n }\n};\nreturn items;"
},
"typeVersion": 1
},
{
"id": "64dd716d-8891-478a-ac86-6f1b4e1fb8a5",
"name": "Extract Structured JSON",
"type": "n8n-nodes-base.code",
"position": [
1184,
-32
],
"parameters": {
"jsCode": "let text = $input.first().json.text;\nconst output = [];\n\n// Remove ```json ... ``` or ``` ... ``` wrappers\ntext = text\n .replace(/```json\\s*/gi, '')\n .replace(/```/g, '')\n .trim();\n\n// Parse the cleaned JSON text\nconst parsed = JSON.parse(text);\noutput.push({ json: parsed });\n\nreturn output;"
},
"typeVersion": 2
},
{
"id": "860a4040-2915-4236-a03c-e547eff14d74",
"name": "Extract formatted JSON",
"type": "n8n-nodes-base.code",
"position": [
1152,
176
],
"parameters": {
"jsCode": "let text = $input.first().json.text;\nconst output = [];\n\n// Remove ```json ... ``` or ``` ... ``` wrappers\ntext = text\n .replace(/```json\\s*/gi, '')\n .replace(/```/g, '')\n .trim();\n\n// Parse the cleaned JSON text\nconst parsed = JSON.parse(text);\noutput.push({ json: parsed });\n\nreturn output;"
},
"typeVersion": 2
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "865efb08-4a07-47d9-ab1c-c14f09d7ed3c",
"connections": {
"Merge": {
"main": [
[
{
"node": "Append or update row in sheet",
"type": "main",
"index": 0
}
]
]
},
"Decodo": {
"main": [
[
{
"node": "Structured Data Extractor",
"type": "main",
"index": 0
},
{
"node": "Advanced Data Mining & Profile-Job Analysis",
"type": "main",
"index": 0
},
{
"node": "Summarizer",
"type": "main",
"index": 0
}
]
]
},
"Summarizer": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 2
}
]
]
},
"Make Binary": {
"main": [
[
{
"node": "Read/Write Files from Disk",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Advanced Data Mining & Profile-Job Analysis",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Set the Input Fields": {
"main": [
[
{
"node": "Decodo",
"type": "main",
"index": 0
}
]
]
},
"Extract formatted JSON": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Extract Structured JSON": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
},
{
"node": "Make Binary",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Summarizer",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"Structured Data Extractor": {
"main": [
[
{
"node": "Extract Structured JSON",
"type": "main",
"index": 0
}
]
]
},
"Append or update row in sheet": {
"main": [
[]
]
},
"OpenAI Chat Model for Summarizer": {
"ai_languageModel": [
[
{
"node": "Summarizer",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Set the Input Fields",
"type": "main",
"index": 0
}
]
]
},
"Advanced Data Mining & Profile-Job Analysis": {
"main": [
[
{
"node": "Extract formatted JSON",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model for Structured Data Extract": {
"ai_languageModel": [
[
{
"node": "Structured Data Extractor",
"type": "ai_languageModel",
"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.
decodoApigoogleSheetsOAuth2ApiopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow is specifically designed for Recruiters, HR analytics teams, and data-driven talent acquisition professionals seeking deeper insights from candidate resume. Valuable for HR tech developers, ATS/CRM engineers, and AI-driven recruitment platforms aiming to automate…
Source: https://n8n.io/workflows/9878/ — 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 sophisticated workflow automates personalized email campaigns for musicians and band managers. The system processes contact databases, analyzes previous Gmail conversation history, and uses AI to
The Scrape and Analyze Amazon Product Info with Decodo + OpenAI workflow automates the process of extracting product information from an Amazon product page and transforming it into meaningful insight
This workflow automatically scrapes Amazon price-drop data via Decodo, extracts structured product details with OpenAI, generates summaries and sentiment insights for each item, and saves everything t
The Crunchbase B2B Lead Discovery Pipeline is designed for sales teams, B2B marketers, business analysts, and data operations teams who need a reliable way to extract, structure, and summarize company
This end-to-end AI-powered recruitment automation workflow helps HR and talent acquisition teams automate the complete hiring pipeline—from resume intake and parsing to GPT-4-based evaluation, TA appr