简历筛选助手(resume-screening)
面向招聘人员的简历筛选工具:输入岗位 JD 与一批简历,输出「结构化评分 + 推荐结论 + 可读摘要 + 符合简历打包」。也支持对单份简历深度评估。
三步用法
- 放简历:把简历文件(PDF/Word/txt)或压缩包放进
resumes/目录;或直接给文件路径 / 粘贴简历文本 / 上传附件。
后三种最终统一归入resumes/目录参与扫描(粘贴文本写成.txt,路径/附件复制到resumes/)。 - 给 JD:粘贴岗位描述(或上传 JD 文件 / 口述岗位要求)。
- 等报告:技能自动完成解析 → 评分 → 定档,输出执行摘要与完整报告到
output/。
五步流程(顺序锁死,禁止跳步)
| 步骤 | 脚本 | 做什么 | 完成标记 |
|---|---|---|---|
| 1 | steps/step_01_prepare.py |
结构化 JD + 权重咨询 | step_01.done |
| 2 | steps/step_02_collect.py |
收集简历 + 递归解压 | step_02.done |
| 3 | steps/step_03_parse.py |
解析简历 + 字段提取 | step_03.done |
| 4 | steps/step_04_score.py |
硬性核对 + 打分 + 定档 | step_04.done |
| 5 | steps/step_05_output.py |
打包 + 摘要报告 | step_05.done |
> 每个脚本执行前必须检测上一步标记,缺失则终止。全部完成后运行 verify/final_verify.py 终审。
用户交互点(不可静默,必过闸口)
| 交互点 | 位置 | 内容 |
|---|---|---|
| ① 权重咨询 | step_01 | 展示当前权重 → 询问是否调整 → 校验(总和=100%)→ 回显确认 |
| ② 硬性存疑确认 | step_04 | 硬性条件字段缺失 / 表述过严时,向用户确认该项是否必需,不擅自误杀 |
| ③ 输出形式询问 | step_05 | 摘要报告必出;询问是否需要打包符合简历(--pack 触发) |
评分标准(简)
- 4 维度加权:基本条件 20% + 工作经历 35% + 技能匹配 30% + 综合素质 15%(0~10 分制)
- 硬性条件一票否决:学历 / 年限 / 必备技能任一不符 → 直接「不推荐」
- 4 档结论:⭐强烈推荐 ≥8.5 / ✅推荐 7.0~8.5 / ⚠️待定 5.0~7.0 / ❌不推荐 <5.0
- 详细打分细则见
references/评分细则.md;权重可在 step_01 调整(总和须 =100%)
输出
- 报告模板
output/报告模板.md(step_05 自动生成,含 JD/评分权重/OCR 名单/失败名单/结果表骨架,LLM 据此填充) - 摘要报告
output/筛选报告.md:开头含「筛选要求(JD)」+「评分权重」+「执行摘要」+「总览」+「OCR 名单」+「失败名单」+ 排名总表 + 分层详情 - 符合简历打包
output/符合简历_*.zip(按需触发--pack,含清单.txt) - 单份深度评估:仅 1 份有效简历时,输出画像 / 硬性核对 / 四维评分 / 亮点 / 风险 / 面试建议 / 结论
边界处理
- 扫描版 PDF(无文本层)→ 提示「简历中的 XXX 是 OCR 版本,不支持评估」,报告列出 OCR 名单,不阻断其余简历
- 依赖缺失(pdfplumber/python-docx/antiword 未装)→ 标「依赖缺失」并提示安装,不误判为「解析失败」
- 单份解析失败 → 标记「解析失败」并附原因,不中断整体
- 硬性字段缺失 → 降「待定」并标注,不误判「不推荐」
依赖
pip install -r requirements.txt