This workflow corresponds to n8n.io template #13990 — we link there as the canonical source.
This workflow follows the Emailreadimap → Emailsend 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": "qG6I4JtH5IcxCnAC",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "Candidate evaluation",
"tags": [],
"nodes": [
{
"id": "fdefa89b-a5f1-4b12-8d0c-9977f7b423ca",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-432,
-240
],
"parameters": {
"color": 6,
"width": 288,
"height": 416,
"content": "### \ud83d\udce5 Watch Inbox\n**Trigger:** Fires when a new email arrives in INBOX.\n\n- Format: `Resolved` (full data + binary)\n- Attachments: ON \u2192 store candidate resume as `attachment_0`\n- Action: Mark as Read"
},
"typeVersion": 1
},
{
"id": "e24bce3a-5be7-40ff-bcf9-046242e45423",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-128,
-240
],
"parameters": {
"color": 7,
"width": 256,
"height": 416,
"content": "### \ud83d\udcc4 OCR Extraction\n**Mistral OCR** reads the CV binary.\n\n- Model: `mistral-ocr-latest`\n- Input: Candidate Resume/CV \n- Output: Extracted info from PDF \n- Works on both digital & scanned PDFs"
},
"typeVersion": 1
},
{
"id": "b117d81a-5f42-4f44-ae52-75109be0bb3d",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
144,
-240
],
"parameters": {
"color": 7,
"width": 384,
"height": 416,
"content": "### \ud83e\udd16 AI CV Scoring\n**Gemini** evaluates CV vs JD.\n\n- Model: `gemini-3.1-flash-lite-preview`\n- Input: Extracted info of Candidate from Mistral OCR\n- Returns JSON: score, decision, name, summary, key_skills\n- JSON Output mode: ON"
},
"typeVersion": 1
},
{
"id": "3586d228-3a05-4915-8120-68c102b1c3b4",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
544,
-240
],
"parameters": {
"width": 256,
"height": 416,
"content": "### \u2699\ufe0f Parse Response\n**Critical node** \u2014 does 3 things:\n\n1. Strips Gemini markdown fences (` ```json `)\n2. Parses JSON into clean fields\n3. Passes `binary` from IMAP trigger forward so CV attachment survives into email nodes"
},
"typeVersion": 1
},
{
"id": "aa798038-c950-43bb-8b0e-4b55e0ecdecc",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
816,
-240
],
"parameters": {
"height": 416,
"content": "### \ud83d\udd00 Route Decision\n**IF** \n`decision == \"shortlisted\"`\n\n- \u2705 TRUE \u2192 HR email + candidate invite\n- \u274c FALSE \u2192 polite decline to candidate"
},
"typeVersion": 1
},
{
"id": "2209f484-41db-444c-9828-8b3cbbb441d9",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
1072,
-304
],
"parameters": {
"color": 6,
"width": 352,
"height": 384,
"content": "### \ud83d\udce7 HR Notification\n**Sends to HR** on shortlist.\n\n- Includes: score, name, email, key skills, AI summary\n- Attachment: `attachment_0` (original CV PDF)\n- Subject has score in title for quick scanning"
},
"typeVersion": 1
},
{
"id": "5773fb5c-a56f-404f-9c24-d4f5e6305854",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1440,
-304
],
"parameters": {
"color": 6,
"width": 336,
"height": 384,
"content": "### \ud83d\udce7 Interview Invite\n**Sends to shortlisted candidate.**\n\n- Includes scheduling link (update `YOUR_CALENDLY_OR_CAL_LINK_HERE`)\n- 'What to Expect' section with 3 interview steps\n- Runs after Node 6 (sequential on TRUE branch)"
},
"typeVersion": 1
},
{
"id": "f7702b41-f029-4dd6-a9e0-cdb6622ed70c",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1344,
96
],
"parameters": {
"color": 6,
"width": 432,
"content": "### \ud83d\udce7 Polite Decline\n**Sends to rejected candidate.**\n\n- Empathetic tone, no harsh language\n- Links to appstonelab.com/career for future roles\n- No CV attachment needed here"
},
"typeVersion": 1
},
{
"id": "fee1c26f-feef-47f0-b827-b8db69bf41b5",
"name": "Sticky Note8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-832,
-240
],
"parameters": {
"color": 3,
"width": 384,
"height": 416,
"content": "## \ud83e\udd16 AI Hiring Pipeline\n\n**Purpose:** Automates end-to-end CV screening for a Specific role.\n\n**Flow:**\n1. Watches inbox for incoming CV emails\n2. Extracts CV text via Mistral OCR (works on scanned + digital PDFs)\n3. Scores CV against JD using Gemini AI (returns structured JSON)\n4. Parses response + preserves binary attachment\n5. Routes: Shortlisted \u2192 HR notified + candidate invited | Rejected \u2192 polite decline\n\n**Stack:** IMAP \u00b7 Mistral OCR \u00b7 Gemini 3.1 Flash Lite \u00b7 SMTP\n\n**Threshold:** score \u2265 shortlisted decision by Gemini"
},
"typeVersion": 1
},
{
"id": "007f091d-8989-4b97-8890-a39cf790a30d",
"name": "Watch Inbox for CV Emails",
"type": "n8n-nodes-base.emailReadImap",
"position": [
-336,
0
],
"parameters": {
"format": "resolved",
"options": {
"trackLastMessageId": true
}
},
"credentials": {
"imap": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "b38a7e72-3f95-4a68-a286-00805200131b",
"name": "OCR: Extract CV Text",
"type": "n8n-nodes-base.mistralAi",
"position": [
-48,
0
],
"parameters": {
"options": {},
"binaryProperty": "attachment_0"
},
"credentials": {
"mistralCloudApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5baea769-a76e-4c5e-968e-d560039f300b",
"name": "AI Score CV",
"type": "@n8n/n8n-nodes-langchain.googleGemini",
"position": [
224,
0
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "models/gemini-3-flash-preview",
"cachedResultName": "models/gemini-3-flash-preview"
},
"options": {
"topK": 20,
"temperature": 1
},
"messages": {
"values": [
{
"content": "=You are an expert HR assistant for AppStoneLab Technologies. Evaluate the CV below against the job description and return ONLY a valid JSON object \u2014 no markdown, no code blocks, no extra text.\n\nJOB DESCRIPTION:\nRole: AI Engineer at AppStoneLab Technologies (Surat, India)\nExperience: 0\u20131 years\n\nResponsibilities:\n- Design and implement agentic workflows using LangGraph and LangChain\n- Build modular AI agents for multi-step task planning and execution\n- Create and optimize structured prompts for LLM-driven use cases\n- Integrate LLMs with tools via function calling for dynamic workflows\n- Build intelligent APIs using Flask or FastAPI\n- Work on NLP, computer vision, and recommendation tasks\n- Explore multi-agent setups, memory management, and RAG pipelines\n\nRequirements:\n- Bachelor's in Computer Science, Data Science, or related field\n- Experience with agentic AI frameworks (LangGraph, LangChain, AutoGen)\n- Solid Python development skills\n- Understanding of LLM architecture, prompt chaining, memory, tool calling\n- Bonus: RAG pipelines, vector databases (Pinecone, Weaviate), cloud (AWS/GCP)\n- Portfolio of AI projects on GitHub or Kaggle\n\nCV CONTENT:\n{{ $json.extractedText }}\n\nReturn this exact JSON structure:\n{\n \"score\": <number 0-100>,\n \"decision\": \"<shortlisted or rejected>\",\n \"candidate_name\": \"<full name>\",\n \"summary\": \"<3-4 sentence professional summary focused on fit for this AI Engineer role>\",\n \"key_skills\": \"<comma-separated top 5 relevant skills found in the CV>\"\n}"
}
]
},
"jsonOutput": true,
"builtInTools": {}
},
"credentials": {
"googlePalmApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.1
},
{
"id": "ffe38dd7-159c-45de-b3b7-4fb6666511bf",
"name": "Parse AI Response + Pass Binary",
"type": "n8n-nodes-base.code",
"position": [
624,
0
],
"parameters": {
"jsCode": "const item = $input.first();\nconst aiRaw = item.json.content.parts[0].text;\n\nconst cleaned = aiRaw\n .replace(/^```json\\s*/i, '')\n .replace(/^```\\s*/i, '')\n .replace(/```\\s*$/i, '')\n .trim();\n\nconst parsed = JSON.parse(cleaned);\n\nreturn [{\n json: {\n score: parsed.score,\n decision: parsed.decision,\n candidate_name: parsed.candidate_name,\n summary: parsed.summary,\n key_skills: parsed.key_skills,\n candidate_email: $('Watch Inbox for CV Emails').first().json.from.value[0].address,\n original_subject: $('Watch Inbox for CV Emails').first().json.subject\n },\n binary: $('Watch Inbox for CV Emails').first().binary\n}];"
},
"typeVersion": 2
},
{
"id": "7e42598e-b1ab-4930-acbd-7708f4330705",
"name": "Shortlisted or Rejected?",
"type": "n8n-nodes-base.if",
"position": [
896,
0
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 3,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b2e55467-74a7-49ce-9631-b6f61c9cee89",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.decision }}",
"rightValue": "shortlisted"
}
]
}
},
"typeVersion": 2.3
},
{
"id": "72dc86a0-3a33-4e18-9e99-03c4b9bd717f",
"name": "Notify HR with CV Summary",
"type": "n8n-nodes-base.emailSend",
"position": [
1200,
-96
],
"parameters": {
"html": "=<!DOCTYPE html>\n<html>\n<head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"></head>\n<body style=\"margin:0;padding:0;background-color:#f5f3ee;font-family:'Georgia',serif;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background-color:#f5f3ee;padding:40px 20px;\">\n <tr>\n <td align=\"center\">\n <table width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n\n <!-- Top accent bar -->\n <tr>\n <td style=\"background:linear-gradient(90deg,#0f0f0f 0%,#1a1a2e 50%,#0f3460 100%);height:4px;border-radius:12px 12px 0 0;\"></td>\n </tr>\n\n <!-- Header -->\n <tr>\n <td style=\"background-color:#ffffff;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;padding:36px 48px 28px;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td>\n <p style=\"margin:0 0 4px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:4px;color:#aaa;text-transform:uppercase;\">AppStoneLab Technologies</p>\n <h1 style=\"margin:0;font-family:'Georgia',serif;font-size:26px;font-weight:normal;color:#0f0f0f;letter-spacing:-0.5px;\">AI Hiring Pipeline</h1>\n </td>\n <td align=\"right\" style=\"vertical-align:top;\">\n <div style=\"background:#0f3460;color:#fff;font-family:'Courier New',monospace;font-size:10px;font-weight:bold;letter-spacing:2px;padding:6px 12px;border-radius:20px;white-space:nowrap;\">\u2713 SHORTLISTED</div>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <!-- Score Banner -->\n <tr>\n <td style=\"background:linear-gradient(135deg,#1a1a2e 0%,#16213e 50%,#0f3460 100%);border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;padding:28px 48px;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td>\n <p style=\"margin:0 0 6px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#88aacc;text-transform:uppercase;\">Candidate Score</p>\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:52px;font-weight:bold;color:#ffffff;line-height:1;\">{{ $json.score }}<span style=\"font-size:20px;color:#88aacc;\">/100</span></p>\n </td>\n <td align=\"right\" style=\"vertical-align:middle;\">\n <p style=\"margin:0 0 4px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#88aacc;text-transform:uppercase;\">Position</p>\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:18px;color:#ffffff;\">AI Engineer</p>\n <p style=\"margin:4px 0 0 0;font-family:'Courier New',monospace;font-size:10px;color:#88aacc;\">Surat, India</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <!-- Candidate Info -->\n <tr>\n <td style=\"background-color:#ffffff;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;padding:32px 48px 24px;\">\n <p style=\"margin:0 0 20px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#aaa;text-transform:uppercase;border-bottom:1px solid #e8e4dc;padding-bottom:12px;\">Candidate Details</p>\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td style=\"padding:10px 0;border-bottom:1px solid #f0ede6;width:40%;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:11px;color:#aaa;text-transform:uppercase;letter-spacing:1px;\">Full Name</p>\n </td>\n <td style=\"padding:10px 0;border-bottom:1px solid #f0ede6;\">\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:15px;color:#1a1a1a;\">{{ $json.candidate_name }}</p>\n </td>\n </tr>\n <tr>\n <td style=\"padding:10px 0;border-bottom:1px solid #f0ede6;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:11px;color:#aaa;text-transform:uppercase;letter-spacing:1px;\">Email</p>\n </td>\n <td style=\"padding:10px 0;border-bottom:1px solid #f0ede6;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:13px;color:#0f3460;\">{{ $json.candidate_email }}</p>\n </td>\n </tr>\n <tr>\n <td style=\"padding:10px 0;border-bottom:1px solid #f0ede6;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:11px;color:#aaa;text-transform:uppercase;letter-spacing:1px;\">Key Skills</p>\n </td>\n <td style=\"padding:10px 0;border-bottom:1px solid #f0ede6;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:12px;color:#1a6b3c;\">{{ $json.key_skills }}</p>\n </td>\n </tr>\n <tr>\n <td style=\"padding:10px 0;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:11px;color:#aaa;text-transform:uppercase;letter-spacing:1px;\">Applied Via</p>\n </td>\n <td style=\"padding:10px 0;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:12px;color:#888;\">Email</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <!-- AI Summary -->\n <tr>\n <td style=\"background-color:#f9f7f2;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;padding:28px 48px;border-top:1px solid #ece9e0;\">\n <p style=\"margin:0 0 14px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#aaa;text-transform:uppercase;border-bottom:1px solid #e8e4dc;padding-bottom:12px;\">AI Assessment Summary</p>\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:15px;line-height:1.8;color:#444;\">{{ $json.summary }}</p>\n </td>\n </tr>\n\n <!-- CV Note / Footer -->\n <tr>\n <td style=\"background-color:#ffffff;border:1px solid #e8e4dc;border-top:1px solid #ece9e0;padding:20px 48px;border-radius:0 0 12px 12px;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td>\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:11px;color:#888;\">\ud83d\udcce Original CV is attached to this email</p>\n </td>\n <td align=\"right\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:10px;color:#ccc;\">Powered by AppStoneLab AI Pipeline</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>",
"options": {
"attachments": "attachment_0"
},
"subject": "=\u2705 Shortlisted: {{ $json.candidate_name }} | AI Engineer | Score: {{ $json.score }}/100",
"toEmail": "{HR_EMAIL}",
"fromEmail": "{SENDER_EMAIL}"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "a40e915e-4935-49e7-9445-fa0477ee9d8f",
"name": "Send Interview Invite to Candidate",
"type": "n8n-nodes-base.emailSend",
"position": [
1552,
-96
],
"parameters": {
"html": "=<!DOCTYPE html>\n<html>\n<head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"></head>\n<body style=\"margin:0;padding:0;background-color:#f5f3ee;font-family:'Georgia',serif;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background-color:#f5f3ee;padding:40px 20px;\">\n <tr>\n <td align=\"center\">\n <table width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n\n <!-- Top accent bar -->\n <tr>\n <td style=\"background:linear-gradient(90deg,#0f0f0f 0%,#1a1a2e 50%,#0f3460 100%);height:4px;border-radius:12px 12px 0 0;\"></td>\n </tr>\n\n <!-- Header -->\n <tr>\n <td style=\"background-color:#ffffff;padding:40px 48px 32px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;\">\n <p style=\"margin:0 0 6px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:4px;color:#999;text-transform:uppercase;\">AppStoneLab Technologies</p>\n <h1 style=\"margin:0;font-family:'Georgia',serif;font-size:30px;font-weight:normal;color:#0f0f0f;letter-spacing:-0.5px;line-height:1.3;\">You've been<br><em style=\"color:#0f3460;\">shortlisted.</em></h1>\n </td>\n </tr>\n\n <!-- Divider with name -->\n <tr>\n <td style=\"background-color:#0f0f0f;padding:20px 48px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td>\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#666;text-transform:uppercase;\">Congratulations</p>\n <p style=\"margin:4px 0 0 0;font-family:'Georgia',serif;font-size:20px;color:#ffffff;\">{{ $('Parse AI Response + Pass Binary').item.json.candidate_name }}</p>\n </td>\n <td align=\"right\">\n <div style=\"background:#00ff88;color:#000;font-family:'Courier New',monospace;font-size:9px;font-weight:bold;letter-spacing:2px;padding:6px 14px;border-radius:20px;\">AI ENGINEER ROLE</div>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <!-- Body -->\n <tr>\n <td style=\"background-color:#ffffff;padding:36px 48px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;\">\n <p style=\"margin:0 0 20px 0;font-family:'Georgia',serif;font-size:16px;line-height:1.8;color:#333333;\">\n Thank you for applying for the <strong>AI Engineer</strong> position at AppStoneLab Technologies. We've carefully reviewed your profile and are genuinely excited about what you bring to the table.\n </p>\n <p style=\"margin:0 0 32px 0;font-family:'Georgia',serif;font-size:16px;line-height:1.8;color:#333333;\">\n We'd love to have a conversation with you. Please use the button below to schedule your interview at a time that works best for you.\n </p>\n\n <!-- CTA Button -->\n <table cellpadding=\"0\" cellspacing=\"0\" style=\"margin:0 auto 32px;\">\n <tr>\n <td style=\"background-color:#0f0f0f;border-radius:6px;padding:0;\">\n <a href=\"YOUR_CALENDLY_OR_CAL_LINK_HERE\" style=\"display:block;padding:16px 40px;font-family:'Courier New',monospace;font-size:12px;font-weight:bold;letter-spacing:3px;color:#ffffff;text-decoration:none;text-transform:uppercase;\">Schedule Interview \u2192</a>\n </td>\n </tr>\n </table>\n\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:14px;line-height:1.8;color:#888888;\">\n If you have any questions or need to reschedule, simply reply to this email \u2014 we're happy to help.\n </p>\n </td>\n </tr>\n\n <!-- What to expect -->\n <tr>\n <td style=\"background-color:#f9f7f2;padding:28px 48px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;border-top:1px solid #eee;\">\n <p style=\"margin:0 0 16px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#999;text-transform:uppercase;\">What to Expect</p>\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td style=\"padding:8px 0;vertical-align:top;width:24px;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:12px;color:#0f3460;\">01</p>\n </td>\n <td style=\"padding:8px 0;\">\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:14px;color:#444;\">A 30\u201345 min technical discussion about your experience and projects</p>\n </td>\n </tr>\n <tr>\n <td style=\"padding:8px 0;vertical-align:top;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:12px;color:#0f3460;\">02</p>\n </td>\n <td style=\"padding:8px 0;\">\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:14px;color:#444;\">Questions about AI/ML, LangChain, agentic systems, and your approach to problem-solving</p>\n </td>\n </tr>\n <tr>\n <td style=\"padding:8px 0;vertical-align:top;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:12px;color:#0f3460;\">03</p>\n </td>\n <td style=\"padding:8px 0;\">\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:14px;color:#444;\">Time for you to ask us anything about the role, team, and culture</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <!-- Footer -->\n <tr>\n <td style=\"background-color:#ffffff;padding:28px 48px;border:1px solid #e8e4dc;border-top:1px solid #eee;border-radius:0 0 12px 12px;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td>\n <p style=\"margin:0 0 4px 0;font-family:'Georgia',serif;font-size:14px;color:#333;\">Warm regards,</p>\n <p style=\"margin:0 0 2px 0;font-family:'Georgia',serif;font-size:15px;font-weight:bold;color:#0f0f0f;\">HR Team, AppStoneLab</p>\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:11px;color:#999;\">hr@appstonelab.com \u00b7 +91 78598 00422</p>\n </td>\n <td align=\"right\" style=\"vertical-align:bottom;\">\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:10px;color:#ccc;\">We build, You grow.</p>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>",
"options": {
"attachments": "attachment_0"
},
"subject": "=Interview Invitation \u2014 AI Engineer at AppStoneLab",
"toEmail": "={{ $('Parse AI Response + Pass Binary').item.json.candidate_email }}",
"fromEmail": "{HR_EMAIL}"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
},
{
"id": "78e89300-7984-4f53-913f-f59de720afc1",
"name": "Send Decline Email to Candidate",
"type": "n8n-nodes-base.emailSend",
"position": [
1136,
96
],
"parameters": {
"html": "=<!DOCTYPE html>\n<html>\n<head><meta charset=\"UTF-8\"><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"></head>\n<body style=\"margin:0;padding:0;background-color:#f7f6f3;font-family:'Georgia',serif;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" style=\"background-color:#f7f6f3;padding:40px 20px;\">\n <tr>\n <td align=\"center\">\n <table width=\"600\" cellpadding=\"0\" cellspacing=\"0\" style=\"max-width:600px;width:100%;\">\n\n <!-- Top accent bar -->\n <tr>\n <td style=\"background:linear-gradient(90deg,#2c2c2c 0%,#4a4a4a 100%);height:3px;border-radius:12px 12px 0 0;\"></td>\n </tr>\n\n <!-- Header -->\n <tr>\n <td style=\"background-color:#ffffff;padding:40px 48px 28px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;\">\n <p style=\"margin:0 0 8px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:4px;color:#aaa;text-transform:uppercase;\">AppStoneLab Technologies</p>\n <h1 style=\"margin:0;font-family:'Georgia',serif;font-size:28px;font-weight:normal;color:#1a1a1a;letter-spacing:-0.5px;line-height:1.4;\">Thank you for<br>your application.</h1>\n </td>\n </tr>\n\n <!-- Greeting band -->\n <tr>\n <td style=\"background-color:#f2f0eb;padding:18px 48px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;border-top:1px solid #e8e4dc;\">\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:15px;color:#555;\">Dear <strong style=\"color:#1a1a1a;\">{{ $('Parse AI Response + Pass Binary').item.json.candidate_name }}</strong>,</p>\n </td>\n </tr>\n\n <!-- Body -->\n <tr>\n <td style=\"background-color:#ffffff;padding:36px 48px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;\">\n <p style=\"margin:0 0 20px 0;font-family:'Georgia',serif;font-size:15px;line-height:1.9;color:#444;\">\n We sincerely appreciate the time and effort you invested in applying for the <strong>AI Engineer</strong> position at AppStoneLab Technologies. It means a great deal to us that you considered being part of our team.\n </p>\n <p style=\"margin:0 0 20px 0;font-family:'Georgia',serif;font-size:15px;line-height:1.9;color:#444;\">\n After carefully reviewing all applications, we have decided to move forward with candidates whose experience more closely aligns with our current requirements. This was not an easy decision \u2014 we received many strong profiles.\n </p>\n <p style=\"margin:0;font-family:'Georgia',serif;font-size:15px;line-height:1.9;color:#444;\">\n We genuinely encourage you to continue building on your skills and to apply again for future openings. Your background shows real promise, and the right opportunity may be just around the corner.\n </p>\n </td>\n </tr>\n\n <!-- Encouragement box -->\n <tr>\n <td style=\"background-color:#f9f7f2;padding:28px 48px;border-left:1px solid #e8e4dc;border-right:1px solid #e8e4dc;border-top:1px solid #ece9e0;\">\n <table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td style=\"width:3px;background-color:#1a1a1a;border-radius:3px;vertical-align:top;\"> </td>\n <td style=\"padding-left:20px;\">\n <p style=\"margin:0 0 6px 0;font-family:'Courier New',monospace;font-size:10px;letter-spacing:3px;color:#888;text-transform:uppercase;\">Keep an eye on us</p>\n <p style=\"margin:0 0 12px 0;font-family:'Georgia',serif;font-size:14px;line-height:1.7;color:#555;\">New roles open regularly as we grow. Visit our careers page to see what's next.</p>\n <a href=\"https://appstonelab.com/career\" style=\"font-family:'Courier New',monospace;font-size:11px;letter-spacing:2px;color:#1a1a1a;text-decoration:underline;text-transform:uppercase;\">appstonelab.com/career \u2192</a>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <!-- Footer -->\n <tr>\n <td style=\"background-color:#ffffff;padding:28px 48px;border:1px solid #e8e4dc;border-top:1px solid #ece9e0;border-radius:0 0 12px 12px;\">\n <p style=\"margin:0 0 4px 0;font-family:'Georgia',serif;font-size:14px;color:#555;\">With warm wishes,</p>\n <p style=\"margin:0 0 2px 0;font-family:'Georgia',serif;font-size:15px;font-weight:bold;color:#1a1a1a;\">HR Team, AppStoneLab Technologies</p>\n <p style=\"margin:0 0 16px 0;font-family:'Courier New',monospace;font-size:11px;color:#aaa;\">hr@appstonelab.com \u00b7 +91 78598 00422</p>\n <p style=\"margin:0;font-family:'Courier New',monospace;font-size:10px;color:#ccc;border-top:1px solid #f0ede6;padding-top:16px;\">We build, You grow. \u00b7 AppStoneLab Technologies \u00b7 Surat, India</p>\n </td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>",
"options": {},
"subject": "=Your Application \u2014 AI Engineer at AppStoneLab",
"toEmail": "={{ $('Parse AI Response + Pass Binary').item.json.candidate_email }}",
"fromEmail": "{HR_EMAIL}"
},
"credentials": {
"smtp": {
"name": "<your credential>"
}
},
"typeVersion": 2.1
}
],
"active": false,
"settings": {
"binaryMode": "separate",
"availableInMCP": false,
"executionOrder": "v1"
},
"versionId": "23b7ebfe-c09c-4691-87f2-366d03cb0e76",
"connections": {
"AI Score CV": {
"main": [
[
{
"node": "Parse AI Response + Pass Binary",
"type": "main",
"index": 0
}
]
]
},
"OCR: Extract CV Text": {
"main": [
[
{
"node": "AI Score CV",
"type": "main",
"index": 0
}
]
]
},
"Shortlisted or Rejected?": {
"main": [
[
{
"node": "Notify HR with CV Summary",
"type": "main",
"index": 0
}
],
[
{
"node": "Send Decline Email to Candidate",
"type": "main",
"index": 0
}
]
]
},
"Notify HR with CV Summary": {
"main": [
[
{
"node": "Send Interview Invite to Candidate",
"type": "main",
"index": 0
}
]
]
},
"Watch Inbox for CV Emails": {
"main": [
[
{
"node": "OCR: Extract CV Text",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Response + Pass Binary": {
"main": [
[
{
"node": "Shortlisted or Rejected?",
"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.
googlePalmApiimapmistralCloudApismtp
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Stop manually reading every CV. This workflow watches your inbox, extracts CV text using Mistral OCR, scores every candidate against your job description using Google Gemini AI, and automatically routes them - shortlisted candidates get a professional interview invite, rejected…
Source: https://n8n.io/workflows/13990/ — 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.
Use cases are many: Perfect for freelancers managing client invoices, small businesses handling supplier bills, accounting departments processing high invoice volumes, or anyone who wants to eliminate
This workflow automatically analyzes incoming emails using AI, categorizes them, routes them to the appropriate department, logs the results in Excel 365, and sends notifications to the responsible te
This automated n8n workflow provides an AI-powered email classifier for support emails, automatically categorizing incoming emails and routing them to the appropriate inbox, creating a Jira task, and
This template and YouTube video goes over 8 different examples of how we can utilize Binary data within n8n.
This workflow is for anyone who wants to stay informed without the overwhelm. Whether you're tracking industry news, following your favorite blogs, monitoring competitors, or just keeping up with topi