8
n8n 中文网amn8n.com

AI 驱动的招聘:使用 Jotform 进行简历筛选和候选人路由

高级

这是一个自动化工作流,包含 20 个节点。主要使用 If, Set, Code, Gmail, Slack 等节点。 简历筛选与候选人路由,使用GPT-4o-mini、Jotform和Google Sheets

前置要求
  • Google 账号和 Gmail API 凭证
  • Slack Bot Token 或 Webhook URL
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key

分类

-
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "AU3wTmjcDjBhtGH4",
  "meta": {
    "instanceId": "277842713620d9f5554de3b1518b865a152c8c4db680008bd8aec536fc18b4a8"
  },
  "name": "AI 驱动的招聘:使用 Jotform 进行简历筛选和候选人路由",
  "tags": [
    {
      "id": "CWardZYJBmejoyC4",
      "name": "under review",
      "createdAt": "2025-10-09T18:43:37.031Z",
      "updatedAt": "2025-10-09T18:43:37.031Z"
    }
  ],
  "nodes": [
    {
      "id": "d549b930-1e35-4bcd-a7d7-8806c6990170",
      "name": "提取申请数据",
      "type": "n8n-nodes-base.set",
      "position": [
        -2752,
        688
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "candidate_name",
              "name": "candidate_name",
              "type": "string",
              "value": "={{ $json.q3_fullName?.first || '' }} {{ $json.q3_fullName?.last || '' }}"
            },
            {
              "id": "candidate_email",
              "name": "candidate_email",
              "type": "string",
              "value": "={{ $json.q4_email }}"
            },
            {
              "id": "candidate_phone",
              "name": "candidate_phone",
              "type": "string",
              "value": "={{ $json.q5_phone }}"
            },
            {
              "id": "position_applied",
              "name": "position_applied",
              "type": "string",
              "value": "={{ $json.q6_position }}"
            },
            {
              "id": "years_experience",
              "name": "years_experience",
              "type": "string",
              "value": "={{ $json.q7_experience }}"
            },
            {
              "id": "linkedin_url",
              "name": "linkedin_url",
              "type": "string",
              "value": "={{ $json.q8_linkedin || 'Not provided' }}"
            },
            {
              "id": "portfolio_url",
              "name": "portfolio_url",
              "type": "string",
              "value": "={{ $json.q9_portfolio || 'Not provided' }}"
            },
            {
              "id": "resume_url",
              "name": "resume_url",
              "type": "string",
              "value": "={{ $json.q10_resume?.[0] || '' }}"
            },
            {
              "id": "cover_letter",
              "name": "cover_letter",
              "type": "string",
              "value": "={{ $json.q11_coverLetter || 'Not provided' }}"
            },
            {
              "id": "application_id",
              "name": "application_id",
              "type": "string",
              "value": "=APP-{{ $json.submissionID }}-{{ Date.now() }}"
            },
            {
              "id": "application_date",
              "name": "application_date",
              "type": "string",
              "value": "={{ new Date().toISOString() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "01591f1c-25da-4d0a-b627-0814d817d785",
      "name": "下载简历",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -2528,
        672
      ],
      "parameters": {
        "url": "={{ $json.resume_url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "3af3677e-0537-417e-9249-a51af94e4fe6",
      "name": "处理简历",
      "type": "n8n-nodes-base.code",
      "position": [
        -2224,
        688
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\nconst results = [];\n\nfor (const item of items) {\n  try {\n    // Get resume binary data\n    const resumeData = item.binary?.data;\n    \n    if (resumeData) {\n      // Convert binary to base64 for AI processing\n      const base64Resume = resumeData.data;\n      \n      results.push({\n        json: {\n          ...item.json,\n          resume_base64: base64Resume,\n          resume_available: true\n        }\n      });\n    } else {\n      results.push({\n        json: {\n          ...item.json,\n          resume_available: false,\n          resume_text: 'Resume not available for parsing'\n        }\n      });\n    }\n  } catch (error) {\n    results.push({\n      json: {\n        ...item.json,\n        resume_available: false,\n        resume_text: 'Error processing resume',\n        error: error.message\n      }\n    });\n  }\n}\n\nreturn results;"
      },
      "typeVersion": 2
    },
    {
      "id": "0a82dda9-b144-41f5-8903-579947f536c8",
      "name": "AI 简历解析器",
      "type": "@n8n/n8n-nodes-langchain.openAi",
      "position": [
        -2032,
        688
      ],
      "parameters": {
        "modelId": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {},
        "messages": {
          "values": [
            {
              "content": "=You are an expert technical recruiter and resume parser. Extract structured information from this job application.\n\n**Candidate Name:** {{ $('Extract Application Data').item.json.candidate_name }}\n**Position Applied:** {{ $('Extract Application Data').item.json.position_applied }}\n**Years of Experience:** {{ $('Extract Application Data').item.json.years_experience }}\n**LinkedIn:** {{ $('Extract Application Data').item.json.linkedin_url }}\n**Portfolio:** {{ $('Extract Application Data').item.json.portfolio_url }}\n\n**Cover Letter:**\n{{ $('Extract Application Data').item.json.cover_letter }}\n\n**Resume:** (Attached or provided separately)\n\nPlease extract and structure the following information in markdown format:\n\n## Professional Summary\n[Write a 2-3 sentence summary of the candidate]\n\n## Key Skills\n- List all technical skills mentioned\n- Programming languages\n- Frameworks and tools\n- Soft skills\n\n## Work Experience\n[Summarize their work history with companies, roles, and key achievements]\n\n## Education\n[Degrees, certifications, institutions]\n\n## Notable Projects\n[Any significant projects mentioned]\n\n## Red Flags or Concerns\n[Job hopping, gaps, inconsistencies, or none]\n\n## Standout Qualities\n[What makes this candidate unique or impressive]"
            }
          ]
        }
      },
      "credentials": {
        "openAiApi": {
          "id": "8IkhtT3EbXygnvcr",
          "name": "Klinsman OpenAI"
        }
      },
      "typeVersion": 1.8
    },
    {
      "id": "c071c207-e09d-4ca5-90b9-d4d300476dde",
      "name": "AI 候选人筛选器",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1424,
        720
      ],
      "parameters": {
        "text": "=You are an expert hiring manager evaluating candidates for our company. Your job is to thoroughly assess this candidate against our job requirements and provide a detailed, structured analysis.\n\n---\n\n## JOB REQUIREMENTS\n\n**Position:** Senior Full-Stack Engineer\n\n**Required Skills:**\n- 5+ years of professional software development experience\n- Strong proficiency in React, Node.js, and TypeScript\n- Experience with PostgreSQL or similar relational databases\n- RESTful API design and development\n- Git version control and collaborative development\n- Experience with cloud platforms (AWS, GCP, or Azure)\n- Strong problem-solving and debugging skills\n\n**Preferred Skills:**\n- Experience with Next.js or similar meta-frameworks\n- GraphQL API development\n- Docker and container orchestration\n- CI/CD pipeline setup and maintenance\n- Experience with testing frameworks (Jest, Cypress)\n- Open source contributions\n- Startup experience\n\n**Soft Skills:**\n- Excellent communication skills\n- Self-motivated and able to work independently\n- Collaborative team player\n- Passion for learning new technologies\n- Strong attention to detail\n\n**Red Flags to Watch For:**\n- Job hopping (multiple jobs under 1 year)\n- Unexplained employment gaps\n- Lack of progression in career\n- Generic or copied cover letters\n- Overly inflated claims without evidence\n- Poor communication in application materials\n\n---\n\n## CANDIDATE INFORMATION\n\n**Name:** {{ $('Extract Application Data').item.json.candidate_name }}\n**Email:** {{ $('Extract Application Data').item.json.candidate_email }}\n**Position Applied:** {{ $('Extract Application Data').item.json.position_applied }}\n**Years of Experience:** {{ $('Extract Application Data').item.json.years_experience }}\n**LinkedIn:** {{ $('Extract Application Data').item.json.linkedin_url }}\n**Portfolio:** {{ $('Extract Application Data').item.json.portfolio_url }}\n\n**Parsed Resume Summary:**\n{{ $json.message.content }}\n\n**Cover Letter:**\n{{ $('Extract Application Data').item.json.cover_letter }}\n\n---\n\n## YOUR TASK\n\nProvide a comprehensive evaluation with the following structure:\n\n1. **Overall Assessment** - High-level verdict on candidate quality\n\n2. **Skills Match Analysis** - Compare their skills against requirements:\n   - Required skills they have\n   - Required skills they're missing\n   - Preferred skills they have\n   - Unique skills they bring\n\n3. **Experience Evaluation** - Assess their work history quality and relevance\n\n4. **Standout Qualities** - What makes them impressive or unique\n\n5. **Concerns or Red Flags** - Any potential issues identified\n\n6. **Cultural Fit Indicators** - Based on communication style, values alignment\n\n7. **Interview Focus Areas** - What to dig deeper on in interviews\n\n8. **Salary Expectations** - Estimated range based on experience level\n\nProvide detailed reasoning for all assessments. Be honest about weaknesses but also highlight genuine strengths.",
        "options": {},
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "7e3e68f1-7ab2-42aa-811b-52bf2984c90b",
      "name": "OpenAI 聊天模型",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1456,
        976
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "8IkhtT3EbXygnvcr",
          "name": "Klinsman OpenAI"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "34f9050d-fac1-4501-8742-719d589e7d5c",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1200,
        992
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n  \"type\": \"object\",\n  \"required\": [\n    \"overall_score\",\n    \"recommendation\",\n    \"skills_match_score\",\n    \"experience_score\",\n    \"cultural_fit_score\",\n    \"required_skills_present\",\n    \"required_skills_missing\",\n    \"preferred_skills_present\",\n    \"standout_qualities\",\n    \"concerns_or_red_flags\",\n    \"interview_focus_areas\",\n    \"estimated_salary_range\",\n    \"detailed_assessment_markdown\"\n  ],\n  \"properties\": {\n    \"overall_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100,\n      \"description\": \"Overall candidate score out of 100\"\n    },\n    \"recommendation\": {\n      \"type\": \"string\",\n      \"enum\": [\"strong_yes\", \"yes\", \"maybe\", \"no\", \"strong_no\"],\n      \"description\": \"Hiring recommendation\"\n    },\n    \"skills_match_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"experience_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"cultural_fit_score\": {\n      \"type\": \"integer\",\n      \"minimum\": 0,\n      \"maximum\": 100\n    },\n    \"required_skills_present\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"required_skills_missing\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"preferred_skills_present\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"standout_qualities\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"concerns_or_red_flags\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"interview_focus_areas\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"}\n    },\n    \"estimated_salary_range\": {\n      \"type\": \"string\",\n      \"description\": \"Estimated salary range like $120k-$150k\"\n    },\n    \"detailed_assessment_markdown\": {\n      \"type\": \"string\",\n      \"description\": \"Full assessment in markdown format\"\n    }\n  }\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "8f0f2d89-2164-4f31-b6cb-b8e71ebbda57",
      "name": "强烈推荐?",
      "type": "n8n-nodes-base.if",
      "position": [
        -784,
        704
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "strong-yes-condition",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.output.recommendation }}",
              "rightValue": "strong_yes"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "867d5a96-aaaf-4bce-a9e7-a1a8e3737713",
      "name": "可能或推荐?",
      "type": "n8n-nodes-base.if",
      "position": [
        -784,
        944
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "leftValue": "",
            "caseSensitive": true
          },
          "combinator": "or",
          "conditions": [
            {
              "id": "yes-maybe-condition",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.output.recommendation }}",
              "rightValue": "yes"
            },
            {
              "id": "maybe-condition",
              "operator": {
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.output.recommendation }}",
              "rightValue": "maybe"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "4b90f9bd-a0b3-42a2-8aa9-ef308563c1cb",
      "name": "发送面试邀请",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -192,
        544
      ],
      "webhookId": "967e0270-dce4-4a1a-a5b2-880e04abc484",
      "parameters": {
        "sendTo": "={{ $('Extract Application Data').item.json.candidate_email }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n<style>\nbody{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.6;color:#333;max-width:600px;margin:0 auto;padding:20px}\n.header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:30px 20px;text-align:center;border-radius:8px 8px 0 0}\n.content{background:#f8f9fa;padding:30px 20px;border:1px solid #e9ecef;border-top:none}\n.cta-button{display:inline-block;background:#667eea;color:#fff;padding:14px 28px;text-decoration:none;border-radius:6px;font-weight:600;margin:20px 0}\n.footer{margin-top:20px;padding-top:20px;border-top:1px solid #dee2e6;font-size:14px;color:#6c757d}\n</style>\n</head>\n<body>\n<div class=\"header\">\n<h1 style=\"margin:0;font-size:24px\">Great News, {{ $('Extract Application Data').item.json.candidate_name.split(' ')[0] }}! 🎉</h1>\n</div>\n<div class=\"content\">\n<p>Thank you for applying for the <strong>{{ $('Extract Application Data').item.json.position_applied }}</strong> position at [Your Company].</p>\n\n<p>We've reviewed your application and we're impressed! Your experience and skills align really well with what we're looking for, and we'd love to learn more about you.</p>\n\n<p><strong>Next Steps:</strong></p>\n<ul>\n<li>We'll be reaching out within 1-2 business days to schedule a technical screening call (30-45 minutes)</li>\n<li>This will be a casual conversation about your experience and technical background</li>\n<li>You'll also get to learn more about our team, tech stack, and culture</li>\n</ul>\n\n<p>In the meantime, feel free to check out our <a href=\"https://yourcompany.com/engineering\">engineering blog</a> or explore our <a href=\"https://github.com/yourcompany\">open source projects</a>.</p>\n\n<p>Looking forward to speaking with you soon!</p>\n\n<p>Best regards,<br>\n<strong>Hiring Team</strong><br>\n[Your Company]</p>\n</div>\n<div class=\"footer\">\n<p>Application ID: {{ $('Extract Application Data').item.json.application_id }}</p>\n</div>\n</body>\n</html>",
        "options": {},
        "subject": "=Next Steps - {{ $('Extract Application Data').item.json.position_applied }} at [Your Company]"
      },
      "typeVersion": 2.1
    },
    {
      "id": "3f187791-5c7a-4292-a623-f7e005db0da2",
      "name": "请求经理审核",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -512,
        800
      ],
      "webhookId": "hiring-approval-webhook",
      "parameters": {
        "sendTo": "hiring-manager@yourcompany.com",
        "message": "=<!DOCTYPE html>\n<html>\n<head><style>body{font-family:Arial,sans-serif;line-height:1.6;color:#333}.container{max-width:700px;margin:0 auto;padding:20px}.header{background:#f8f9fa;padding:20px;border-left:4px solid #ffc107;margin-bottom:20px}.score-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px;margin:20px 0}.score-box{background:#f8f9fa;padding:15px;text-align:center;border-radius:5px}.score-box strong{display:block;font-size:24px;color:#667eea}.list-section{margin:15px 0}.list-section h3{color:#667eea;margin-bottom:10px}.badge{display:inline-block;padding:4px 8px;border-radius:3px;font-size:12px;font-weight:600}.badge-yes{background:#d4edda;color:#155724}.badge-maybe{background:#fff3cd;color:#856404}.cta{background:#667eea;color:#fff;padding:15px 30px;text-decoration:none;border-radius:5px;display:inline-block;margin:20px 0}</style></head>\n<body>\n<div class=\"container\">\n<div class=\"header\">\n<h2 style=\"margin:0\">📋 Candidate Review Required</h2>\n<p style=\"margin:5px 0 0 0\"><span class=\"badge badge-maybe\">NEEDS REVIEW</span></p>\n</div>\n\n<p><strong>Candidate:</strong> {{ $('Extract Application Data').item.json.candidate_name }}<br>\n<strong>Position:</strong> {{ $('Extract Application Data').item.json.position_applied }}<br>\n<strong>Email:</strong> {{ $('Extract Application Data').item.json.candidate_email }}<br>\n<strong>Application ID:</strong> {{ $('Extract Application Data').item.json.application_id }}</p>\n\n<div class=\"score-grid\">\n<div class=\"score-box\"><strong>{{ $('AI Candidate Screener').item.json.output.overall_score }}</strong>Overall Score</div>\n<div class=\"score-box\"><strong>{{ $('AI Candidate Screener').item.json.output.skills_match_score }}%</strong>Skills Match</div>\n<div class=\"score-box\"><strong>{{ $('AI Candidate Screener').item.json.output.experience_score }}%</strong>Experience</div>\n</div>\n\n<div class=\"list-section\">\n<h3>✅ Strengths</h3>\n<ul>\n{{ $('AI Candidate Screener').item.json.output.standout_qualities.map(q => '<li>' + q + '</li>').join('') }}\n</ul>\n</div>\n\n<div class=\"list-section\">\n<h3>⚠️ Concerns</h3>\n<ul>\n{{ $('AI Candidate Screener').item.json.output.concerns_or_red_flags.length > 0 ? $('AI Candidate Screener').item.json.output.concerns_or_red_flags.map(c => '<li>' + c + '</li>').join('') : '<li>No major concerns identified</li>' }}\n</ul>\n</div>\n\n<div class=\"list-section\">\n<h3>💰 Estimated Salary</h3>\n<p>{{ $('AI Candidate Screener').item.json.output.estimated_salary_range }}</p>\n</div>\n\n<p><strong>AI Recommendation:</strong> {{ $('AI Candidate Screener').item.json.output.recommendation.toUpperCase().replace('_', ' ') }}</p>\n\n<p><strong>Your decision is needed:</strong> Should we move forward with this candidate?</p>\n\n<p><em>Click below to approve or reject this application.</em></p>\n\n</div>\n</body>\n</html>",
        "options": {},
        "subject": "=Review Candidate - {{ $('Extract Application Data').item.json.candidate_name }}",
        "operation": "sendAndWait"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "PIMDNhXNj8Zyiz3G",
          "name": "Gmail account - Deepanshi"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "5dbe1e3b-b603-4e38-ac36-19e800f042c7",
      "name": "发送拒绝邮件",
      "type": "n8n-nodes-base.gmail",
      "position": [
        -480,
        1104
      ],
      "webhookId": "53053a7b-a0a4-4641-b1b2-2ca76c20c462",
      "parameters": {
        "sendTo": "={{ $('Extract Application Data').item.json.candidate_email }}",
        "message": "=<!DOCTYPE html>\n<html>\n<head>\n<style>\nbody{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;line-height:1.6;color:#333;max-width:600px;margin:0 auto;padding:20px}\n.header{background:#667eea;color:#fff;padding:30px 20px;text-align:center;border-radius:8px 8px 0 0}\n.content{background:#fff;padding:30px 20px;border:1px solid #e9ecef;border-top:none}\n.footer{margin-top:20px;padding-top:20px;border-top:1px solid #dee2e6;font-size:14px;color:#6c757d}\n</style>\n</head>\n<body>\n<div class=\"header\">\n<h1 style=\"margin:0;font-size:24px\">Thank You for Applying</h1>\n</div>\n<div class=\"content\">\n<p>Hi {{ $('Extract Application Data').item.json.candidate_name.split(' ')[0] }},</p>\n\n<p>Thank you for taking the time to apply for the <strong>{{ $('Extract Application Data').item.json.position_applied }}</strong> position at [Your Company]. We genuinely appreciate your interest in joining our team.</p>\n\n<p>After carefully reviewing your application and experience, we've decided to move forward with candidates whose backgrounds more closely align with our current needs for this specific role.</p>\n\n<p>This was a competitive process, and we were impressed by many aspects of your background. We encourage you to:</p>\n<ul>\n<li>Check our <a href=\"https://yourcompany.com/careers\">careers page</a> for other opportunities that might be a better fit</li>\n<li>Connect with us on <a href=\"https://linkedin.com/company/yourcompany\">LinkedIn</a> to stay updated on future openings</li>\n<li>Reapply in the future as your career develops</li>\n</ul>\n\n<p>We wish you all the best in your job search and future career endeavors.</p>\n\n<p>Best regards,<br>\n<strong>Talent Acquisition Team</strong><br>\n[Your Company]</p>\n</div>\n<div class=\"footer\">\n<p>Application ID: {{ $('Extract Application Data').item.json.application_id }}</p>\n</div>\n</body>\n</html>",
        "options": {},
        "subject": "=Update on Your {{ $('Extract Application Data').item.json.position_applied }} Application"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "PIMDNhXNj8Zyiz3G",
          "name": "Gmail account - Deepanshi"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "7e75f755-7d07-4a34-a91e-5a33ae27696b",
      "name": "记录到招聘数据库",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        336,
        784
      ],
      "parameters": {
        "columns": {
          "value": {
            "status": "={{ $json.status || 'Processed' }}",
            "linkedin": "={{ $('Extract Application Data').item.json.linkedin_url }}",
            "portfolio": "={{ $('Extract Application Data').item.json.portfolio_url }}",
            "cultural_fit": "={{ $('AI Candidate Screener').item.json.output.cultural_fit_score }}",
            "skills_match": "={{ $('AI Candidate Screener').item.json.output.skills_match_score }}",
            "overall_score": "={{ $('AI Candidate Screener').item.json.output.overall_score }}",
            "application_id": "={{ $('Extract Application Data').item.json.application_id }}",
            "candidate_name": "={{ $('Extract Application Data').item.json.candidate_name }}",
            "recommendation": "={{ $('AI Candidate Screener').item.json.output.recommendation }}",
            "candidate_email": "={{ $('Extract Application Data').item.json.candidate_email }}",
            "candidate_phone": "={{ $('Extract Application Data').item.json.candidate_phone }}",
            "salary_estimate": "={{ $('AI Candidate Screener').item.json.output.estimated_salary_range }}",
            "application_date": "={{ $('Extract Application Data').item.json.application_date }}",
            "experience_score": "={{ $('AI Candidate Screener').item.json.output.experience_score }}",
            "position_applied": "={{ $('Extract Application Data').item.json.position_applied }}",
            "years_experience": "={{ $('Extract Application Data').item.json.years_experience }}"
          },
          "mappingMode": "defineBelow"
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "YOUR_GOOGLE_SHEET_ID"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "baadadfd-335e-44fb-84d0-0ef98335c76e",
      "name": "便签 - 信息收集",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -3008,
        336
      ],
      "parameters": {
        "color": 5,
        "width": 640,
        "height": 576,
        "content": "## 📝 申请接收"
      },
      "typeVersion": 1
    },
    {
      "id": "54f7865d-5b0f-4dac-8f32-fcf7aeac882e",
      "name": "便签 - 解析",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2272,
        192
      ],
      "parameters": {
        "color": 4,
        "width": 562,
        "height": 724,
        "content": "## 🤖 AI 简历分析"
      },
      "typeVersion": 1
    },
    {
      "id": "4ba29b67-1c31-4793-bed8-ac0f39033c30",
      "name": "便签 - 筛选",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1552,
        80
      ],
      "parameters": {
        "color": 6,
        "width": 500,
        "height": 1116,
        "content": "## 🎯 智能候选人筛选"
      },
      "typeVersion": 1
    },
    {
      "id": "efc3e4dc-a5eb-4b6a-9b24-e863af4838c5",
      "name": "便签 - 路由",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -896,
        -96
      ],
      "parameters": {
        "color": 3,
        "width": 892,
        "height": 1388,
        "content": "## 🚦 智能路由与操作"
      },
      "typeVersion": 1
    },
    {
      "id": "bde3090f-306e-47c0-96c1-5d2737952475",
      "name": "便签 - 分析",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        144,
        288
      ],
      "parameters": {
        "color": 7,
        "width": 496,
        "height": 672,
        "content": "## 📊 招聘分析中心"
      },
      "typeVersion": 1
    },
    {
      "id": "b0ec920b-97b7-425e-a0fa-f30f91a70f31",
      "name": "JotForm 触发器",
      "type": "n8n-nodes-base.jotFormTrigger",
      "position": [
        -2960,
        656
      ],
      "webhookId": "403cee80-bf01-4587-b783-6476e4230454",
      "parameters": {
        "form": "252815294070456"
      },
      "credentials": {
        "jotFormApi": {
          "id": "cOSh16Q5l4e0EB1A",
          "name": "Jotform jitesh@mediajade.com"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "48ef417e-9b90-4fc9-9693-09a0ed4c0e1d",
      "name": "发送消息",
      "type": "n8n-nodes-base.slack",
      "position": [
        -480,
        560
      ],
      "webhookId": "1deb1c6e-1b9c-420c-9262-62441e4261cb",
      "parameters": {
        "select": "channel",
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": ""
        },
        "otherOptions": {}
      },
      "typeVersion": 2.3
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "2637963a-dfda-43a0-967c-21b249f4d5c9",
  "connections": {
    "Strong Yes?": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Maybe or Yes?": {
      "main": [
        [
          {
            "node": "Request Manager Review",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "Send Rejection Email",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Process Resume": {
      "main": [
        [
          {
            "node": "AI Resume Parser",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        [
          {
            "node": "Send Interview Invitation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Download Resume": {
      "main": [
        [
          {
            "node": "Process Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "JotForm Trigger": {
      "main": [
        [
          {
            "node": "Extract Application Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Resume Parser": {
      "main": [
        [
          {
            "node": "AI Candidate Screener",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI Chat Model": {
      "ai_languageModel": [
        [
          {
            "node": "AI Candidate Screener",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Send Rejection Email": {
      "main": [
        [
          {
            "node": "Log to Hiring Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "AI Candidate Screener": {
      "main": [
        [
          {
            "node": "Strong Yes?",
            "type": "main",
            "index": 0
          },
          {
            "node": "Maybe or Yes?",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request Manager Review": {
      "main": [
        [
          {
            "node": "Log to Hiring Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract Application Data": {
      "main": [
        [
          {
            "node": "Download Resume",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "AI Candidate Screener",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Send Interview Invitation": {
      "main": [
        [
          {
            "node": "Log to Hiring Database",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量20
分类-
节点类型13
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

作者
Jitesh Dugar

Jitesh Dugar

@jiteshdugar

AI Automation Specialist - OpenAI, CRM & Automation Expert with a solid understanding of various tools that include Zapier, Make, Zoho CRM, Hubspot, Google Sheets, Airtable, Pipedrive, Google Analytics, and more.

外部链接
在 n8n.io 查看

分享此工作流