简历初筛代理(recruit-screen-bot)
把「一批候选人结构化数据」与「岗位筛选条件」做离线、确定性的规则匹配,
逐条求值硬性条件与择优条件,输出四档分级结果与逐条条件明细。
纯标准库、不联网、不读工作区、不生成内容。
只做规则匹配与分级提示,不替代用人决策,不构成录用或淘汰结论。
触发场景
- 「这批简历帮我初筛一下,哪些该进面试」
- 「按这个岗位要求筛一遍,排个优先级」
- 「简历太多看不过来,先帮我分流」
- 「这个人符不符合岗位的硬性条件」
- HR / 招聘专员 / 猎头 / 用人部门收到大批简历后的第一道分流
用法
# 基本用法(条件文件 + 候选人文件)
python3 recruit_screen_bot.py screen -c 岗位条件.json -r 候选人.csv --as-of 2026-09-16
# 读标准输入(候选人缺省从 stdin 读)
cat 候选人.csv | python3 recruit_screen_bot.py -c 岗位条件.json --as-of 2026-09-16
# 机器可读 JSON(便于接入流程)
python3 recruit_screen_bot.py screen -c 岗位条件.json -r 候选人.csv --json
# 只展示指定档位、每档限 N 人
python3 recruit_screen_bot.py screen -c 岗位条件.json -r 候选人.csv --tier ADVANCE,HOLD --limit 20
# 规则目录 / 内置自测
python3 recruit_screen_bot.py config
python3 recruit_screen_bot.py validate
四档分级
| 档位 | 含义 | 触发 |
|---|---|---|
ADVANCE |
推荐进入下一轮 | 全部硬性通过且评分 ≥ 阈值(缺省 70) |
HOLD |
待人工复核 | 全部硬性通过但评分低于阈值;或存在硬性待确认但未达信息不足阈值 |
INSUFFICIENT |
信息不足 | 硬性条件取值缺失条数 ≥ 阈值(缺省 2) |
REJECT |
不推荐 | 命中排除项,或存在硬性条件不通过 |
退出码
0= 全部候选人可推进,且无需人工处理的告警(可能仍有 LOW 级提示)1= 存在待人工处理项(不推荐 / 待复核 / 信息不足),或公平性告警,或数据告警(重复 / 缺姓名 / 权重非法),或存在高等级告警2= 参数错误或文件不可读
输入格式
- 岗位条件:JSON(
must/prefer/disqualifiers,或criteria/排除项)或 CSV(字段, 运算符, 值, 层级, 分组)。 - 候选人数据:JSON 数组 或 含表头的 CSV(编码自动探测 utf-8-sig → utf-8 → gbk → latin-1)。
- 条件写法:
字段 运算符 值,分号分隔;前缀~表示择优条件。 - 运算符:
== != > >= < <= in not_in contains not_contains between exists not_exists。
招聘公平性红线
本工具把 16 个受保护字段(性别、年龄、出生日期、婚姻状况、生育状况、子女状况、婚育计划、户籍、籍贯、民族、宗教信仰、健康状况、残疾状况、照片、身高、体重)从筛选条件中拦截剔除,不参与任何匹配;
并对 3 个敏感字段(政治面貌、户口性质、是否本地)给出谨慎使用提示。
依据《中华人民共和国就业促进法》《中华人民共和国妇女权益保障法》《中华人民共和国残疾人保障法》及人力资源社会保障部等九部门《关于进一步规范招聘行为促进妇女就业的通知》。
红线
本工具只做「规则匹配与分级提示」,不替用户下录用或淘汰结论,不替代用人决策与面试考察。
评分与分档仅供人工复核前的排序参考。