8
n8n 한국어amn8n.com

AI 후보자 선별 및 면접 일정 시스템

고급

이것은HR, AI Summarization분야의자동화 워크플로우로, 18개의 노드를 포함합니다.주로 If, Code, Webhook, EmailSend, GoogleSheets 등의 노드를 사용하며. AI 기반 후보자 선별 및 면접 일정 조정(OpenAI GPT 및 Google 제품군)

사전 요구사항
  • HTTP Webhook 엔드포인트(n8n이 자동으로 생성)
  • Google Sheets API 인증 정보
  • OpenAI API Key

카테고리

워크플로우 미리보기
노드 연결 관계를 시각적으로 표시하며, 확대/축소 및 이동을 지원합니다
워크플로우 내보내기
다음 JSON 구성을 복사하여 n8n에 가져오면 이 워크플로우를 사용할 수 있습니다
{
  "id": "pHbBtdjeo2u8avrY",
  "meta": {
    "instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
    "templateCredsSetupCompleted": true
  },
  "name": "AI Candidate Screening & Interview Scheduler",
  "tags": [],
  "nodes": [
    {
      "id": "6bb2e121-0353-43a0-96f3-1e881f9ea9e9",
      "name": "Webhook - 지원서 접수",
      "type": "n8n-nodes-base.webhook",
      "notes": "📥 ENTRY POINT\n\nThis webhook receives job applications from candidates.\n\nExpected data:\n- Candidate Name\n- Email\n- Phone\n- Resume (URL or text)\n- Cover Letter\n- Years of Experience\n- Skills\n\nURL: https://your-n8n-instance.com/webhook/job-application",
      "position": [
        -1008,
        1552
      ],
      "webhookId": "job-application-webhook",
      "parameters": {
        "path": "job-application",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 1
    },
    {
      "id": "8fa4ef36-d737-446c-a4aa-ca7eef8654dc",
      "name": "Sticky Note - 워크플로우 개요",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -832,
        576
      ],
      "parameters": {
        "color": 3,
        "width": 350,
        "height": 400,
        "content": "## 📋 Workflow Overview\n\nThis workflow automates the complete recruitment process:\n\n1️⃣ Receive applications via webhook\n2️⃣ Store in database/spreadsheet\n3️⃣ AI evaluates candidate fit\n4️⃣ Score and rank candidates\n5️⃣ Send notifications\n6️⃣ Schedule interviews for qualified candidates\n\n**Role:** Automation Specialist\n**AI Used:** OpenAI GPT for evaluation"
      },
      "typeVersion": 1
    },
    {
      "id": "a34130de-94c4-4760-8883-3b778afe6319",
      "name": "Google Sheets - 지원서 저장",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "💾 DATA STORAGE\n\nStores all application data in Google Sheets for:\n- Easy tracking and management\n- Historical record keeping\n- Team collaboration\n- Backup of all applications\n\nAlternative: Can use Airtable, PostgreSQL, or MySQL instead",
      "position": [
        -784,
        1552
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "name",
          "value": "=Applications"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=34yuhedwqre"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "47f948e2-6945-4b41-95fb-7ffc04d488af",
      "name": "Sticky Note - 저장 정보",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -848,
        1136
      ],
      "parameters": {
        "color": 5,
        "width": 220,
        "height": 584,
        "content": "## 📊 Database Storage\n\nApplications are stored with:\n- Timestamp\n- Contact information\n- Experience details\n- Skills list\n- Resume link\n- Current status\n\nThis creates an applicant tracking system (ATS)"
      },
      "typeVersion": 1
    },
    {
      "id": "dc349940-72dc-49bf-b44f-68510c5e923a",
      "name": "OpenAI - AI 후보자 평가",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "notes": "🤖 AI EVALUATION ENGINE\n\nUses GPT-4 to:\n- Analyze candidate qualifications\n- Match skills against job requirements\n- Identify strengths and gaps\n- Provide objective scoring (0-100)\n- Generate hiring recommendation\n\nBenefits:\n- Consistent evaluation criteria\n- Unbiased initial screening\n- Faster processing\n- Detailed insights",
      "position": [
        -560,
        1552
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "id",
          "value": "=add your model"
        },
        "options": {
          "temperature": 0.3
        },
        "messages": {
          "values": [
            {
              "content": "=Your name is Rayan and you are an expert technical recruiter evaluating candidates for an Automation Specialist position.\n\nJob Requirements:\n- 3+ years of experience in automation\n- Strong skills in n8n, Make.com, or Zapier\n- Programming: Python, JavaScript\n- API integration experience\n- Workflow design expertise\n- Problem-solving abilities\n\nCandidate Information:\nName: {{ $json.body.name }}\nExperience: {{ $json.body.experience }} years\nSkills: {{ $json.body.skills }}\nResume Summary: {{ $json.body.resume }}\n\nEvaluate this candidate and provide:\n1. Overall Score (0-100)\n2. Strengths (3-5 points)\n3. Weaknesses (2-3 points)\n4. Recommendation (Strong Hire / Hire / Maybe / Reject)\n5. Key concerns or highlights\n\nFormat your response as JSON:\n{\n  \"score\": 85,\n  \"recommendation\": \"Hire\",\n  \"strengths\": [\"...\"],\n  \"weaknesses\": [\"...\"],\n  \"summary\": \"...\"\n}"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "CDQ16eImh6D4tY15",
          "name": "OpenAi account 2 - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "a99cf7ab-03db-4a7e-98fe-4a8025a03cd2",
      "name": "Sticky Note - AI 처리 과정",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -608,
        1136
      ],
      "parameters": {
        "color": 5,
        "width": 204,
        "height": 584,
        "content": "## 🧠 AI Evaluation\n\nThe AI analyzes:\n✓ Experience level match\n✓ Technical skills alignment\n✓ Automation tool proficiency\n✓ Programming capabilities\n✓ Overall candidate fit\n\nOutput: Structured evaluation report"
      },
      "typeVersion": 1
    },
    {
      "id": "2a7f8223-ee02-4c1a-90c4-9cda4ac86831",
      "name": "Code - 평가 처리",
      "type": "n8n-nodes-base.code",
      "notes": "⚙️ DATA PROCESSING\n\nThis node:\n- Parses AI evaluation response\n- Extracts structured data (score, recommendation)\n- Combines candidate + evaluation data\n- Determines next step (Interview or Reject)\n- Handles errors gracefully\n\nThreshold: Score ≥ 70 → Interview",
      "position": [
        -336,
        1552
      ],
      "parameters": {
        "jsCode": "// Parse AI response and structure data\nconst aiResponse = $input.first().json.message.content;\nlet evaluation;\n\ntry {\n  // Extract JSON from AI response\n  const jsonMatch = aiResponse.match(/\\{[\\s\\S]*\\}/);\n  evaluation = JSON.parse(jsonMatch[0]);\n} catch (error) {\n  // Fallback if JSON parsing fails\n  evaluation = {\n    score: 50,\n    recommendation: \"Needs Review\",\n    strengths: [\"Unable to parse\"],\n    weaknesses: [\"AI response format error\"],\n    summary: aiResponse\n  };\n}\n\n// Get original application data\nconst applicationData = $('Webhook - Receive Application').first().json.body;\n\n// Combine all data\nreturn {\n  json: {\n    candidate: {\n      name: applicationData.name,\n      email: applicationData.email,\n      phone: applicationData.phone,\n      experience: applicationData.experience,\n      skills: applicationData.skills\n    },\n    evaluation: {\n      score: evaluation.score,\n      recommendation: evaluation.recommendation,\n      strengths: evaluation.strengths,\n      weaknesses: evaluation.weaknesses,\n      summary: evaluation.summary,\n      evaluatedAt: new Date().toISOString()\n    },\n    decision: evaluation.score >= 70 ? \"Interview\" : \"Reject\"\n  }\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "890d9265-4b7c-4cee-8541-08ac6dd7832d",
      "name": "IF - 점수 기준 확인",
      "type": "n8n-nodes-base.if",
      "notes": "🔀 DECISION POINT\n\nRoutes candidates based on evaluation:\n\n✅ TRUE (Score ≥ 70):\n- Send interview invitation\n- Schedule meeting\n- Update status to 'Interview Scheduled'\n\n❌ FALSE (Score < 70):\n- Send rejection email\n- Update status to 'Rejected'\n- Archive application",
      "position": [
        -112,
        1552
      ],
      "parameters": {
        "conditions": {
          "string": [
            {
              "value1": "={{ $json.decision }}",
              "value2": "Interview",
              "operation": "equals"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "d9d8619f-79bf-47d8-b0fd-7f7e9d1054e1",
      "name": "Sticky Note - 결정 로직",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -368,
        1216
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 496,
        "content": "## 🎯 Scoring Logic\n\nScore ≥ 70: Qualified for interview\nScore < 70: Not a fit\n\nThis threshold can be adjusted based on:\n- Role requirements\n- Application volume\n- Hiring urgency"
      },
      "typeVersion": 1
    },
    {
      "id": "5ee3c07a-d3b2-4c73-aadc-54ef03bf7ec9",
      "name": "Email - 면접 초대",
      "type": "n8n-nodes-base.emailSend",
      "notes": "✉️ INTERVIEW INVITATION\n\nSends personalized email to qualified candidates:\n- Congratulatory message\n- Evaluation highlights\n- Next steps information\n- Request for confirmation\n\nAlternative: Use SendGrid, Gmail, or Outlook node",
      "position": [
        112,
        1456
      ],
      "webhookId": "e0dcc54e-4b72-4a8f-af17-f5dd7843f753",
      "parameters": {
        "text": "=Dear {{ $json.candidate.name }},\n\nCongratulations! We were impressed with your application for the Automation Specialist position.\n\nEvaluation Summary:\n- Overall Score: {{ $json.evaluation.score }}/100\n- Recommendation: {{ $json.evaluation.recommendation }}\n\nStrengths:\n{{ $json.evaluation.strengths.join('\\n- ') }}\n\nWe would like to invite you for an interview. Our team will reach out shortly to schedule a convenient time.\n\nPlease reply to confirm your continued interest.\n\nBest regards,\nHR Team",
        "options": {},
        "subject": "Interview Invitation - Automation Specialist Position",
        "toEmail": "={{ $json.candidate.email }}",
        "fromEmail": "hr@company.com"
      },
      "credentials": {
        "smtp": {
          "id": "3QSx1pWoS0BZcK4c",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "695c0973-9c31-47a2-88ec-24b7989089b4",
      "name": "Email - 거절 안내",
      "type": "n8n-nodes-base.emailSend",
      "notes": "✉️ REJECTION NOTICE\n\nSends professional rejection email:\n- Respectful and kind tone\n- Thanks candidate for interest\n- Encourages future applications\n- Maintains company reputation\n\nBest practice: Always send closure to candidates",
      "position": [
        336,
        1648
      ],
      "webhookId": "1c10023a-2b19-46de-a049-c4fb38cb13a0",
      "parameters": {
        "text": "=Dear {{ $json.candidate.name }},\n\nThank you for your interest in the Automation Specialist position at our company.\n\nAfter careful review of your application, we have decided to move forward with other candidates whose experience more closely matches our current requirements.\n\nWe appreciate the time you invested in your application and encourage you to apply for future opportunities that align with your skills.\n\nWe wish you the best in your job search.\n\nBest regards,\nHR Team",
        "options": {},
        "subject": "Application Update - Automation Specialist Position",
        "toEmail": "={{ $json.candidate.email }}",
        "fromEmail": "hr@company.com"
      },
      "credentials": {
        "smtp": {
          "id": "3QSx1pWoS0BZcK4c",
          "name": "SMTP account"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "37081a08-cac7-403e-a6a1-f67b00efd078",
      "name": "Google Calendar - 면접 일정 잡기",
      "type": "n8n-nodes-base.googleCalendar",
      "notes": "📅 INTERVIEW SCHEDULING\n\nAutomatically creates calendar event:\n- Scheduled 3 days in advance\n- 1-hour duration\n- Includes candidate details\n- Adds evaluation summary\n- Invites candidate + hiring manager\n- Sends calendar invites\n\nAlternative: Use Calendly API integration",
      "position": [
        336,
        1456
      ],
      "parameters": {
        "end": "={{ $now.plus(3, 'days').set({ hour: 11, minute: 0 }).toISO() }}",
        "start": "={{ $now.plus(3, 'days').set({ hour: 10, minute: 0 }).toISO() }}",
        "calendar": {
          "__rl": true,
          "mode": "id",
          "value": "=9ikjnhy65trfdser4"
        },
        "additionalFields": {}
      },
      "credentials": {
        "googleCalendarOAuth2Api": {
          "id": "6ldLmzzYtaqng4pw",
          "name": "Google Calendar account - test"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "56ed8c49-514c-47e2-a83e-e453ce7894ea",
      "name": "Sticky Note - 이메일 로직",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        64,
        1152
      ],
      "parameters": {
        "color": 5,
        "width": 428,
        "height": 656,
        "content": "## 📧 Email Notifications\n\nTwo paths:\n\n1️⃣ HIGH SCORE:\n- Interview invitation\n- Positive feedback\n- Schedule interview\n\n2️⃣ LOW SCORE:\n- Professional rejection\n- Kind closure\n- Future encouragement"
      },
      "typeVersion": 1
    },
    {
      "id": "56eeb778-14d9-41db-b9a6-279d8c4d9027",
      "name": "Update Sheet - 면접 상태 업데이트",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "📝 STATUS UPDATE - INTERVIEW\n\nUpdates Google Sheet with:\n- Status: 'Interview Scheduled'\n- AI evaluation score\n- Recommendation level\n- Interview date\n\nThis keeps the ATS current for HR team tracking",
      "position": [
        560,
        1456
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": "Applications",
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=koi8uhbvfgtyuj"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "7e36df56-3674-4f34-af49-e3809b946f4b",
      "name": "Update Sheet - 거절 상태 업데이트",
      "type": "n8n-nodes-base.googleSheets",
      "notes": "📝 STATUS UPDATE - REJECTION\n\nUpdates Google Sheet with:\n- Status: 'Rejected'\n- AI evaluation score\n- Recommendation (for records)\n- Rejection date\n\nMaintains complete audit trail",
      "position": [
        560,
        1648
      ],
      "parameters": {
        "columns": {
          "value": {},
          "schema": [],
          "mappingMode": "autoMapInputData",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "update",
        "sheetName": {
          "__rl": true,
          "mode": "id",
          "value": "=Applications"
        },
        "documentId": {
          "__rl": true,
          "mode": "id",
          "value": "=hgt567ikmnhjuio9"
        },
        "authentication": "serviceAccount"
      },
      "credentials": {
        "googleApi": {
          "id": "ScSS2KxGQULuPtdy",
          "name": "Google Sheets- test"
        }
      },
      "typeVersion": 4
    },
    {
      "id": "140accea-6390-4317-ae76-cfad1da6b1ee",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "notes": "📤 WEBHOOK RESPONSE\n\nSends confirmation back to application form:\n- Success status\n- Confirmation message\n- Processing status\n\nThis closes the webhook connection and confirms receipt to the applicant",
      "position": [
        784,
        1552
      ],
      "parameters": {
        "options": {},
        "respondWith": "json",
        "responseBody": "={{ {\"success\": true, \"message\": \"Application received and processed\", \"candidateName\": $json.candidate.name, \"status\": $json.decision} }}"
      },
      "typeVersion": 1
    },
    {
      "id": "2611d5c3-fedf-4a2b-ac0b-21a42ad532eb",
      "name": "Sticky Note - 완료",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        528,
        1088
      ],
      "parameters": {
        "color": 5,
        "width": 396,
        "height": 728,
        "content": "## 🎉 Workflow Complete!\n\nFinal steps:\n1. Status updated in database\n2. Emails sent to candidate\n3. Calendar scheduled (if interview)\n4. Response sent to form\n\n**Metrics to Track:**\n- Applications received\n- Average AI score\n- Interview rate\n- Time to process"
      },
      "typeVersion": 1
    },
    {
      "id": "80c5dc1a-90c0-4323-8fa9-a92811241fba",
      "name": "Sticky Note - 설정 안내",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -400,
        672
      ],
      "parameters": {
        "color": 4,
        "width": 398,
        "height": 412,
        "content": "## 🔧 Configuration Required\n\n**Environment Variables:**\n- GOOGLE_SHEET_ID: Your Google Sheet ID\n\n**Credentials Needed:**\n1. Google Sheets OAuth2\n2. OpenAI API Key\n3. SMTP Email Account\n4. Google Calendar OAuth2\n\n**Customize:**\n- Job requirements in AI prompt\n- Score threshold (currently 70)\n- Email templates\n- Interview scheduling time"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "1f088f30-607a-4797-9576-0dd517138820",
  "connections": {
    "695c0973-9c31-47a2-88ec-24b7989089b4": {
      "main": [
        [
          {
            "node": "7e36df56-3674-4f34-af49-e3809b946f4b",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2a7f8223-ee02-4c1a-90c4-9cda4ac86831": {
      "main": [
        [
          {
            "node": "890d9265-4b7c-4cee-8541-08ac6dd7832d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "890d9265-4b7c-4cee-8541-08ac6dd7832d": {
      "main": [
        [
          {
            "node": "5ee3c07a-d3b2-4c73-aadc-54ef03bf7ec9",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "695c0973-9c31-47a2-88ec-24b7989089b4",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "5ee3c07a-d3b2-4c73-aadc-54ef03bf7ec9": {
      "main": [
        [
          {
            "node": "37081a08-cac7-403e-a6a1-f67b00efd078",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "6bb2e121-0353-43a0-96f3-1e881f9ea9e9": {
      "main": [
        [
          {
            "node": "a34130de-94c4-4760-8883-3b778afe6319",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "56eeb778-14d9-41db-b9a6-279d8c4d9027": {
      "main": [
        [
          {
            "node": "140accea-6390-4317-ae76-cfad1da6b1ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "7e36df56-3674-4f34-af49-e3809b946f4b": {
      "main": [
        [
          {
            "node": "140accea-6390-4317-ae76-cfad1da6b1ee",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dc349940-72dc-49bf-b44f-68510c5e923a": {
      "main": [
        [
          {
            "node": "2a7f8223-ee02-4c1a-90c4-9cda4ac86831",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a34130de-94c4-4760-8883-3b778afe6319": {
      "main": [
        [
          {
            "node": "dc349940-72dc-49bf-b44f-68510c5e923a",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "37081a08-cac7-403e-a6a1-f67b00efd078": {
      "main": [
        [
          {
            "node": "56eeb778-14d9-41db-b9a6-279d8c4d9027",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
자주 묻는 질문

이 워크플로우를 어떻게 사용하나요?

위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.

이 워크플로우는 어떤 시나리오에 적합한가요?

고급 - 인사, AI 요약

유료인가요?

이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.

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

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

저자
Oneclick AI Squad

Oneclick AI Squad

@oneclick-ai

The AI Squad Initiative is a pioneering effort to build, automate and scale AI-powered workflows using n8n.io. Our mission is to help individuals and businesses integrate AI agents seamlessly into their daily operations from automating tasks and enhancing productivity to creating innovative, intelligent solutions. We design modular, reusable AI workflow templates that empower creators, developers and teams to supercharge their automation with minimal effort and maximum impact.

외부 링크
n8n.io에서 보기

이 워크플로우 공유

카테고리

카테고리: 34