实战 SOP
实战 SOP

招聘简历自动筛选工作流:JD 匹配打分一键分流

招聘季一份 JD 收两三百份简历,人工筛慢且评分漂移。这个 n8n 工作流把简历筛选收口成一条管道:Webhook/邮箱接收简历 -> 提取文本 -> LLM 按 JD 对技能匹配/经验/稳定性/风险打分并输出 tier 与理由 -> IF 判断是否过线 -> Switch 路由到面试队列/备选库/婉拒邮件 -> 写入飞书多维表格或 ATS -> 通知招聘者。Prompt 明确禁止使用性别/年龄/婚育/种族/户籍等受保护属性评分,简历处理须遵守《个人信息保护法》/GDPR,AI 评分仅作辅助、最终决策由人。

发布于 2026年8月4日5 分钟阅读
<!-- workflow-resume-screening | resource | 招聘简历自动筛选工作流:JD 匹配打分一键分流 -->

招聘季一份 JD 收两三百份简历是常事。HR 一份份打开 PDF、肉眼对照 JD 划重点、Excel 登记评分、再约面发拒信--单份简历平均五分钟,三百份就是二十五小时纯人工,招完一轮人已是半月后。更难的是评分标准漂移:头十份看得仔细,到第一百份"差不多就行";同一份简历上午看给 70 分、下午累了给 55 分;候选人的学校、性别、年龄在不知不觉中影响判断,公平性既难保证也难自证。

这个 n8n 工作流把简历筛选收口成一条管道:简历通过 Webhook 或邮箱附件进来,自动提取文本,LLM 按 JD 对技能匹配、经验年限、稳定性、风险信号打分并输出理由,IF 判断 tier 是否过线,再 Switch 路由到面试队列 / 备选库 / 婉拒邮件,同步写入飞书多维表格或 ATS、通知招聘者。一份简历从投递到分流压到分钟级,HR 只在面试队列上花时间。

合规是底线,不是加分项。LLM Prompt 明确禁止使用性别、年龄、婚育、种族、户籍、残疾、宗教、政治面貌等受保护属性做评分,只看技能、经验、项目与 JD 的匹配;简历含个人信息须遵守《个人信息保护法》与 GDPR--获取候选人授权、最小化处理、设定留存期限;AI 评分仅作辅助,最终是否面试由人决定。各地法规不同,以当地法律为准。

工作流链路

Webhook 触发(招聘官网表单 / 邮箱附件 / IM bot 转发)-> Code 节点提取文本(PDF / Word 解析为纯文本,去格式噪音)-> LLM 按 JD 打分(skill_match / experience / stability / risk 四维,输出 score + tier + reason + 面试建议问题)-> IF 达标(tier 为 interview 或 pool)-> Switch 路由(面试 / 备选)-> 写入飞书多维表格或 ATS -> 通知招聘者;IF 不达标(tier 为 reject)-> 发婉拒邮件 -> 状态回写。

和本站《客户线索自动收集打分通知工作流》(workflow-lead-crm-automation) 思路一脉相承:线索和简历都是"非结构化输入进来、按规则打分、按分数路由"的结构,打分维度换成技能匹配与经验,路由出口换成面试队列与 ATS。与《客户反馈分析工作流》(workflow-customer-feedback-analysis) 则共享"LLM 抽字段 + 写表 + 通知"的骨架。

下载模板

使用步骤

  1. 导入:n8n -> Workflows -> Import from File,选 workflow-resume-screening.json
  2. Webhook 节点:复制 Production URL 接到招聘官网投递表单或邮件转发规则。简历以附件或 base64 进来均可,统一由下一个节点解析
  3. 提取文本节点(Code):把 PDF / Word 解析成纯文本。n8n 自带 Extract from File 节点能处理 PDF;Word 建议 Preceding node 转 .txt 或调第三方解析 API。同时清洗页眉页脚分隔线、邮箱签名、特殊字符,只保留姓名、联系方式、教育、工作经历、项目、技能这几段结构化文本。以联系方式或姓名加来源生成去重键
  4. LLM 打分节点:填 Kimi / DeepSeek / Qwen key,8k 上下文够用。Prompt 见下,要求模型输出 skill_match(0-100)、experience(0-100)、stability(0-100)、risk(low/medium/high)、score(综合 0-100)、tier(interview 进面试 / pool 备选 / reject 婉拒 三选一)、reason(百字内)、interview_questions(建议追问两三条)。关键约束:Prompt 明确禁止使用性别 / 年龄 / 婚育 / 种族 / 户籍等受保护属性,模型只看技能与经历
  5. IF 达标节点:取 tier 等于 interview 或 pool 走达标分支,否则(reject)走婉拒分支。阈值逻辑编码在 Prompt 的 tier 定义里:score>=80 进面试、60-79 备选、<60 婉拒。阈值按岗位松紧调--核心岗把 interview 门槛提到 85,储备岗放到 50
  6. Switch 路由节点:达标后再分流--tier 为 interview 进面试队列,pool 进备选库。备选不是拒绝,是"有坑位再捞"
  7. 写入飞书 / ATS 节点:HTTP Request 调飞书多维表格 API 或 ATS(Moka / 北森 / Greenhouse)的写入接口,字段含姓名、联系方式、score、risk、reason、interview_questions、来源、投递时间、路由。这是后面统计漏斗与复盘的基础
  8. 发婉拒邮件节点:tier 为 reject 走这里。HTTP Request 调邮件 API(Resend / 阿里云邮件推送),模板化回复--感谢投递 + 不匹配的泛化原因(不写具体分数、不点评个人属性)+ 保留简历入库的告知并给撤回入口。措辞过一遍法务,别承诺"未来优先考虑"
  9. 通知招聘者节点:面试队列命中时,Slack / 飞书 / 钉钉群机器人推一条带候选人姓名、岗位、score、risk、interview_questions 的卡片,招聘者一眼判断要不要抢时间约面
  10. 状态回写节点:HTTP Request PATCH 回 ATS,标记 status=screened + score + tier + risk + screened_at。闭环关键--简历不再停留在"已收到",而是有明确分流结果可查
  11. 试运行:手动投三份测试简历--一份明显匹配、一份边缘、一份明显不匹配,看是否分别进面试队列、备选库、婉拒邮件,飞书表是否有记录,招聘者是否收到通知

配套 Prompt(LLM 简历按 JD 打分)

Prompt
你是招聘助理,按 JD 给候选人简历打分,输出 JSON:
- skill_match:0-100,技能与 JD 关键词的匹配度
- experience:0-100,工作年限与项目经验与岗位要求契合度
- stability:0-100,跳槽频率与履历连贯性(频繁跳槽扣分)
- risk:low / medium / high,风险信号(空窗期过长、经历与 JD 严重不符、简历矛盾)
- score:综合 0-100
- tier:interview(score>=80 进面试)/ pool(60-79 备选)/ reject(<60 婉拒),三选一
- reason:百字内说明打分依据,引用简历事实
- interview_questions:建议面试追问 2-3 条
规则:仅依据技能、经验、项目、履历判断;禁止使用性别、年龄、婚育、种族、户籍、残疾、宗教、政治面貌等受保护属性评分,如简历中出现这些信息一律忽略;不编造简历中没有的事实;信息严重不足时 score 默认 50、tier 默认 pool 并在 reason 前加 [信息不足]。
JD:{{jd}}
简历文本:{{resume_text}}

进阶

  • 阈值动态化:不同岗位、不同级别用不同门槛。把 tier 的分数边界存在飞书表格或配置中心,Code 节点按岗位名取边界,再让 LLM 只输出原始 score、由 Code 节点算 tier,避免阈值改了要重发 Prompt
  • 去重防刷:同一邮箱或手机号短期内重复投递,Code 节点先查 ATS 是否已存在,命中则更新 score 不重复建记录,防止候选人刷分也防止重复婉拒
  • 人工复核层:score 落在边界上下 5 分的灰区,不直接路由,先进人工复核队列。这部分边界 case 最有价值,攒下来能反向优化 Prompt
  • 面试问题预生成:LLM 输出的 interview_questions 直接送给面试官,节省面试准备时间。提示面试官这是 AI 建议仅供参考,最终考察点以人为主
  • 漏斗统计:所有分流结果入飞书多维表格,按岗位、来源、score 段位出漏斗--投递数 / 过筛数 / 面试数 / offer 数。"哪个渠道简历质量最高"比"哪个渠道简历最多"更值钱

踩坑

  • Prompt 必须写死反歧视约束:光说"客观打分"不够,受保护属性必须逐项列出禁用。模型默认会把"35 岁""女""未婚"这些信息纳入考量,不写死就会隐性歧视,且事后难以自证清白。这条是合规红线,不是优化项
  • 解析别只靠一个节点:PDF 简历格式千奇百怪,扫描版 PDF 直接 Extract from File 会拿到空文本。加一个 IF 判断文本长度,过短就路由到 OCR 降级流程(调云厂商 OCR API),否则候选人简历明明匹配却被打成 0 分
  • 婉拒邮件别写具体分数:写"您的情况与岗位匹配度较低"足够,别写"您得了 42 分"。具体分数既不专业也可能引发申诉与争议
  • 留存期限要合规:简历含身份证号、家庭住址等敏感信息,《个人信息保护法》要求最小化处理与明确留存期。婉拒的简历别无限期留库,按法规设 30 天或 6 个月自动删除;备选库候选人入库前要有授权勾选,并给撤回入口
  • AI 评分别当终审:score 只是辅助,最终是否面试由招聘者定。在 ATS 里保留"AI 建议"与"招聘者决定"两列,定期对账--AI 一致通过的岗有没有招进来、AI 不看好的人面下来如何,反向校准 Prompt
  • 别让工作流替代沟通:自动化处理的是分流与登记,不是决策。关键岗位的婉拒建议人工再过一遍,避免错杀--一份简历的 LLM 评分误差,对候选人是几个月的等待

参考来源

本文由 AI 辅助生成,经人工审核编辑。最后更新:2026-08-04

相关文章