AutomationFlowsAI & RAG › Automate Candidate Screening with Llamaindex & Gpt for Email Responses

Automate Candidate Screening with Llamaindex & Gpt for Email Responses

ByKhairul Muhtadin @khmuhtadin on n8n.io

This n8n workflow — HRMate — streamlines your entire recruitment process by automatically parsing incoming job applications, evaluating candidate fit using AI, and sending personalized acceptance or rejection emails — all without manual intervention.

Event trigger★★★★★ complexityAI-powered30 nodesHTTP RequestGmail TriggerOpenAIGmailGoogle Sheets
AI & RAG Trigger: Event Nodes: 30 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #4727 — we link there as the canonical source.

This workflow follows the Gmail → 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
{
  "id": "8dqwl5tpx0XjJNKX",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "HRMate Fix",
  "tags": [],
  "nodes": [
    {
      "id": "68b38626-5c34-4c5a-8e6a-ce6711af9b82",
      "name": "\u2601\ufe0f Upload PDF to LlamaIndex",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        700,
        -760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "441843b0-35cc-4ddf-bb84-a43c900fa8f2",
      "name": "\u23f3 Check Parsing Status",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        920,
        -760
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "7f16b44d-4a83-4e7d-9c14-0bd3492f4877",
      "name": "\ud83d\udd01 Condition: Was Parsing Successful?",
      "type": "n8n-nodes-base.if",
      "position": [
        1140,
        -760
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "7dc90ea4-53e9-4f34-877d-2c3fcfd88cf2",
      "name": " \u23f1 Delay Before Recheck",
      "type": "n8n-nodes-base.wait",
      "position": [
        1380,
        -720
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "adb0df03-21fa-42d1-8644-c2e33f548664",
      "name": " \ud83d\udce5 Get Parsed Markdown Result",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1380,
        -900
      ],
      "parameters": {},
      "typeVersion": 4.2
    },
    {
      "id": "38208667-9c49-413f-97aa-03ba37a0b30b",
      "name": " \ud83e\uddfc Clean Markdown Text",
      "type": "n8n-nodes-base.code",
      "position": [
        1620,
        -900
      ],
      "parameters": {},
      "typeVersion": 2
    },
    {
      "id": "206f38e7-57f0-4b74-8160-f80201c62539",
      "name": "No Operation, do nothing",
      "type": "n8n-nodes-base.noOp",
      "position": [
        480,
        -340
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d300455f-ef89-4161-a573-94551f1fa7d7",
      "name": "Gmail Trigger - Incoming Applications",
      "type": "n8n-nodes-base.gmailTrigger",
      "position": [
        -440,
        -280
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "6e02a179-9a8d-4ff1-88a7-f09b2cf73762",
      "name": "\tSet Job Criteria Text",
      "type": "n8n-nodes-base.set",
      "position": [
        -200,
        -280
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "b36435fc-4e5d-4016-89bb-e1965cf19705",
      "name": "\tExtract Email Body Text",
      "type": "n8n-nodes-base.set",
      "position": [
        0,
        -280
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "496375c2-c627-4128-9c2d-2a710c068ce9",
      "name": "\tCheck Subject Validity",
      "type": "n8n-nodes-base.if",
      "position": [
        220,
        -280
      ],
      "parameters": {},
      "typeVersion": 2.2
    },
    {
      "id": "b47142e2-d94e-4d55-a591-66d105e6d408",
      "name": "Check If PDF Attachment Exists",
      "type": "n8n-nodes-base.if",
      "position": [
        480,
        -560
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "10936540-f4f6-47c5-bbba-2d10dd062653",
      "name": "\tPrepare Data for OpenAI",
      "type": "n8n-nodes-base.set",
      "position": [
        1820,
        -540
      ],
      "parameters": {},
      "typeVersion": 3.4
    },
    {
      "id": "e5df09b6-b015-4b26-b766-a59bfcc9284b",
      "name": "\tEvaluate Candidate with OpenAI",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        660,
        -240
      ],
      "parameters": {},
      "typeVersion": 1.8
    },
    {
      "id": "e2b4f1b2-9288-401d-9424-8ab92191e3b3",
      "name": "\tFinal Decision Check",
      "type": "n8n-nodes-base.if",
      "position": [
        980,
        -240
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "c8d6083c-a97e-4566-b1fb-0a6297a2f4a5",
      "name": "\tSend Acceptance",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1200,
        -340
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "fb11ce15-8477-477e-8174-906575bf3041",
      "name": "\tSend Rejection",
      "type": "n8n-nodes-base.gmail",
      "position": [
        1200,
        -140
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "0e41269a-4a62-4714-ab78-afa3ebb28bf0",
      "name": "\tMark as Accepted",
      "type": "n8n-nodes-base.set",
      "position": [
        1380,
        -340
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "8024bdc5-d109-42ce-88fe-0c45cfbd11e7",
      "name": "\tMark as Rejected",
      "type": "n8n-nodes-base.set",
      "position": [
        1380,
        -140
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "afa7ef69-24c6-4cc4-a59e-a24030ce3587",
      "name": "\tUpdate Candidate Status on Google Sheets",
      "type": "n8n-nodes-base.googleSheets",
      "disabled": true,
      "position": [
        1640,
        -220
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "552c28ef-ddea-4078-bc88-feeb1963dfd3",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -1020
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "da02b312-49ad-4195-8a1d-451828e63c57",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        440,
        -940
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "2db2d480-71b2-4489-b4c8-451a33e354c2",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        -1020
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "3ed78cbd-9c40-46a7-9a34-ad8ab22b0ee2",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -480,
        -940
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "eb61b244-2a80-40a9-9d3a-d138d3a7fd77",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        420,
        -380
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "58bd8748-4e8f-4929-950f-730391688d40",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        460,
        -100
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "8f486468-7fb1-4f17-a5a9-7ddbf82c1aa1",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1720,
        -580
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "6998f74d-8bb7-466a-97db-7afee60ef13c",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -540,
        60
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "1b0336dc-77fa-48d2-aafb-953785753948",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -200,
        60
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    },
    {
      "id": "f0c872a8-efb9-4ece-add5-f85036730e40",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        120,
        60
      ],
      "parameters": {
        "content": ""
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "9da0560e-8df9-4d71-8aa9-a1d750af3eac",
  "connections": {
    "\tSend Rejection": {
      "main": [
        [
          {
            "node": "\tMark as Rejected",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tSend Acceptance": {
      "main": [
        [
          {
            "node": "\tMark as Accepted",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tMark as Accepted": {
      "main": [
        [
          {
            "node": "\tUpdate Candidate Status on Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tMark as Rejected": {
      "main": [
        [
          {
            "node": "\tUpdate Candidate Status on Google Sheets",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tFinal Decision Check": {
      "main": [
        [
          {
            "node": "\tSend Acceptance",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\tSend Rejection",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tSet Job Criteria Text": {
      "main": [
        [
          {
            "node": "\tExtract Email Body Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tCheck Subject Validity": {
      "main": [
        [
          {
            "node": "Check If PDF Attachment Exists",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "No Operation, do nothing",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tExtract Email Body Text": {
      "main": [
        [
          {
            "node": "\tCheck Subject Validity",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tPrepare Data for OpenAI": {
      "main": [
        [
          {
            "node": "\tEvaluate Candidate with OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u23f3 Check Parsing Status": {
      "main": [
        [
          {
            "node": "\ud83d\udd01 Condition: Was Parsing Successful?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " \u23f1 Delay Before Recheck": {
      "main": [
        [
          {
            "node": "\u23f3 Check Parsing Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " \ud83e\uddfc Clean Markdown Text": {
      "main": [
        [
          {
            "node": "\tPrepare Data for OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Check If PDF Attachment Exists": {
      "main": [
        [
          {
            "node": "\u2601\ufe0f Upload PDF to LlamaIndex",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "\tPrepare Data for OpenAI",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\tEvaluate Candidate with OpenAI": {
      "main": [
        [
          {
            "node": "\tFinal Decision Check",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\u2601\ufe0f Upload PDF to LlamaIndex": {
      "main": [
        [
          {
            "node": "\u23f3 Check Parsing Status",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    " \ud83d\udce5 Get Parsed Markdown Result": {
      "main": [
        [
          {
            "node": " \ud83e\uddfc Clean Markdown Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gmail Trigger - Incoming Applications": {
      "main": [
        [
          {
            "node": "\tSet Job Criteria Text",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "\ud83d\udd01 Condition: Was Parsing Successful?": {
      "main": [
        [
          {
            "node": " \ud83d\udce5 Get Parsed Markdown Result",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": " \u23f1 Delay Before Recheck",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This n8n workflow — HRMate — streamlines your entire recruitment process by automatically parsing incoming job applications, evaluating candidate fit using AI, and sending personalized acceptance or rejection emails — all without manual intervention.

Source: https://n8n.io/workflows/4727/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

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

AI & RAG

Overview

Gmail Trigger, Google Drive, OpenAI +4
AI & RAG

Small teams, solo operators, and security-conscious individuals who receive email attachments from external senders. Useful for freelancers, agencies, HR teams, and anyone handling CVs, invoices, or d

Gmail Trigger, HTTP Request, OpenAI +4
AI & RAG

This intelligent email automation workflow helps you maximize engagement through domain-based outreach. It utilizes AI-powered personalization and strategic follow-ups to increase response rates. The

Gmail, HTTP Request, Google Sheets +1
AI & RAG

This workflow converts emailed timesheets into structured invoice rows in Google Sheets and stores them in the correct Google Drive folder structure.

Gmail Trigger, OpenAI, Google Sheets +2
AI & RAG

Complete AI-powered sales system Automates lead capture, qualification, and follow-up from multiple channels. AI INTELLIGENCE:

Gmail Trigger, Google Sheets, OpenAI +3