This workflow follows the Chainllm → Gmail Trigger 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 →
{
"updatedAt": "2025-09-27T10:41:42.000Z",
"createdAt": "2025-08-25T09:30:21.285Z",
"id": "raSF9TQ5ejCRjLFr",
"name": "CV Extracction / filter job",
"active": false,
"isArchived": false,
"nodes": [
{
"parameters": {
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"simple": false,
"filters": {},
"options": {
"downloadAttachments": true
}
},
"type": "n8n-nodes-base.gmailTrigger",
"typeVersion": 1.3,
"position": [
144,
-16
],
"id": "1c08b551-5460-4255-8eda-ac604477729d",
"name": "Gmail Trigger",
"credentials": {
"gmailOAuth2": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"operation": "pdf",
"binaryPropertyName": "attachment_0",
"options": {}
},
"type": "n8n-nodes-base.extractFromFile",
"typeVersion": 1,
"position": [
400,
-16
],
"id": "d4c0ebf6-6ffd-42f8-9f5b-b882d4124b40",
"name": "Extract from File"
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "445d90cd-7832-4312-a128-ae0f5cbc5712",
"name": "text",
"value": "={{ $json.text }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
592,
-16
],
"id": "56cd51dc-6578-462c-ba9b-a23274a163bb",
"name": "Edit Fields"
},
{
"parameters": {
"promptType": "define",
"text": "=you are an HR expert , you are given a detailed CV text\nextract\nName\nEmail\nTelephone\nExperience\nSkills\nEducation\nthis is CV text {{ $json.text }}",
"hasOutputParser": true,
"batching": {}
},
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"typeVersion": 1.7,
"position": [
800,
-16
],
"id": "4361379e-1b7b-4213-9273-80c288926858",
"name": "Basic LLM Chain"
},
{
"parameters": {
"model": "google/gemma-3n-e4b-it:free",
"options": {}
},
"type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
"typeVersion": 1,
"position": [
768,
208
],
"id": "f33ef795-d9d2-41e0-bfba-afcc2c7732cf",
"name": "OpenRouter Chat Model",
"credentials": {
"openRouterApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"jsonSchemaExample": "{\n\"Name\": \"Firstname Lastname\",\n\"Telephone\": \"01788798797\",\n\"Email\": \"a@b.com\",\n\"Education\": [\"University 1\", \"University 2\"],\n\"Skill\": [\"Skill 1\", \"Skill 2\", \"Skill 3\"],\n\"Experience\": [\"Job 1\", \"job 2\", \"job 3\"]\n}"
},
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"typeVersion": 1.3,
"position": [
976,
224
],
"id": "70f2f076-3a6a-4cd6-ae1b-f2abd7db9635",
"name": "Structured Output Parser"
},
{
"parameters": {
"method": "POST",
"url": "https://jnvlpgcwsyunllozdyso.supabase.co/rest/v1/cvs",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "apikey",
"value": "REDACTED_HEADER_VALUE"
},
{
"name": "Authorization",
"value": "REDACTED_HEADER_VALUE"
},
{
"name": "Prefer",
"value": "return=representation"
}
]
},
"sendBody": true,
"bodyParameters": {
"parameters": [
{
"name": "name",
"value": "={{ $json.output.Name }}"
},
{
"name": "telephone",
"value": "={{ $json.output.Telephone }}"
},
{
"name": "email",
"value": "={{ $json.output.Email }}"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.httpRequest",
"typeVersion": 4.2,
"position": [
1136,
-16
],
"id": "d4c81ef5-24b5-42d9-b4da-da55e53a618d",
"name": "HTTP Request"
},
{
"parameters": {
"tableId": "Experiences",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "id_cvs",
"fieldValue": "={{ $('HTTP Request').item.json.id }}"
},
{
"fieldId": "education",
"fieldValue": "={{ $('Basic LLM Chain').item.json.output.Experience }}"
}
]
}
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
1760,
-16
],
"id": "1bc7ae26-7179-4781-b9da-1e6a3f11cae6",
"name": "Create a row",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "110fad98-bc4d-4d40-ab08-4feca69a72fe",
"name": "exp",
"value": "={{ $('Basic LLM Chain').item.json.output.Experience }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1328,
-16
],
"id": "570f6359-caab-4edb-9eed-c9cc90c101ad",
"name": "Edit Fields1"
},
{
"parameters": {
"fieldToSplitOut": "exp",
"include": "=",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1536,
-16
],
"id": "3bc28e67-6525-452b-b2d8-ca9abea8768c",
"name": "Split Out"
},
{
"parameters": {
"tableId": "Experiences",
"fieldsUi": {
"fieldValues": [
{
"fieldId": "id_cvs",
"fieldValue": "={{ $('HTTP Request').item.json.id }}"
},
{
"fieldId": "education",
"fieldValue": "={{ $('Basic LLM Chain').item.json.output.Experience }}"
}
]
}
},
"type": "n8n-nodes-base.supabase",
"typeVersion": 1,
"position": [
1760,
144
],
"id": "135b6f88-7ff0-4f83-87f7-49ef8b731de4",
"name": "Create a row1",
"credentials": {
"supabaseApi": {
"name": "<your credential>"
}
}
},
{
"parameters": {
"assignments": {
"assignments": [
{
"id": "110fad98-bc4d-4d40-ab08-4feca69a72fe",
"name": "exp",
"value": "={{ $('Basic LLM Chain').item.json.output.Experience }}",
"type": "string"
}
]
},
"options": {}
},
"type": "n8n-nodes-base.set",
"typeVersion": 3.4,
"position": [
1328,
144
],
"id": "fd85b65e-458f-4651-907f-904b79d26ecd",
"name": "Edit Fields2"
},
{
"parameters": {
"fieldToSplitOut": "exp",
"include": "=",
"options": {}
},
"type": "n8n-nodes-base.splitOut",
"typeVersion": 1,
"position": [
1536,
144
],
"id": "6426218c-20e9-45ee-a627-c7d25c9de76d",
"name": "Split Out1"
}
],
"connections": {
"Gmail Trigger": {
"main": [
[
{
"node": "Extract from File",
"type": "main",
"index": 0
}
]
]
},
"Extract from File": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Basic LLM Chain",
"type": "main",
"index": 0
}
]
]
},
"OpenRouter Chat Model": {
"ai_languageModel": [
[
{
"node": "Basic LLM Chain",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Basic LLM Chain": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Basic LLM Chain",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "Edit Fields1",
"type": "main",
"index": 0
},
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields1": {
"main": [
[
{
"node": "Split Out",
"type": "main",
"index": 0
}
]
]
},
"Split Out": {
"main": [
[
{
"node": "Create a row",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "Split Out1",
"type": "main",
"index": 0
}
]
]
},
"Split Out1": {
"main": [
[
{
"node": "Create a row1",
"type": "main",
"index": 0
}
]
]
}
},
"settings": {
"executionOrder": "v1"
},
"staticData": null,
"meta": {
"templateCredsSetupCompleted": true
},
"versionId": "b9225a59-581d-4c3d-9031-2e8daa93bce3",
"activeVersionId": null,
"triggerCount": 0,
"shared": [
{
"updatedAt": "2025-08-25T09:30:21.306Z",
"createdAt": "2025-08-25T09:30:21.306Z",
"role": "workflow:owner",
"workflowId": "raSF9TQ5ejCRjLFr",
"projectId": "HHopAZ4lOFgjhBzT"
}
],
"activeVersion": null,
"tags": []
}
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.
gmailOAuth2openRouterApisupabaseApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
CV Extracction / filter job. Uses gmailTrigger, chainLlm, lmChatOpenRouter, outputParserStructured. Event-driven trigger; 13 nodes.
Source: https://github.com/abde0112/n8n_bkv2/blob/main/-filter-job-raSF9TQ5ejCRjLFr.json — 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.
Inbox-Attachment-Organizer. Uses googleSheets, gmail, telegram, lmChatGroq. Event-driven trigger; 51 nodes.
This workflow monitors Gmail for invoice emails, extracts structured fields from attached PDFs using Groq LLMs, validates invoices against Purchase Orders stored in Google Sheets, predicts rejection r
Professionals and individuals who receive high volumes of emails, those who want to automatically organize their Gmail inbox using AI classification.
Anyone who is drowning in emails Busy parents who has alot of school emails Busy executives with too many emails
This workflow monitors a Gmail “Receipts” label, downloads attachments, uses OpenAI to extract expense data from receipt emails and images, skips duplicates and non-receipts, fails safely when extract