スマートインタビューアシスタント:履歴書、職位要項、ラウンドに基づくカスタム質問
上級
これはHR, Multimodal AI分野の自動化ワークフローで、26個のノードを含みます。主にSet, Code, Merge, EmailSend, FormTriggerなどのノードを使用。 応募・職位情報・ラウンドに基づいてGPT-4でカスタム面接問題を生成
前提条件
- •Google Drive API認証情報
- •Google Sheets API認証情報
- •OpenAI API Key
使用ノード (26)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "zbggnEhKUnzCjVEY",
"meta": {
"instanceId": "4a2e6764ba7a6bc9890d9225f4b21d570ce88fc9bd57549c89057fcee58fed0f",
"templateId": "5453",
"templateCredsSetupCompleted": true
},
"name": "Smart Interview Assistant: Tailored Questions Based on CV, JD, and Round",
"tags": [
{
"id": "OcQfoQT2ejtrpKfF",
"name": "HR Workflow",
"createdAt": "2025-07-30T05:57:04.113Z",
"updatedAt": "2025-07-30T05:57:04.113Z"
}
],
"nodes": [
{
"id": "951cb8f8-c122-42fb-929a-7008fd545e5c",
"name": "付箋ノート1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1168,
1856
],
"parameters": {
"width": 748,
"height": 176,
"content": "## 1. Hiring manager select candidate profile, applied position and interview round\n- Profile will be candidate resume in PDF format\n- Job role from dropdown list (configurable), need match with list in the positions sheet\n- Interview round (From Initial Screening to Final Interview"
},
"typeVersion": 1
},
{
"id": "02b35afe-c7ee-425f-95d7-5e22489d4445",
"name": "応募フォーム",
"type": "n8n-nodes-base.formTrigger",
"position": [
-560,
2112
],
"webhookId": "f29214cd-588d-4116-8d56-7d0f91cfda9d",
"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": "Smart Interview Prep Assistant",
"formFields": {
"values": [
{
"fieldType": "file",
"fieldLabel": "CV",
"multipleFiles": false,
"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)"
},
{
"option": "Manual Tester/QC (Senior level)"
}
]
},
"requiredField": true
},
{
"fieldType": "dropdown",
"fieldLabel": "Interview Round",
"fieldOptions": {
"values": [
{
"option": "Initial Screening"
},
{
"option": "Technical/Functional Interview"
},
{
"option": "Managerial/Team Fit Interview"
},
{
"option": "Final Interview"
}
]
}
}
]
},
"formDescription": "Effortlessly generate tailored interview questions based on the candidate’s resume, job description, and interview round. Perfect for recruiters, hiring managers, and interviewers who want to save time while staying sharp and relevant."
},
"typeVersion": 2.2
},
{
"id": "fede7d7a-9e6b-4f41-8faa-11bc18385a1e",
"name": "プロファイル抽出",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-144,
1776
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "CV"
},
"typeVersion": 1
},
{
"id": "89b76cb0-9ac8-40c5-a305-cee3914be9dc",
"name": "json parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
304,
1968
],
"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": "bdab7446-ab5a-4bde-9f05-5d9eea6c392d",
"name": "gpt4-1 model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
112,
1968
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "PPSwAKeLQYgAPobT",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "e81e164b-2f0a-44be-ae52-66b1de95a0f2",
"name": "職務記述書取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
-304,
2256
],
"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": "8ef88c1b-16d1-4984-87a2-3fe10d98646c",
"name": "ファイルダウンロード",
"type": "n8n-nodes-base.googleDrive",
"position": [
-80,
2256
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "url",
"value": "={{ $json['Job Description'] }}"
},
"options": {},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "fC471es5gk5Mm900",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "b9d5fe39-af88-419e-bdf8-4646a324f892",
"name": "職務記述書抽出",
"type": "n8n-nodes-base.extractFromFile",
"position": [
240,
2256
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "d9c3fd9b-ca77-4c39-b4fe-1e5f51d0aebf",
"name": "プロファイル分析エージェント",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
112,
1776
],
"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": "d2e82f1b-7d55-4588-8f5b-28f6fef8ed48",
"name": "gpt-4-1 model 2",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1376,
2272
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "PPSwAKeLQYgAPobT",
"name": "OpenAi account"
}
},
"typeVersion": 1.2
},
{
"id": "ceaca356-c885-44ed-8976-291f29550f7c",
"name": "付箋ノート7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2512,
928
],
"parameters": {
"width": 1312,
"height": 2896,
"content": "# 🤖 Smart Interview Assistant: Tailored Questions Based on CV, JD, and Round\n\n## 📌 Who’s it for\nThis workflow is designed for:\n- **Recruiters** and **Talent Acquisition Specialists** who want to automate candidate interview prep.\n- **Hiring Managers** conducting multiple interviews and needing personalized question sets.\n- **Technical Interviewers** who want to save time and be well-prepared with relevant questions.\n\n## ⚙️ How it works / What it does\nThe Smart Interview Assistant automates the interview preparation process in a few clicks:\n\n1. Accepts:\n - **Multiple resumes (PDFs)**\n - **Selected job role**\n - **Chosen interview round**\n2. Extracts structured data from:\n - The candidate’s **CV**\n - The corresponding **Job Description (JD)**\n3. Uses **GPT-4** to analyze:\n - Candidate profile\n - Role requirements\n - Interview round context\n4. Generates:\n - **Tailored interview questions**\n - **Expected answers**\n - **A summarized interview prep report**\n5. Sends the report directly to the **hiring team via email (SMTP)**\n\n## 📁 Google Drive Structure\n\n```\n📂 Root Folder\n├── 📁 jd/ # Stores all job descriptions in PDF format\n│ ├── Backend_Engineer.pdf\n│ ├── Azure_DevOps_Lead.pdf\n│ └── ...\n└── 📄 Positions (Google Sheet) # Maps Job Role ↔ JD File Link\n```\n\n📝 **Sample Mapping Sheet**: \n[Positions Sheet](https://docs.google.com/spreadsheets/d/1pW0muHp1NXwh2GiRvGVwGGRYCkcMR7z8NyS9wvSPYjs/edit?usp=sharing)\n\n**Columns:**\n- `Job Role`\n- `Job Description File URL` (pointing to PDF in `jd/` folder)\n\n## 🛠️ How to Set Up\n\n### Step 1: Configure API Integrations\n- ✅ Connect your **OpenAI GPT-4 API Key**\n- ✅ Enable **Google Cloud APIs**:\n - Google Sheets API (to read job roles)\n - Google Drive API (to access CV and JD files)\n- ✅ Set up **SMTP** credentials (for email delivery)\n\n### Step 2: Prepare Google Drive & Mapping Sheet\n\n1. Create a root folder on Google Drive \n2. Inside the root folder:\n - Create a folder named `/jd/` and upload all **job descriptions (PDFs)** \n3. Create a **Google Sheet** named `Positions` with the following format:\n\n```\n| Job Role | Job Description File URL |\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\n### Step 3: Build the Application Form\n\nUse any form tool (e.g., Typeform, Tally, or custom HTML) that collects:\n- 📎 Resume file (PDF)\n- 🧾 Job Role (dropdown)\n- 🔄 Interview Round (dropdown)\n\n### Step 4: Resume & JD Extraction\n\n- 🔍 Use `Extract from PDF` to parse the resume content\n- 📄 Retrieve the JD link from the `Positions` sheet based on the selected Job Role\n- 🔗 Use `Download file` to pull the PDF for processing\n\n### Step 5: Analyze with GPT-4\n\n- Run both Resume and JD through a **Profile Analyzer Agent** (GPT-4 with JSON output)\n- Merge results\n- Add manual input or mapping for the **Interview Round metadata**\n\n### Step 6: Generate Interview Report\n\n- Use a second GPT-4 agent (e.g., `HR Expert Agent`) to:\n - Generate 6–8 tailored interview questions\n - Include expected answers and rationale\n\n### Step 7: Deliver Final Report\n\n- Format the content as:\n - 📄 PDF (optional)\n - 📨 Email body\n- Send the report to the **recruiter, hiring manager, or interviewer** via **SMTP**\n\n## ✅ Requirements\n\n- 🔑 **OpenAI GPT-4 API Key**\n- 📁 Google Drive (for resume and JD storage)\n- 📊 Google Sheet (job role mapping)\n- 📬 SMTP credentials (host, username, password)\n- 🧰 n8n self-hosted or cloud instance with:\n - PDF Parser\n - Google Sheets node\n - HTTP Download node\n - Email node\n\n## ✏️ How to Customize the Workflow\n\n| Part | Customization Options |\n|----------------------------|-------------------------------------------------------------|\n| **Form UI** | Modify the design, dropdown options, or input validations |\n| **Job Description Source** | Replace Google Sheet with Notion, Airtable, or database |\n| **Interview Metadata** | Add job level, region, or language preference |\n| **AI Prompt Tuning** | Adjust prompt phrasing or temperature in GPT nodes |\n| **Report Format** | Generate PDF instead of email body using PDF node |\n| **Delivery Method** | Add internal HR portal webhook or generate downloadable link |"
},
"typeVersion": 1
},
{
"id": "0c6aa881-8155-444f-9cb2-0a5ba0ea968e",
"name": "付箋ノート3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1136,
2048
],
"parameters": {
"width": 556,
"height": 708,
"content": ""
},
"typeVersion": 1
},
{
"id": "0833bd6f-9ea5-450e-9818-628082b8b762",
"name": "付箋ノート4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
2464
],
"parameters": {
"width": 736,
"height": 128,
"content": ""
},
"typeVersion": 1
},
{
"id": "7ae138fa-8739-4eee-80c0-91e357e40054",
"name": "面接ラウンドメタデータ",
"type": "n8n-nodes-base.set",
"position": [
992,
2112
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "caac3f3e-06a2-4095-91e3-41910f80b1ea",
"name": "Initial Screening",
"type": "string",
"value": "Purpose: Quickly assess whether the candidate meets the basic qualifications and is a potential fit for the role and company culture. Conducted by: Recruiter or Talent Acquisition (TA) Specialist. Focus Areas: \t•\tResume walkthrough and career summary \t•\tMotivation for applying \t•\tSalary expectations and availability \t•\tBasic qualification and communication skills \t•\tClarifying job responsibilities and candidate’s interest Goal for Agent: Generate light, conversational questions that verify resume claims, screen for red flags, and confirm role alignment."
},
{
"id": "9baaec07-ddaa-4d10-a80f-33a0dd200fcc",
"name": "Technical/Functional Interview",
"type": "string",
"value": "Purpose: Evaluate the candidate’s core technical or functional skills required for the job. Conducted by: Team members, senior engineers, or functional managers. Focus Areas: \t•\tRole-specific skills (e.g., coding, data analysis, sales strategy) \t•\tProblem-solving and past project experience \t•\tUnderstanding of tools, frameworks, or domain knowledge \t•\tScenario-based or behavioral questions related to their role Goal for Agent: Generate targeted, skill-assessing questions with a mix of practical scenarios and behavioral prompts."
},
{
"id": "672e2623-81b8-4e2a-959d-3e1ec9886cf8",
"name": "Managerial/Team Fit Interview",
"type": "string",
"value": "Purpose: Assess collaboration skills, ownership, team dynamics, and alignment with team culture. Conducted by: Hiring Manager or Team Lead. Focus Areas: \t•\tCommunication and stakeholder management \t•\tDecision-making and conflict resolution \t•\tPast team experiences and leadership style \t•\tCareer growth and adaptability Goal for Agent: Generate behavioral and situational questions that test emotional intelligence, leadership, and problem ownership."
},
{
"id": "516ca9b8-de86-41a8-b398-f14e746ed414",
"name": "Final Interview (Executive/Leadership Round)",
"type": "string",
"value": "Purpose: Validate overall fit with company values, long-term potential, and alignment with business goals. May include negotiation. Conducted by: Director, VP, or C-level executives. Focus Areas: \t•\tVision alignment and strategic thinking \t•\tLong-term career goals and role alignment \t•\tBusiness acumen and cross-functional collaboration \t•\tSalary/compensation discussion (if applicable) Goal for Agent: Generate questions around strategic vision, values alignment, and leadership potential."
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9634847d-288d-4c09-824d-b0a391ace376",
"name": "マージ",
"type": "n8n-nodes-base.merge",
"position": [
544,
2112
],
"parameters": {},
"typeVersion": 3.2
},
{
"id": "5867643e-e996-43bd-b025-ba4ad6308289",
"name": "出力変換",
"type": "n8n-nodes-base.code",
"position": [
768,
2112
],
"parameters": {
"jsCode": "// Raw merged input (first N items are candidate profiles, last item is JD)\nconst items = $input.all();\n\n// Extract job description (assuming it's the last element)\nconst jdItem = items[items.length - 1];\nconst job_description = jdItem.json.text;\n// Prepare output array\nconst results = [];\n\n// Loop through all items except the last one (JD)\nfor (let i = 0; i < items.length - 1; i++) {\n const candidate = items[i].json.output;\n results.push({\n json: {\n candidate_profile: candidate,\n job_description: job_description,\n applied_position: $('Application form').first().json['Job Role'],\n interview_round: $('Application form').first().json['Interview Round']\n }\n });\n}\n\nreturn results;"
},
"typeVersion": 2
},
{
"id": "61e4c089-30a5-4b93-af09-75f2c68d6fb6",
"name": "構造化出力パーサー",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1568,
2288
],
"parameters": {
"jsonSchemaExample": "{\n \"candidate_summary\": {\n \"name\": \"string\",\n \"position_applied\": \"string\",\n \"years_of_experience\": \"number\",\n \"key_skills\": [\"string\"],\n \"highlights\": \"string\"\n },\n \"job_description_summary\": {\n \"role_title\": \"string\",\n \"team\": \"string\",\n \"core_requirements\": [\"string\"]\n },\n \"interview_round\": {\n \"round_type\": \"string\",\n \"round_purpose\": \"string\",\n \"conducted_by\": \"string\",\n \"focus_areas\": [\"string\"]\n },\n \"interview_questions\": [\n {\n \"question\": \"string\",\n \"expected_answer\": \"string\"\n }\n ]\n}"
},
"typeVersion": 1.3
},
{
"id": "530851ff-f0c3-47a1-abdd-01d13f1875e4",
"name": "面接準備レポート作成",
"type": "n8n-nodes-base.code",
"position": [
1984,
2112
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const data = $json.output;\n\nconst candidate = data.candidate_summary;\nconst jd = data.job_description_summary;\nconst round = data.interview_round;\nconst questions = data.interview_questions;\n\nlet html = `\n <html>\n <head>\n <style>\n body { font-family: Arial, sans-serif; line-height: 1.5; padding: 20px; }\n h1, h2 { color: #2c3e50; }\n h3 { color: #34495e; }\n ul { padding-left: 20px; }\n .section { margin-bottom: 25px; }\n .question { margin-bottom: 15px; }\n .q-label { font-weight: bold; color: #2c3e50; }\n .a-label { font-style: italic; color: #7f8c8d; }\n </style>\n </head>\n <body>\n <h1>Interview Prep Report</h1>\n\n <div class=\"section\">\n <h2>Candidate Summary</h2>\n <p><strong>Name:</strong> ${candidate.name}</p>\n <p><strong>Position Applied:</strong> ${candidate.position_applied}</p>\n <p><strong>Experience:</strong> ${candidate.years_of_experience}</p>\n <p><strong>Highlights:</strong> ${candidate.highlights}</p>\n <p><strong>Key Skills:</strong></p>\n <ul>${candidate.key_skills.map(skill => `<li>${skill}</li>`).join('')}</ul>\n </div>\n\n <div class=\"section\">\n <h2>Job Description Summary</h2>\n <p><strong>Role:</strong> ${jd.role_title}</p>\n <p><strong>Team:</strong> ${jd.team}</p>\n <p><strong>Requirements:</strong></p>\n <ul>${jd.core_requirements.map(req => `<li>${req}</li>`).join('')}</ul>\n </div>\n\n <div class=\"section\">\n <h2>Interview Round</h2>\n <p><strong>Round Type:</strong> ${round.round_type}</p>\n <p><strong>Purpose:</strong> ${round.round_purpose}</p>\n <p><strong>Conducted By:</strong> ${round.conducted_by}</p>\n <p><strong>Focus Areas:</strong></p>\n <ul>${round.focus_areas.map(item => `<li>${item}</li>`).join('')}</ul>\n </div>\n\n <div class=\"section\">\n <h2>Interview Questions</h2>\n ${questions.map((q, index) => `\n <div class=\"question\">\n <p class=\"q-label\">Q${index + 1}: ${q.question}</p>\n <p class=\"a-label\">Expected Answer: ${q.expected_answer}</p>\n </div>\n `).join('')}\n </div>\n </body>\n </html>\n`;\n\nreturn { json: { html }}"
},
"typeVersion": 2
},
{
"id": "2e188bfa-db80-4493-9ec3-6853ead3e3c1",
"name": "採用チームへ面接準備レポート送信",
"type": "n8n-nodes-base.emailSend",
"position": [
2208,
2112
],
"webhookId": "bb7abbfe-9fd9-495c-8a6c-89701389b4d6",
"parameters": {
"html": "={{ $json.html }}",
"options": {},
"subject": "=Interview Preparation Guide for [{{ $('Interview Expert Agent').item.json.output.candidate_summary.name }}] – [{{ $('Interview Expert Agent').item.json.output.candidate_summary.position_applied }}]",
"toEmail": "hiring-team@example.com",
"fromEmail": "no-reply@example.com"
},
"credentials": {
"smtp": {
"id": "Cqc9p9Z5PHj2MHzn",
"name": "SMTP account"
}
},
"typeVersion": 2.1
},
{
"id": "3e49e6fa-0dab-4f73-bd7f-8f6473d0559c",
"name": "付箋ノート",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
2128
],
"parameters": {
"width": 780,
"height": 304,
"content": "## 2.2. 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": "aabd3e08-605e-4fe2-b687-78eccefc1103",
"name": "付箋ノート2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-336,
1648
],
"parameters": {
"width": 780,
"height": 432,
"content": "## 2.1. Candidate profile analyzer\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": "17f5f597-3bf3-4314-82a8-67fc654ac144",
"name": "付箋ノート5",
"type": "n8n-nodes-base.stickyNote",
"position": [
512,
1952
],
"parameters": {
"width": 652,
"height": 336,
"content": "## 3. Prepare material for Interview Expert Agent\n- Candidate profile\n- Applied position job description\n- Interview round (description, target...)"
},
"typeVersion": 1
},
{
"id": "84d88fdb-f333-45c9-94ae-eb5545b2087c",
"name": "面接専門家エージェント",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"position": [
1376,
2112
],
"parameters": {
"text": "=Generate interview prep document based on the following:\n- Applied Position: {{ $('Transform output').item.json.applied_position }}\n- Job Description: {{ $('Transform output').item.json.job_description }}\n- Candidate Profile: {{ $('Transform output').item.json.candidate_profile.toJsonString() }}\n- Interview Round: {{ $('Transform output').item.json.interview_round }}\n- Interview Round Description: {{ $json[$('Transform output').item.json.interview_round] }}",
"messages": {
"messageValues": [
{
"message": "You are an AI Interview Prep Assistant supporting Talent Acquisition (TA) teams. Your job is to generate relevant, role-specific interview questions based on three inputs: the candidate’s profile, the job description (JD), and the selected interview round. You must first analyze the candidate profile to understand key skills, experiences, and career highlights. Then extract the core requirements and responsibilities from the JD. Based on the specified interview round, adjust the tone, focus, and style of your questions appropriately. Your output must include: \t•\tA summary of the candidate and applied position, including name, role, years of experience, and notable skills or achievements. \t•\tA summary of the job description, highlighting the core role requirements and expectations. \t•\tThe interview round type, along with its purpose and focus areas. \t•\tA list of 5 to 8 high-quality interview questions, each with a brief explanation of the expected answer or evaluation criteria. Questions should reflect the intent of the selected round: \t•\tFor screening rounds, keep them light and conversational to verify fit and clarify resume details. \t•\tFor technical or functional rounds, generate questions that evaluate skill depth and practical knowledge. \t•\tFor managerial or leadership rounds, focus on behavior, decision-making, and collaboration. \t•\tFor executive rounds, assess strategic thinking, long-term alignment, and business perspective."
}
]
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 1.5
},
{
"id": "64389790-9976-4905-a09b-416dbc445588",
"name": "付箋ノート6",
"type": "n8n-nodes-base.stickyNote",
"position": [
1216,
1952
],
"parameters": {
"width": 652,
"height": 496,
"content": "## 4. Interview Expert Agent generate interview prep report\n- Generate interview prep report with candidate summary, interview round note, interview questions.\n- All tailored with input parameters (profile, resume, interview round)"
},
"typeVersion": 1
},
{
"id": "f0f1a9f5-92a6-4ac4-8c4c-fc65cbb4d32a",
"name": "付箋ノート8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1904,
2048
],
"parameters": {
"width": 572,
"height": 224,
"content": "## 5. Parse the output and send email to hiring team"
},
"typeVersion": 1
},
{
"id": "ebf2fcc0-19bd-4d7e-aa49-875952463f52",
"name": "付箋ノート9",
"type": "n8n-nodes-base.stickyNote",
"position": [
2512,
1776
],
"parameters": {
"width": 736,
"height": 768,
"content": "\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "eb364707-bf93-475b-abd4-5105515732a1",
"connections": {
"9634847d-288d-4c09-824d-b0a391ace376": {
"main": [
[
{
"node": "5867643e-e996-43bd-b025-ba4ad6308289",
"type": "main",
"index": 0
}
]
]
},
"89b76cb0-9ac8-40c5-a305-cee3914be9dc": {
"ai_outputParser": [
[
{
"node": "d9c3fd9b-ca77-4c39-b4fe-1e5f51d0aebf",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"bdab7446-ab5a-4bde-9f05-5d9eea6c392d": {
"ai_languageModel": [
[
{
"node": "d9c3fd9b-ca77-4c39-b4fe-1e5f51d0aebf",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"8ef88c1b-16d1-4984-87a2-3fe10d98646c": {
"main": [
[
{
"node": "b9d5fe39-af88-419e-bdf8-4646a324f892",
"type": "main",
"index": 0
}
]
]
},
"fede7d7a-9e6b-4f41-8faa-11bc18385a1e": {
"main": [
[
{
"node": "d9c3fd9b-ca77-4c39-b4fe-1e5f51d0aebf",
"type": "main",
"index": 0
}
]
]
},
"e81e164b-2f0a-44be-ae52-66b1de95a0f2": {
"main": [
[
{
"node": "8ef88c1b-16d1-4984-87a2-3fe10d98646c",
"type": "main",
"index": 0
}
]
]
},
"d2e82f1b-7d55-4588-8f5b-28f6fef8ed48": {
"ai_languageModel": [
[
{
"node": "84d88fdb-f333-45c9-94ae-eb5545b2087c",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"02b35afe-c7ee-425f-95d7-5e22489d4445": {
"main": [
[
{
"node": "e81e164b-2f0a-44be-ae52-66b1de95a0f2",
"type": "main",
"index": 0
},
{
"node": "fede7d7a-9e6b-4f41-8faa-11bc18385a1e",
"type": "main",
"index": 0
}
]
]
},
"5867643e-e996-43bd-b025-ba4ad6308289": {
"main": [
[
{
"node": "7ae138fa-8739-4eee-80c0-91e357e40054",
"type": "main",
"index": 0
}
]
]
},
"84d88fdb-f333-45c9-94ae-eb5545b2087c": {
"main": [
[
{
"node": "530851ff-f0c3-47a1-abdd-01d13f1875e4",
"type": "main",
"index": 0
}
]
]
},
"d9c3fd9b-ca77-4c39-b4fe-1e5f51d0aebf": {
"main": [
[
{
"node": "9634847d-288d-4c09-824d-b0a391ace376",
"type": "main",
"index": 0
}
]
]
},
"b9d5fe39-af88-419e-bdf8-4646a324f892": {
"main": [
[
{
"node": "9634847d-288d-4c09-824d-b0a391ace376",
"type": "main",
"index": 1
}
]
]
},
"7ae138fa-8739-4eee-80c0-91e357e40054": {
"main": [
[
{
"node": "84d88fdb-f333-45c9-94ae-eb5545b2087c",
"type": "main",
"index": 0
}
]
]
},
"61e4c089-30a5-4b93-af09-75f2c68d6fb6": {
"ai_outputParser": [
[
{
"node": "84d88fdb-f333-45c9-94ae-eb5545b2087c",
"type": "ai_outputParser",
"index": 0
}
]
]
},
"530851ff-f0c3-47a1-abdd-01d13f1875e4": {
"main": [
[
{
"node": "2e188bfa-db80-4493-9ec3-6853ead3e3c1",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - 人事, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
TalentFlow AI - バッチ履歴書スクリーニングと職位説明とのマッチング
GPT-4を活用したHRチーム向けの大量リソーシェスクリーニングと職位説明書マッチング
If
Code
Merge
+
If
Code
Merge
30 ノードTrung Tran
人事
HireMind – AI駆動の履歴書インテリジェント処理フロー
HR AI履歴書スクリーニングと評価:GPT-4とGoogle Workspace
If
Code
Slack
+
If
Code
Slack
26 ノードTrung Tran
人事
よりスマートな BRD(ビジネスタ需求文書)作成のためのマルチエージェント RAG システム
マルチエージェント GPT と Google Workspace を使ってビジネス要件書を生成
Set
Code
Merge
+
Set
Code
Merge
37 ノードTrung Tran
AI RAG検索拡張
Slack候補者評価のためのAI駆動チャットボット構築
AI履歴書分析と候補者評価:SlackとGoogleスプレッドシートの統合
If
Code
Slack
+
If
Code
Slack
29 ノードTrung Tran
AIチャットボット
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
スマートレジュメ抽出ツール:Google Driveからスプレッドシート + 採用担当者向けSlack更新
AI駆動のレジュメ抽出ツール:GPT-4がGoogle Driveからスプレッドシートを処理し、採用担当者にSlack通知
Code
Slack
Filter
+
Code
Slack
Filter
19 ノード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で表示 →
このワークフローを共有