AI 및 이메일 파싱을 사용한 이력서 스크리닝 및 후보자 확인 자동화
이것은HR, AI Summarization분야의자동화 워크플로우로, 14개의 노드를 포함합니다.주로 If, Code, Wait, EmailSend, EmailReadImap 등의 노드를 사용하며. AI와 이메일 파싱을 사용한 이력서 스크리닝 및 후보자 확인 자동화
- •특별한 사전 요구사항 없이 가져와 바로 사용 가능합니다
{
"id": "wnbJahytoQE4GFZ3",
"meta": {
"instanceId": "dd69efaf8212c74ad206700d104739d3329588a6f3f8381a46a481f34c9cc281",
"templateCredsSetupCompleted": true
},
"name": "Automate CV Screening & Candidate Validation with AI & Email Parsing",
"tags": [],
"nodes": [
{
"id": "2c5dae24-563c-4e86-958f-b267b80c7b97",
"name": "새 이력서 이메일 트리거",
"type": "n8n-nodes-base.emailReadImap",
"position": [
-880,
60
],
"parameters": {
"format": "resolved",
"options": {
"customEmailConfig": "[\"UNSEEN\", [\"SUBJECT\", \"CV\"]]"
}
},
"credentials": {
"imap": {
"id": "zTEGYssr7MSVeCs3",
"name": "IMAP-test"
}
},
"typeVersion": 2
},
{
"id": "3fb527d0-5485-4a0d-bbe0-0ae995b8e5ec",
"name": "PDF 이력서에서 텍스트 추출",
"type": "n8n-nodes-base.extractFromFile",
"position": [
-660,
60
],
"parameters": {
"options": {},
"operation": "pdf",
"binaryPropertyName": "attachment_0"
},
"typeVersion": 1
},
{
"id": "fd00eedc-3366-4c3c-b9b1-df26c85155cc",
"name": "모든 이력서 데이터 로드 확인",
"type": "n8n-nodes-base.wait",
"position": [
-440,
60
],
"webhookId": "e13c2199-38bd-4ba8-aca2-1f800685301a",
"parameters": {},
"typeVersion": 1.1
},
{
"id": "059b48de-32c9-41a7-a200-6112457df2e7",
"name": "이력서 정보 파싱 및 구조화",
"type": "n8n-nodes-base.code",
"position": [
-220,
60
],
"parameters": {
"jsCode": "// Access the extracted PDF text\nconst fileContent = ($input.first().json.text || '').toLowerCase();\nconst keywordsToDepartments = {\n hr: 'HR',\n bde: 'BDE',\n 'business development': 'BDE',\n seo: 'SEO',\n devops: 'DevOps',\n developer: 'Development',\n engineer: 'Engineering',\n marketing: 'Marketing',\n sales: 'Sales',\n support: 'Support',\n tester: 'QA',\n qa: 'QA',\n};\n\n// Define a priority order (higher number = higher priority)\nconst priority = {\n devops: 3,\n developer: 3,\n engineer: 3,\n seo: 2,\n bde: 2,\n 'business development': 2,\n marketing: 2,\n sales: 2,\n support: 2,\n tester: 2,\n qa: 2,\n hr: 1,\n};\n\n// Find all matching departments with their priorities\nlet matches = [];\nfor (const [keyword, department] of Object.entries(keywordsToDepartments)) {\n if (fileContent.includes(keyword)) {\n matches.push({ department, priority: priority[keyword] || 0 });\n }\n}\n\n// Extract the username (first line of the CV text)\nconst originalText = $input.first().json.text || '';\nconst username = originalText.split('\\n')[0].trim(); // First line, e.g., \"Komal Shah\"\n\n// If matches are found, return the department with the highest priority along with the username\nif (matches.length > 0) {\n const bestMatch = matches.reduce((best, current) =>\n current.priority > best.priority ? current : best\n );\n return [{ department: bestMatch.department, username }];\n}\n\nreturn [{ department: 'Unknown', username }];"
},
"typeVersion": 2
},
{
"id": "709ca3a3-04b6-44d7-bdc4-190c6b5f979f",
"name": "필수 항목에 대한 이력서 검사",
"type": "n8n-nodes-base.if",
"position": [
0,
60
],
"parameters": {
"conditions": {
"boolean": [
{
"value1": "={{ $json.department }}",
"value2": true,
"operation": "notEqual"
}
]
}
},
"typeVersion": 1
},
{
"id": "3093ed8e-cc84-4ca2-9e24-b4ffe2fc0e6f",
"name": "유효한 이력서를 폴더에 저장",
"type": "n8n-nodes-base.executeCommand",
"position": [
240,
-140
],
"parameters": {
"command": "=mkdir -p /home/node/.n8n/resume/{{ $json.department }}/ && echo \"{{ $('Extract Text from PDF CV\t').item.json.text }}\" > /home/node/.n8n/resume/{{ $json.department }}/{{ $json.username.replace(/ /g, '-') }}.pdf"
},
"typeVersion": 1
},
{
"id": "bae56e7d-8232-404b-856e-7cc2bb86fffe",
"name": "무효 이력서를 HR에 통지",
"type": "n8n-nodes-base.emailSend",
"position": [
260,
260
],
"parameters": {
"text": "CV Not Found",
"options": {},
"subject": "CV Processing Error",
"toEmail": "abc@gmail.com",
"fromEmail": "xyz@gmail.com"
},
"credentials": {
"smtp": {
"id": "G1kyF8cSWTZ4vouN",
"name": "SMTP -test"
}
},
"typeVersion": 1
},
{
"id": "68fa371e-f91e-415e-ad4c-a83a18fe4ecb",
"name": "스티커 메모",
"type": "n8n-nodes-base.stickyNote",
"position": [
-900,
-80
],
"parameters": {
"width": 150,
"height": 280,
"content": "Listens for new emails containing CV attachments."
},
"typeVersion": 1
},
{
"id": "5a2368ad-226a-45c3-bf2f-be91208d357d",
"name": "스티커 메모1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-240,
-80
],
"parameters": {
"color": 4,
"width": 150,
"height": 280,
"content": "Extracts structured details like name, skills, education, experience using AI or custom logic.\n"
},
"typeVersion": 1
},
{
"id": "e2ba359c-c363-4805-b80a-291ff7c12185",
"name": "스티커 메모2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-20,
-80
],
"parameters": {
"color": 6,
"width": 150,
"height": 280,
"content": "Verifies presence of essential fields (e.g. name, email, skills) before proceeding.\n"
},
"typeVersion": 1
},
{
"id": "a0d2f49b-0a2b-4faf-9c26-a8de59095b36",
"name": "스티커 메모3",
"type": "n8n-nodes-base.stickyNote",
"position": [
240,
100
],
"parameters": {
"color": 3,
"width": 150,
"height": 280,
"content": "Sends email alert for incomplete or invalid CVs.\n\n"
},
"typeVersion": 1
},
{
"id": "b788d954-5d93-4db0-a58f-5fa7f8173aed",
"name": "스티커 메모4",
"type": "n8n-nodes-base.stickyNote",
"position": [
220,
-280
],
"parameters": {
"color": 2,
"width": 150,
"height": 280,
"content": "Stores successfully validated CVs into a target directory.\n"
},
"typeVersion": 1
},
{
"id": "a2f60daf-2ae0-4643-ad18-e9fd5fff132b",
"name": "스티커 메모5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-680,
-80
],
"parameters": {
"color": 3,
"width": 150,
"height": 280,
"content": "Parses CV content from attached PDF files.\n"
},
"typeVersion": 1
},
{
"id": "1efb64dc-b917-47d9-9339-85dbae2d2385",
"name": "스티커 메모6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-460,
-80
],
"parameters": {
"color": 5,
"width": 150,
"height": 280,
"content": "Pauses until full data is ready for processing.\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "128c5a19-ad2a-4426-851f-a9dbf2a9ff17",
"connections": {
"2c5dae24-563c-4e86-958f-b267b80c7b97": {
"main": [
[
{
"node": "3fb527d0-5485-4a0d-bbe0-0ae995b8e5ec",
"type": "main",
"index": 0
}
]
]
},
"3fb527d0-5485-4a0d-bbe0-0ae995b8e5ec": {
"main": [
[
{
"node": "fd00eedc-3366-4c3c-b9b1-df26c85155cc",
"type": "main",
"index": 0
}
]
]
},
"fd00eedc-3366-4c3c-b9b1-df26c85155cc": {
"main": [
[
{
"node": "059b48de-32c9-41a7-a200-6112457df2e7",
"type": "main",
"index": 0
}
]
]
},
"709ca3a3-04b6-44d7-bdc4-190c6b5f979f": {
"main": [
[
{
"node": "3093ed8e-cc84-4ca2-9e24-b4ffe2fc0e6f",
"type": "main",
"index": 0
}
],
[
{
"node": "bae56e7d-8232-404b-856e-7cc2bb86fffe",
"type": "main",
"index": 0
}
]
]
},
"059b48de-32c9-41a7-a200-6112457df2e7": {
"main": [
[
{
"node": "709ca3a3-04b6-44d7-bdc4-190c6b5f979f",
"type": "main",
"index": 0
}
]
]
}
}
}이 워크플로우를 어떻게 사용하나요?
위의 JSON 구성 코드를 복사하여 n8n 인스턴스에서 새 워크플로우를 생성하고 "JSON에서 가져오기"를 선택한 후, 구성을 붙여넣고 필요에 따라 인증 설정을 수정하세요.
이 워크플로우는 어떤 시나리오에 적합한가요?
중급 - 인사, AI 요약
유료인가요?
이 워크플로우는 완전히 무료이며 직접 가져와 사용할 수 있습니다. 다만, 워크플로우에서 사용하는 타사 서비스(예: OpenAI API)는 사용자 직접 비용을 지불해야 할 수 있습니다.
관련 워크플로우 추천
Oneclick AI Squad
@oneclick-aiThe 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.
이 워크플로우 공유