8
n8n 한국어amn8n.com

지능형 면접 도우미: 이력서, 직업 설명 및 라운드에 따른 맞춤형 질문

고급

이것은HR, Multimodal AI분야의자동화 워크플로우로, 26개의 노드를 포함합니다.주로 Set, Code, Merge, EmailSend, FormTrigger 등의 노드를 사용하며. 이력서, 직무 설명 및 라운드를 기반으로 GPT-4를 사용하여 맞춤형 면접 질문 생성

사전 요구사항
  • Google Drive API 인증 정보
  • Google Sheets API 인증 정보
  • OpenAI API Key
워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 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": "Sticky Note1",
      "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": "직무 JD 가져오기",
      "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": "Sticky Note7",
      "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": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1136,
        2048
      ],
      "parameters": {
        "width": 556,
        "height": 708,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/Screenshot+2025-08-01+at+2.29.54%E2%80%AFPM.png \"Optional title text\")"
      },
      "typeVersion": 1
    },
    {
      "id": "0833bd6f-9ea5-450e-9818-628082b8b762",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -304,
        2464
      ],
      "parameters": {
        "width": 736,
        "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": "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": "Sticky Note",
      "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": "Sticky Note2",
      "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": "Sticky Note5",
      "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": "Sticky Note6",
      "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": "Sticky Note8",
      "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": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2512,
        1776
      ],
      "parameters": {
        "width": 736,
        "height": 768,
        "content": "![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/interview-prep-2.png \"Optional title text\")\n![Alt text](https://wisestackai.s3.ap-southeast-1.amazonaws.com/interview-prep-3.png \"Optional title text\")"
      },
      "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)는 사용자 직접 비용을 지불해야 할 수 있습니다.

워크플로우 정보
난이도
고급
노드 수26
카테고리2
노드 유형13
난이도 설명

고급 사용자를 위한 16+개 노드의 복잡한 워크플로우

저자
Trung Tran

Trung Tran

@trungtran

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

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34