AutomationFlowsEmail & Gmail › Cv Extracction / Filter Job

Cv Extracction / Filter Job

CV Extracction / filter job. Uses gmailTrigger, chainLlm, lmChatOpenRouter, outputParserStructured. Event-driven trigger; 13 nodes.

Event trigger★★★★☆ complexityAI-powered13 nodesGmail TriggerChain LlmOpenRouter ChatOutput Parser StructuredHTTP RequestSupabase
Email & Gmail Trigger: Event Nodes: 13 Complexity: ★★★★☆ AI nodes: yes Added:

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 →

Download .json
{
  "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.

Pro

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 →

More Email & Gmail workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Email & Gmail

Inbox-Attachment-Organizer. Uses googleSheets, gmail, telegram, lmChatGroq. Event-driven trigger; 51 nodes.

Google Sheets, Gmail, Telegram +6
Email & Gmail

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

Chain Llm, Gmail, Google Sheets +3
Email & Gmail

This workflow monitors Gmail and a Google Drive folder for receipts, uses Anthropic Claude to extract expense details from email bodies, PDFs, and images, archives attachments to Google Drive, and app

Gmail Trigger, Google Drive, Google Drive Trigger +5
Email & Gmail

Professionals and individuals who receive high volumes of emails, those who want to automatically organize their Gmail inbox using AI classification.

OpenRouter Chat, Chain Llm, Gmail Trigger +1
Email & Gmail

Anyone who is drowning in emails Busy parents who has alot of school emails Busy executives with too many emails

Email Read Imap, HTTP Request, Chain Llm +2