HireMind – AI 기반 이력서 지능형 처리 워크플로우
고급
이것은HR, AI Summarization분야의자동화 워크플로우로, 26개의 노드를 포함합니다.주로 If, Code, Slack, SendGrid, FormTrigger 등의 노드를 사용하며. HR AI 이력서 선별 및 평가: GPT-4 및 Google Workspace
사전 요구사항
- •Slack Bot Token 또는 Webhook URL
- •Google Drive API 인증 정보
- •Google Sheets API 인증 정보
- •OpenAI API Key
사용된 노드 (26)
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
"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": "메모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": "메모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": "Application form",
"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": "Extract profile",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-320,
2224
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "CV"
},
"typeVersion": 1
},
{
"id": "25ff720c-6af7-4be9-9043-1a41577c9df3",
"name": "json parser",
"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": "gpt4-1 model",
"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": "Get position JD",
"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": "Download file",
"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": "Extract Job Description",
"type": "n8n-nodes-base.extractFromFile",
"position": [
752,
2192
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "f9b079d1-d15c-4deb-b71f-57222761f031",
"name": "메모",
"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": "메모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": "메모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": "HR Expert 에이전트",
"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": "Profile Analyzer 에이전트",
"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": "Update evaluation sheet",
"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": "Map Columns",
"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": "메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-960,
2064
],
"parameters": {
"width": 364,
"height": 468,
"content": ""
},
"typeVersion": 1
},
{
"id": "d014e9a0-47c0-4106-8588-a240f2faaf2e",
"name": "Upload to Google 드라이브",
"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": "gpt-4-1 model 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": "json parser 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": "메모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": "메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
272,
2384
],
"parameters": {
"width": 640,
"height": 128,
"content": ""
},
"typeVersion": 1
},
{
"id": "baf46ccf-9906-4cfd-a1d1-bb8203294d98",
"name": "메모8",
"type": "n8n-nodes-base.stickyNote",
"position": [
2336,
2176
],
"parameters": {
"width": 960,
"height": 512,
"content": ""
},
"typeVersion": 1
},
{
"id": "21a6ab2d-be94-480b-be22-fad370f520d2",
"name": "Send email to candidate about the result",
"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": "Send message via Slack to the hiring team",
"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": "Candidate qualified?",
"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": "Profile Analyzer Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"54f9011b-e706-4472-b574-264836bbbedc": {
"ai_languageModel": [
[
{
"node": "Profile Analyzer Agent",
"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": "HR Expert Agent",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"abf322d8-4656-41cc-85da-6224131078fa": {
"main": [
[
{
"node": "Profile Analyzer Agent",
"type": "main",
"index": 0
}
]
]
},
"f27eb081-8fe1-4a8c-88ca-1747047bf3f2": {
"main": [
[
{
"node": "0c906e55-f6ec-44ef-b5ff-fdd1443fe079",
"type": "main",
"index": 0
}
]
]
},
"HR Expert Agent": {
"main": [
[
{
"node": "3a554846-b2b7-4880-9137-103be85ea072",
"type": "main",
"index": 0
}
]
]
},
"0251fd30-6d6c-4df9-9bae-11f2f29947bd": {
"ai_languageModel": [
[
{
"node": "HR Expert Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"244d87cc-877a-4080-bb9b-6ea44aa76540": {
"main": [
[
{
"node": "Upload to Google Drive",
"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
}
]
]
},
"Profile Analyzer Agent": {
"main": [
[
{
"node": "f27eb081-8fe1-4a8c-88ca-1747047bf3f2",
"type": "main",
"index": 0
}
]
]
},
"5a8e8116-feaa-4007-abdb-91a2a12bbce8": {
"main": [
[
{
"node": "HR Expert Agent",
"type": "main",
"index": 0
}
]
]
},
"94149ee7-1845-4b7a-a2d3-09dea44b1670": {
"main": [
[]
]
},
"21a6ab2d-be94-480b-be22-fad370f520d2": {
"main": [
[]
]
}
}
}자주 묻는 질문
이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
고급 - 인사, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
TalentFlow AI - 배치 이력서 필터링 및 직업 설명 매칭
GPT-4를 사용하여 HR 팀의 대량 이력서 필터링 및 직위 설명 매칭
If
Code
Merge
+
If
Code
Merge
30 노드Trung Tran
인사
스마트 이력서 추출기: Google Drive에서 Sheet로 + 채용 담당자 Slack 업데이트
AI 기반 이력서 추출기: GPT-4를 사용하여 Google Drive에서 Sheet로 처리하고, Slack으로 채용 담당자에게 알림
Code
Slack
Filter
+
Code
Slack
Filter
19 노드Trung Tran
인사
지능형 면접 도우미: 이력서, 직업 설명 및 라운드에 따른 맞춤형 질문
이력서, 직무 설명 및 라운드를 기반으로 GPT-4를 사용하여 맞춤형 면접 질문 생성
Set
Code
Merge
+
Set
Code
Merge
26 노드Trung Tran
인사
Slack 후보자 평가를 위한 AI 기반 챗봇 구축
AI 이력서 분석 및 후보자 평가: Slack과 Google 스프레드시트 통합
If
Code
Slack
+
If
Code
Slack
29 노드Trung Tran
AI 챗봇
🎧 IT 음성 지원 자동화 봇 – Telegram 음성 메시지를 JIRA 티켓으로 전환 (OpenAI Whisper 사용)
Whisper 및 GPT-4.1 Mini를 통한 Telegram 음성 메시지 자동 JIRA 티켓 변환
If
Set
Code
+
If
Set
Code
25 노드Trung Tran
티켓 관리
SmartSupport 프로세스: 이메일에서 Jira로 IT 요청 자동 처리, Slack 알림 포함
AI 솔루션 및 Slack 알림을 통한 이메일 자동 Jira 티켓 변환
If
Set
Jira
+
If
Set
Jira
25 노드Trung Tran
티켓 관리
워크플로우 정보
난이도
고급
노드 수26
카테고리2
노드 유형13
저자
Trung Tran
@trungtranHelps small and medium businesses grow with intelligent automation and practical AI tools, no heavy tech team needed.
외부 링크
n8n.io에서 보기 →
이 워크플로우 공유