如何在Dify中设计一个HR智能简历筛选与评估系统
想象一下,让HR从每天机械地筛选几百份简历中解放出来——系统自动解析PDF/Word简历,按岗位要求提取关键信息,执行硬性门槛过滤,计算软性能力匹配分,最后输出一份带排名和理由的候选人清单。整个过程不依赖算法工程师,也不需要写一行代码。这就是HR智能简历筛选系统的核心价值。
你需要让HR从每天筛几百份简历的机械劳动中解脱出来,系统能自动解析PDF/Word简历、按岗位JD提取关键信息、执行硬性门槛过滤、计算软性能力匹配分,并输出带排名和理由的候选人清单——整个过程不依赖算法工程师,也不需要写代码。
搭建四阶段筛选流水线
打开Dify控制台,点击「工作流」,新建一个工作流,命名为“HR智能简历筛选官”。接下来,拖入5个核心节点,按顺序连接好:开始节点 → 迭代节点 → 文档解析节点 → 条件分支节点 → 总结节点。迭代节点是批量处理的关键——它会把上传的每份简历单独送入后续流程,避免所有简历混在一起导致信息错乱。最后,在开始节点配置两个输入变量:
【简历文件列表】
【岗位JD文本】
精准解析多格式简历内容
一种方式是直接用Dify内置的文档提取器:在迭代节点后接一个文档提取器,把简历文件直接拖进去,它就能自动识别PDF/Word/TXT,输出清洗后的纯文本。这个办法对双层PDF支持不错,但遇到扫描图转PDF或者复杂表格时,文字错位率可能高达40%。
另一种方式是用自定义代码节点增强解析鲁棒性。替换文档提取器为代码节点,粘贴PyMuPDF适配器脚本(知识库中已提供完整代码),重点修改clip_top=60和clip_bottom=75两个参数——这是为了裁掉常见招聘平台导出PDF的页眉页脚,不调这个值会导致姓名、联系方式等关键字段被截断。记住,如果跳过文本清洗环节,模型会把“·”“●”“◆”等项目符号误识别为技能关键词,导致“Python●”被当成独立技能计入评分。
构建可解释的多维评分模型
第一步,从JD中提炼结构化评估维度。在文档解析节点后加一个大模型节点,提示词设定为:“你是一名资深技术招聘官,请严格按以下格式提取JD中的硬性要求和软性能力:{学历要求:[本科/硕士];年限要求:[3年];必备技能:[Python, SQL];加分项:[大模型微调经验];软性指标:[沟通表达、项目推动力]}”。注意输出必须是JSON格式,禁止自由发挥。
第二步,设计带权重的打分逻辑。再加一个大模型节点,输入为解析后的简历文本加上一步提取的JD结构体,提示词强制要求:“按以下规则逐项打分(满分100):学历匹配度占15%,年限匹配度占10%,必备技能覆盖率占30%,加分项满足数占20%,软性指标语义匹配度占25%。最后给出总分及每项得分依据,用中文分点陈述。”
第三步,插入条件分支做硬性过滤。在打分节点后接条件分支节点,设置规则:“若学历匹配度==0 OR 年限匹配度==0,则路由至‘淘汰’分支;否则进入‘入围’分支”。注意,这个分支必须放在打分流程之后,不能前置,否则系统会因缺少评分数据而中断。
生成可交付的决策报告
在“入围”分支末端添加一个变量聚合节点,将所有候选人的姓名、总分、各项子分、淘汰原因(如有)汇总为一个列表变量。接着拖入一个大模型节点,提示词为:“你是一位专业HRBP,请基于以下结构化数据生成一份给面试官的简明推荐报告:第一段总结TOP3候选人整体匹配特征;第二段用表格呈现姓名、总分、关键优势(不超过15字)、待验证风险点(如‘无云原生项目经历’);第三段给出面试建议聚焦方向。全部用中文,禁用Markdown语法。”最后接一个结束节点,将大模型输出设为工作流返回值。这样,用户上传压缩包后点击运行,30秒内就能获得带分析逻辑的PDF格式推荐报告。