HireMind – Flujo de procesamiento inteligente de currículums impulsado por IA

Avanzado

Este es unHR, AI Summarizationflujo de automatización del dominio deautomatización que contiene 26 nodos.Utiliza principalmente nodos como If, Code, Slack, SendGrid, FormTrigger. Filtrado y evaluación de currículums con IA para RRHH: GPT-4 y Google Workspace

Requisitos previos
  • Bot Token de Slack o URL de Webhook
  • Credenciales de API de Google Drive
  • Credenciales de API de Google Sheets
  • Clave de API de OpenAI
Vista previa del flujo de trabajo
Visualización de las conexiones entre nodos, con soporte para zoom y panorámica
Exportar flujo de trabajo
Copie la siguiente configuración JSON en n8n para importar y usar este flujo de trabajo
{
  "id": "vuGh0YMfK0iP9dnY",
  "meta": {
    "instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
    "templateId": "5453",
    "templateCredsSetupCompleted": true
  },
  "name": "HireMind – AI-Driven Resume Intelligence Pipeline",
  "tags": [],
  "nodes": [
    {
      "id": "46d85862-de79-4a46-9b59-f27194375af4",
      "name": "Nota adhesiva 1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        1936
      ],
      "parameters": {
        "width": 572,
        "height": 84,
        "content": "## 1. Candidate submit application form (profile & position"
      },
      "typeVersion": 1
    },
    {
      "id": "aa6b6b3f-58ca-4c07-8265-85e3f3278842",
      "name": "Nota adhesiva 5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        960,
        1968
      ],
      "parameters": {
        "width": 440,
        "height": 592,
        "content": "## 4. HR AI Agent evaluate candidate matching based on profile & job description\n- Evaluate candidate profile against the selected position job description (download from google drive)\n- Output follow structured template (defined by JSON)"
      },
      "typeVersion": 1
    },
    {
      "id": "244d87cc-877a-4080-bb9b-6ea44aa76540",
      "name": "Formulario de solicitud",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -544,
        2096
      ],
      "webhookId": "c0f02df1-9bf8-468f-a33d-e67655bfa920",
      "parameters": {
        "options": {
          "customCss": ":root {\n\t--font-family: 'Open Sans', sans-serif;\n\t--font-weight-normal: 400;\n\t--font-weight-bold: 600;\n\t--font-size-body: 12px;\n\t--font-size-label: 14px;\n\t--font-size-test-notice: 12px;\n\t--font-size-input: 14px;\n\t--font-size-header: 20px;\n\t--font-size-paragraph: 14px;\n\t--font-size-link: 12px;\n\t--font-size-error: 12px;\n\t--font-size-html-h1: 28px;\n\t--font-size-html-h2: 20px;\n\t--font-size-html-h3: 16px;\n\t--font-size-html-h4: 14px;\n\t--font-size-html-h5: 12px;\n\t--font-size-html-h6: 10px;\n\t--font-size-subheader: 14px;\n\n\t/* Colors */\n\t--color-background: #fbfcfe;\n\t--color-test-notice-text: #e6a23d;\n\t--color-test-notice-bg: #fefaf6;\n\t--color-test-notice-border: #f6dcb7;\n\t--color-card-bg: #ffffff;\n\t--color-card-border: #dbdfe7;\n\t--color-card-shadow: rgba(99, 77, 255, 0.06);\n\t--color-link: #7e8186;\n\t--color-header: #525356;\n\t--color-label: #555555;\n\t--color-input-border: #dbdfe7;\n\t--color-input-text: #71747A;\n\t--color-focus-border: rgb(90, 76, 194);\n\t--color-submit-btn-bg: #0000FF; /* Changed to blue */\n\t--color-submit-btn-text: #ffffff;\n\t--color-error: #ea1f30;\n\t--color-required: #ff6d5a;\n\t--color-clear-button-bg: #7e8186;\n\t--color-html-text: #555;\n\t--color-html-link: #ff6d5a;\n\t--color-header-subtext: #7e8186;\n\n\t/* Border Radii */\n\t--border-radius-card: 8px;\n\t--border-radius-input: 6px;\n\t--border-radius-clear-btn: 50%;\n\t--card-border-radius: 8px;\n\n\t/* Spacing */\n\t--padding-container-top: 24px;\n\t--padding-card: 24px;\n\t--padding-test-notice-vertical: 12px;\n\t--padding-test-notice-horizontal: 24px;\n\t--margin-bottom-card: 16px;\n\t--padding-form-input: 12px;\n\t--card-padding: 24px;\n\t--card-margin-bottom: 16px;\n\n\t/* Dimensions */\n\t--container-width: 448px;\n\t--submit-btn-height: 48px;\n\t--checkbox-size: 18px;\n\n\t/* Others */\n\t--box-shadow-card: 0px 4px 16px 0px var(--color-card-shadow);\n\t--opacity-placeholder: 0.5;\n}\n",
          "appendAttribution": false
        },
        "formTitle": "Candidate Form",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Name",
              "placeholder": "Name"
            },
            {
              "fieldType": "email",
              "fieldLabel": "Email",
              "placeholder": "Email"
            },
            {
              "fieldType": "file",
              "fieldLabel": "CV",
              "requiredField": true,
              "acceptFileTypes": ".pdf"
            },
            {
              "fieldType": "dropdown",
              "fieldLabel": "Job Role",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Talent acquisition Specialist (Intermediate)"
                  },
                  {
                    "option": "Senior Tester/QC (Web Apps, Mobile, API, Database)"
                  },
                  {
                    "option": "Lead Full-stack Developer (.NET, Angular/React.js)"
                  }
                ]
              },
              "requiredField": true
            }
          ]
        },
        "formDescription": "Please ,fill the required fields , and we'll get in touch with you soon !"
      },
      "typeVersion": 2.2
    },
    {
      "id": "abf322d8-4656-41cc-85da-6224131078fa",
      "name": "Extraer perfil",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        -320,
        2224
      ],
      "parameters": {
        "options": {},
        "operation": "pdf",
        "binaryPropertyName": "CV"
      },
      "typeVersion": 1
    },
    {
      "id": "25ff720c-6af7-4be9-9043-1a41577c9df3",
      "name": "Analizador json",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        64,
        2416
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"full_name\": \"\",\n  \"job_title\": \"\",\n  \"summary\": \"\",\n  \"contact\": {\n    \"email\": \"\",\n    \"phone\": \"\",\n    \"address\": \"\",\n    \"linkedin\": \"\",\n    \"website\": \"\"\n  },\n  \"education\": [\n    {\n      \"degree\": \"\",\n      \"field_of_study\": \"\",\n      \"institution\": \"\",\n      \"location\": \"\",\n      \"start_year\": \"\",\n      \"end_year\": \"\"\n    }\n  ],\n  \"certifications\": [\n    {\n      \"name\": \"\",\n      \"issuer\": \"\",\n      \"date_obtained\": \"\",\n      \"expiration_date\": \"\"\n    }\n  ],\n  \"work_experience\": [\n    {\n      \"company\": \"\",\n      \"position\": \"\",\n      \"location\": \"\",\n      \"start_date\": \"\",\n      \"end_date\": \"\",\n      \"responsibilities\": [\n        \"\"\n      ],\n      \"achievements\": [\n        \"\"\n      ]\n    }\n  ],\n  \"skills\": {\n    \"technical_skills\": [\n      \"\"\n    ],\n    \"soft_skills\": [\n      \"\"\n    ],\n    \"languages\": [\n      {\n        \"language\": \"\",\n        \"proficiency\": \"\"\n      }\n    ],\n    \"tools_and_technologies\": [\n      \"\"\n    ]\n  },\n  \"projects\": [\n    {\n      \"name\": \"\",\n      \"description\": \"\",\n      \"technologies_used\": [\n        \"\"\n      ],\n      \"role\": \"\",\n      \"duration\": \"\"\n    }\n  ],\n  \"awards\": [\n    {\n      \"title\": \"\",\n      \"issuer\": \"\",\n      \"date\": \"\",\n      \"description\": \"\"\n    }\n  ],\n  \"volunteer_experience\": [\n    {\n      \"organization\": \"\",\n      \"role\": \"\",\n      \"description\": \"\",\n      \"start_date\": \"\",\n      \"end_date\": \"\"\n    }\n  ],\n  \"additional_information\": {\n    \"availability\": \"\",\n    \"preferred_location\": \"\",\n    \"salary_expectation\": \"\",\n    \"work_authorization\": \"\",\n    \"other_notes\": \"\"\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "54f9011b-e706-4472-b574-264836bbbedc",
      "name": "Modelo gpt4-1",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -64,
        2416
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "PPSwAKeLQYgAPobT",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "f27eb081-8fe1-4a8c-88ca-1747047bf3f2",
      "name": "Obtener descripción del puesto",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        304,
        2192
      ],
      "parameters": {
        "options": {},
        "filtersUI": {
          "values": [
            {
              "lookupValue": "={{ $('Application form').item.json['Job Role'] }}",
              "lookupColumn": "Job Role"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15CZPMbxmz-RVYji1fev_6vYeEwpPa3MjewGEPf6aSoA/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "15CZPMbxmz-RVYji1fev_6vYeEwpPa3MjewGEPf6aSoA",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/15CZPMbxmz-RVYji1fev_6vYeEwpPa3MjewGEPf6aSoA/edit?usp=drivesdk",
          "cachedResultName": "Positions"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L670Nly6gZGo71br",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.6,
      "alwaysOutputData": true
    },
    {
      "id": "0c906e55-f6ec-44ef-b5ff-fdd1443fe079",
      "name": "Descargar archivo",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        528,
        2192
      ],
      "parameters": {
        "fileId": {
          "__rl": true,
          "mode": "url",
          "value": "={{ $json['Job Description'] }}"
        },
        "options": {},
        "operation": "download"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "5a8e8116-feaa-4007-abdb-91a2a12bbce8",
      "name": "Extraer descripción del trabajo",
      "type": "n8n-nodes-base.extractFromFile",
      "position": [
        752,
        2192
      ],
      "parameters": {
        "options": {},
        "operation": "pdf"
      },
      "typeVersion": 1
    },
    {
      "id": "f9b079d1-d15c-4deb-b71f-57222761f031",
      "name": "Nota adhesiva",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        1888
      ],
      "parameters": {
        "width": 588,
        "height": 676,
        "content": "## 2. Candidate profile analyzer\n- Upload candidate profile to Google Drive folder for later processing\n- Extract candidate information from PDF file\n- Transform candidate information to expected JSON format for later use (send message, add to evaluation sheet)"
      },
      "typeVersion": 1
    },
    {
      "id": "f1dbe09a-7e98-453f-8715-afb810a769be",
      "name": "Nota adhesiva 2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        1984
      ],
      "parameters": {
        "width": 636,
        "height": 372,
        "content": "## 3. Download selected job description\n- Get position name & job description URL from google sheet based on candidate application form\n- Download job description file from Google Drive\n- Extract data from job description PDF file to be used in the next steps"
      },
      "typeVersion": 1
    },
    {
      "id": "71fb65f2-972a-4dc3-8dd3-ba74b456f7fe",
      "name": "Nota adhesiva 6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1488,
        1920
      ],
      "parameters": {
        "width": 824,
        "height": 768,
        "content": "## 5. Update evaluation result to target platform\n- Candidate with overall fit score under 8 will be considered as unqualified, config in the \"Candidate qualified\" node\n- Send message to Slack, Email\n- Add new rows in CV evaluation tracking sheet (Google Drive), you need config \"Update evaluation sheet\" node with your own URL (empty sheet, column header and rows will be auto-populated)"
      },
      "typeVersion": 1
    },
    {
      "id": "b30b9cbd-bffd-4a5b-8185-3334b9b2b8ad",
      "name": "Agente experto en RRHH",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        1040,
        2192
      ],
      "parameters": {
        "text": "=Evaluate the candidate for the following job:\n\n--- Job Description ---\nPosition: {{ $('Download file').item.json['Job Role'] }}\nJob Description: {{ $('Extract Job Description').item.json.text }}\n------------------------\n\nBelow is the extracted candidate profile:\n{{ $('Extract profile').item.json.text }}",
        "messages": {
          "messageValues": [
            {
              "message": "You are a professional AI hiring assistant tasked with evaluating job candidates based on their structured resume data and a provided job description. Your goal is to assess the candidate’s suitability for the role, identifying key matches and gaps in skills, experience, and qualifications.  You will receive: - `candidate_profile`: a JSON object containing extracted information from the candidate's resume. - `job_description`: a plain text description of the role.  Your job is to: 1. Parse and understand the key job requirements (e.g., required skills, years of experience, qualifications). 2. Match the candidate's profile to the job requirements. 3. Provide a structured evaluation with ratings and reasoning.  Always be objective, use professional language, and format your output clearly using markdown."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.5
    },
    {
      "id": "1355a107-54ef-4136-9d63-d3b2a7273143",
      "name": "Agente analizador de perfiles",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -96,
        2192
      ],
      "parameters": {
        "text": "=Please extract all relevant information from this candiadte:\nCV Content:\n===\n{{ $json[\"text\"] }}\n===",
        "options": {
          "systemMessage": ""
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.1
    },
    {
      "id": "94149ee7-1845-4b7a-a2d3-09dea44b1670",
      "name": "Actualizar hoja de evaluación",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1808,
        2528
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [
            {
              "id": "overall_fit_score",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "overall_fit_score",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "recommendation",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "recommendation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "required_experience",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "required_experience",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "skill_match",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "skill_match",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "education_certifications",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "education_certifications",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "soft_skills_traits",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "soft_skills_traits",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "strengths",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "strengths",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "concerns_or_gaps",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "concerns_or_gaps",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "final_notes",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "final_notes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [
            "output"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "url",
          "value": "https://docs.google.com/spreadsheets/d/1gpuTL7iK2LoDJAdHE-LBFiBEU6hLqSTxWjThMJyi7SY/edit?usp=drive_link"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "L670Nly6gZGo71br",
          "name": "Google Sheets account 2"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "3a554846-b2b7-4880-9137-103be85ea072",
      "name": "Mapear columnas",
      "type": "n8n-nodes-base.code",
      "position": [
        1568,
        2192
      ],
      "parameters": {
        "jsCode": "const evalResult = $input.first().json.output\nconst profile = $('Profile Analyzer Agent').first().json.output;\nreturn [\n  {\n    json: {\n      full_name:profile.full_name,\n      email: profile.contact.email,\n      phone: profile.contact.phone,\n      position: $('Application form').first().json['Job Role'],\n      overall_fit_score: evalResult.overall_fit_score,\n      recommendation: evalResult.recommendation,\n      strengths: evalResult.strengths.join(', '),\n      concerns_or_gaps: evalResult.concerns_or_gaps.join(', '),\n      final_notes: evalResult.final_notes,\n      submitted_date: $now.toFormat(\"yyyyLLdd-HHmmss\")\n    }\n  }\n];"
      },
      "typeVersion": 2
    },
    {
      "id": "97f45dd9-1858-4ae3-854f-fd24404864d0",
      "name": "Nota adhesiva 3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -960,
        2064
      ],
      "parameters": {
        "width": 364,
        "height": 468,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/SmartHR+form.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "d014e9a0-47c0-4106-8588-a240f2faaf2e",
      "name": "Subir a Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        -320,
        2048
      ],
      "parameters": {
        "name": "=cv-{{ $now.toFormat(\"yyyyLLdd-HHmmss\") }}-{{ $json.CV[0].filename }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "url",
          "value": "https://drive.google.com/drive/u/0/folders/1J9GnGlJ70ppf88eZGrhLIo3jxIaqT1u7"
        },
        "inputDataFieldName": "CV"
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "id": "fC471es5gk5Mm900",
          "name": "Google Drive account"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "0251fd30-6d6c-4df9-9bae-11f2f29947bd",
      "name": "Modelo gpt-4-1 2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        1072,
        2416
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4.1-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "PPSwAKeLQYgAPobT",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "8457927f-a7a4-458b-9bee-fa820fa60c3f",
      "name": "Analizador json 2",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        1200,
        2416
      ],
      "parameters": {
        "jsonSchemaExample": "{\n  \"overall_fit_score\": 0,\n  \"recommendation\": \"\", \n  \"job_match_summary\": {\n    \"required_experience\": \"\",\n    \"skill_match\": \"\",\n    \"education_certifications\": \"\",\n    \"soft_skills_traits\": \"\"\n  },\n  \"strengths\": [\n    \"\"\n  ],\n  \"concerns_or_gaps\": [\n    \"\"\n  ],\n  \"final_notes\": \"\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "cf545d77-0db6-4142-9cef-63e034f867d3",
      "name": "Nota adhesiva 7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2528,
        1856
      ],
      "parameters": {
        "width": 1520,
        "height": 2000,
        "content": "## Try It Out, HireMind – AI-Driven Resume Intelligence Pipeline!\n### This n8n template demonstrates how to automate resume screening and evaluation using AI to improve candidate processing and reduce manual HR effort.\n- This workflow is ideal for HR teams and recruiters who want to streamline candidate screening by combining form submissions, resume parsing, job description matching, and AI evaluation into a single, automated process.\n\n---\n\n### How it works\n\n* A candidate submits their application using a form that includes name, email, CV (PDF), and a selected job role.\n* The CV is uploaded to Google Drive for record-keeping and later reference.\n* The **Profile Analyzer Agent** reads the uploaded resume, extracts structured candidate information, and transforms it into a standardized JSON format using GPT-4 and a custom output parser.\n* The corresponding job description PDF file is automatically retrieved from a Google Sheet based on the selected job role.\n* The **HR Expert Agent** evaluates the candidate profile against the job description using another GPT-4 model, generating a structured assessment that includes strengths, gaps, and an overall recommendation.\n* The evaluation result is parsed and formatted for output.\n* The evaluation score will be used to mark candidate as qualified or unqualified, based on that an email will be sent to applicant or the message will be send to hiring team for the next process\n* The final evaluation result will be stored in a Google Sheet for long-term tracking and reporting.\n\n### How to use\n\n#### Google drive structure\n\n├── jd                        # Google drive folder to store your JD (pdf)\n│   ├── Backend_Engineer.pdf\n│   ├── Azure_DevOps_Lead.pdf\n│   └── ...\n│\n├── cv                        # Google drive folder, where workflow upload candidate resume\n│   ├── John_Doe_DevOps.pdf\n│   ├── Jane_Smith_FullStack.pdf\n│   └── ...\n│\n├── Positions (Sample: https://docs.google.com/spreadsheets/d/1pW0muHp1NXwh2GiRvGVwGGRYCkcMR7z8NyS9wvSPYjs/edit?usp=sharing)  # 📋 Mapping Table: Job Role ↔ Job Description (Link)\n│   └── Columns:\n│       - Job Role\n│       - Job Description File URL (PDF in `jd/`)\n│\n└── Evaluation form (Google Sheet)  # ✅ Final AI Evaluation Results\n\n#### Usage\n       \n### How to use\n\n1. **Set up credentials and integrations:**\n   - Connect your **OpenAI** account (GPT-4 API).\n   - Enable **Google Cloud APIs**:\n     - Google Sheets API (for reading job roles and saving evaluation results)\n     - Google Drive API (for storing CVs and job descriptions)\n   - Set up **SendGrid** (to send email responses to candidates)\n   - Connect **Slack** (to send messages to the hiring team)\n\n2. **Prepare your Google Drive structure:**\n   - Create a root folder, then inside it create:\n     - `/jd` → Store all job descriptions in PDF format  \n     - `/cv` → This is where candidate CVs will be uploaded automatically\n   - Create a **Google Sheet** named `Positions` with the following structure:\n     ```\n     | Job Role                     | Job Description Link                   |\n     |------------------------------|----------------------------------------|\n     | Azure DevOps Engineer        | https://drive.google.com/xxx/jd1.pdf   |\n     | Full-Stack Developer (.NET)  | https://drive.google.com/xxx/jd2.pdf   |\n     ```\n\n3. **Update your application form:**\n   - Use the built-in form, or connect your own (e.g., Typeform, Tally, Webflow, etc.)\n   - Ensure the **Job Role** dropdown matches exactly the roles in the `Positions` sheet\n\n4. **Run the AI workflow:**\n   - When a candidate submits the form:\n     - Their CV is uploaded to the `/cv` folder\n     - The job role is used to match the JD from `/jd`\n     - The **Profile Analyzer Agent** extracts candidate info from the CV\n     - The **HR Expert Agent** evaluates the candidate against the matched JD using GPT-4\n\n5. **Distribute and store results:**\n   - Store the evaluation results in the `Evaluation form` Google Sheet\n   - Optionally notify your team:\n     - ✉️ Send an email to the candidate using SendGrid\n     - 💬 Send a Slack message to the hiring team with a summary and next steps\n\n### Requirements\n\n* OpenAI GPT-4 account for both Profile Analyzer and HR Expert Agents\n* Google Drive account (for storing CVs and evaluation sheet)\n* Google Sheets API credentials (for JD source and evaluation results)\n\n### Need Help?\n\nJoin the [n8n Discord](https://discord.com/invite/XPKeKXeB7d) or ask in the [n8n Forum](https://community.n8n.io/)!\n\nHappy Hiring! 🚀"
      },
      "typeVersion": 1
    },
    {
      "id": "cbe57cf2-3f37-4bb0-9e15-526028bdc04a",
      "name": "Nota adhesiva 4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        272,
        2384
      ],
      "parameters": {
        "width": 640,
        "height": 128,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Screenshot+2025-07-29+at+12.54.54%E2%80%AFPM.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "baf46ccf-9906-4cfd-a1d1-bb8203294d98",
      "name": "Nota adhesiva 8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2336,
        2176
      ],
      "parameters": {
        "width": 960,
        "height": 512,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/SmartHR+form+3.jpg \"Sample evaluation sheet data\")"
      },
      "typeVersion": 1
    },
    {
      "id": "21a6ab2d-be94-480b-be22-fad370f520d2",
      "name": "Enviar correo al candidato con el resultado",
      "type": "n8n-nodes-base.sendGrid",
      "disabled": true,
      "position": [
        2144,
        2320
      ],
      "parameters": {
        "subject": "=Update on Your Application for {{ $json.position }}",
        "toEmail": "={{ $json.email }}",
        "fromName": "Hiring Team",
        "resource": "mail",
        "fromEmail": "sender@example.com",
        "contentType": "text/html",
        "contentValue": "=<!DOCTYPE html>\n<html>\n<head>\n  <meta charset=\"UTF-8\">\n  <title>Application Update</title>\n  <style>\n    body {\n      font-family: Arial, sans-serif;\n      background-color: #f4f6f9;\n      color: #333;\n      padding: 20px;\n    }\n    .container {\n      max-width: 600px;\n      background-color: #ffffff;\n      margin: auto;\n      padding: 30px;\n      border-radius: 8px;\n      box-shadow: 0 0 10px rgba(0,0,0,0.05);\n    }\n    .header {\n      font-size: 20px;\n      font-weight: bold;\n      color: #2b5cb8;\n      margin-bottom: 20px;\n    }\n    .footer {\n      font-size: 12px;\n      color: #999;\n      text-align: center;\n      margin-top: 40px;\n    }\n  </style>\n</head>\n<body>\n  <div class=\"container\">\n    <div class=\"header\">Application Update</div>\n\n    <p>Hi {{ $json.full_name }},</p>\n\n    <p>Thank you for applying for the <strong>{{ $json.position }}</strong> position.</p>\n\n    <p>We appreciate your interest and the time you took to apply. After careful review, we’ve decided not to move forward with your application at this time.</p>\n\n    <p>We wish you the best in your job search and future opportunities.</p>\n\n    <p>Kind regards,<br>\n    Recruitment Team</p>\n\n    <div class=\"footer\">\n      This is an automated message. Please do not reply.\n    </div>\n  </div>\n</body>\n</html>",
        "additionalFields": {}
      },
      "credentials": {
        "sendGridApi": {
          "id": "O1IzegT4JdKjrzrj",
          "name": "SendGrid account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ca4984c1-c367-4632-bb81-46565bd5e1df",
      "name": "Enviar mensaje vía Slack al equipo de contratación",
      "type": "n8n-nodes-base.slack",
      "disabled": true,
      "position": [
        2144,
        2080
      ],
      "webhookId": "6d1ea29f-86ba-42df-ae9f-3dd510510dae",
      "parameters": {
        "text": "=🎯 Candidate Evaluation Update  Hi team,   We've completed the initial screening and have a qualified candidate for the *{{ $json.position }}* position: **{{ $json.full_name }}**.  📝 Summary: - Fit Score: {{ $json.overall_fit_score }}/10 - Recommendation: {{ $json.recommendation }} - Key Strengths: {{ $json.strengths }}  📎 Full evaluation is available in the tracking sheet.  👉 Please advise on the next steps (e.g., schedule technical interview, team round, etc.).  Thanks!",
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "name",
          "value": "#hiring-channel"
        },
        "otherOptions": {}
      },
      "credentials": {
        "slackApi": {
          "id": "4pYwTjIWqyFJgTSj",
          "name": "Slack account"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "03b884bf-0aa3-4b76-8f6d-cd3664a198d0",
      "name": "¿Candidato calificado?",
      "type": "n8n-nodes-base.if",
      "position": [
        1808,
        2192
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a69c879b-ebf6-4237-b19a-4bb1e4686746",
              "operator": {
                "type": "number",
                "operation": "gte"
              },
              "leftValue": "={{ $('HR Expert Agent').item.json.output.overall_fit_score }}",
              "rightValue": 8
            }
          ]
        }
      },
      "typeVersion": 2.2
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "7928e18c-09b5-4250-a58a-39b4cd6fe021",
  "connections": {
    "3a554846-b2b7-4880-9137-103be85ea072": {
      "main": [
        [
          {
            "node": "94149ee7-1845-4b7a-a2d3-09dea44b1670",
            "type": "main",
            "index": 0
          },
          {
            "node": "03b884bf-0aa3-4b76-8f6d-cd3664a198d0",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "25ff720c-6af7-4be9-9043-1a41577c9df3": {
      "ai_outputParser": [
        [
          {
            "node": "1355a107-54ef-4136-9d63-d3b2a7273143",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "54f9011b-e706-4472-b574-264836bbbedc": {
      "ai_languageModel": [
        [
          {
            "node": "1355a107-54ef-4136-9d63-d3b2a7273143",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "0c906e55-f6ec-44ef-b5ff-fdd1443fe079": {
      "main": [
        [
          {
            "node": "5a8e8116-feaa-4007-abdb-91a2a12bbce8",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "8457927f-a7a4-458b-9bee-fa820fa60c3f": {
      "ai_outputParser": [
        [
          {
            "node": "b30b9cbd-bffd-4a5b-8185-3334b9b2b8ad",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "abf322d8-4656-41cc-85da-6224131078fa": {
      "main": [
        [
          {
            "node": "1355a107-54ef-4136-9d63-d3b2a7273143",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "f27eb081-8fe1-4a8c-88ca-1747047bf3f2": {
      "main": [
        [
          {
            "node": "0c906e55-f6ec-44ef-b5ff-fdd1443fe079",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "b30b9cbd-bffd-4a5b-8185-3334b9b2b8ad": {
      "main": [
        [
          {
            "node": "3a554846-b2b7-4880-9137-103be85ea072",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "0251fd30-6d6c-4df9-9bae-11f2f29947bd": {
      "ai_languageModel": [
        [
          {
            "node": "b30b9cbd-bffd-4a5b-8185-3334b9b2b8ad",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "244d87cc-877a-4080-bb9b-6ea44aa76540": {
      "main": [
        [
          {
            "node": "d014e9a0-47c0-4106-8588-a240f2faaf2e",
            "type": "main",
            "index": 0
          },
          {
            "node": "abf322d8-4656-41cc-85da-6224131078fa",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "03b884bf-0aa3-4b76-8f6d-cd3664a198d0": {
      "main": [
        [
          {
            "node": "ca4984c1-c367-4632-bb81-46565bd5e1df",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "21a6ab2d-be94-480b-be22-fad370f520d2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1355a107-54ef-4136-9d63-d3b2a7273143": {
      "main": [
        [
          {
            "node": "f27eb081-8fe1-4a8c-88ca-1747047bf3f2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5a8e8116-feaa-4007-abdb-91a2a12bbce8": {
      "main": [
        [
          {
            "node": "b30b9cbd-bffd-4a5b-8185-3334b9b2b8ad",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "94149ee7-1845-4b7a-a2d3-09dea44b1670": {
      "main": [
        []
      ]
    },
    "21a6ab2d-be94-480b-be22-fad370f520d2": {
      "main": [
        []
      ]
    }
  }
}
Preguntas frecuentes

¿Cómo usar este flujo de trabajo?

Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.

¿En qué escenarios es adecuado este flujo de trabajo?

Avanzado - Recursos Humanos, Resumen de IA

¿Es de pago?

Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.

Flujos de trabajo relacionados recomendados

TalentFlow AI - Selección masiva de currículums y emparejamiento con descripciones de puestos
cribado masivo de CVs y emparejamiento con descripciones de trabajos para el equipo de HR utilizando GPT-4
If
Code
Merge
+
If
Code
Merge
30 NodosTrung Tran
Recursos Humanos
Extractor de CV Inteligente: De Google Drive a Sheet + Actualización en Slack para Reclutadores
Extractor de CV impulsado por IA: GPT-4 procesa de Google Drive a Sheet y notifica a los reclutadores por Slack
Code
Slack
Filter
+
Code
Slack
Filter
19 NodosTrung Tran
Recursos Humanos
Asistente de entrevistas inteligentes: Preguntas personalizadas basadas en CV, descripción del puesto y rondas
Usar GPT-4 para generar preguntas de entrevista personalizadas basadas en currículum, descripción del puesto y ronda de entrevista
Set
Code
Merge
+
Set
Code
Merge
26 NodosTrung Tran
Recursos Humanos
Construir un Chatbot Impulsado por IA para la Evaluación de Candidatos en Slack
Análisis de CV con IA y Evaluación de Candidatos: Integración de Slack y Hojas de Cálculo de Google
If
Code
Slack
+
If
Code
Slack
29 NodosTrung Tran
Chatbot de IA
🎧 Robot de automatización de soporte de voz IT – conversión de mensajes de voz de Telegram a tickets de JIRA (usando OpenAI Whisper)
Convertir mensajes de voz de Telegram automáticamente en tickets JIRA con Whisper y GPT-4.1 Mini
If
Set
Code
+
If
Set
Code
25 NodosTrung Tran
Gestión de tickets
Proceso SmartSupport: procesamiento automático de solicitudes de IT de correo a Jira con notificaciones de Slack
Convertir correos electrónicos automáticamente en tickets Jira con soluciones de IA y recordatorios de Slack
If
Set
Jira
+
If
Set
Jira
25 NodosTrung Tran
Gestión de tickets
Información del flujo de trabajo
Nivel de dificultad
Avanzado
Número de nodos26
Categoría2
Tipos de nodos13
Descripción de la dificultad

Adecuado para usuarios avanzados, flujos de trabajo complejos con 16+ nodos

Autor
Trung Tran

Trung Tran

@trungtran

Helps small and medium businesses grow with intelligent automation and practical AI tools, no heavy tech team needed.

Enlaces externos
Ver en n8n.io

Compartir este flujo de trabajo

Categorías

Categorías: 34