简历评分(三阶段漏斗)
一份简历只有在通过独立的三阶段漏斗审查并将记分卡记录后,才算完成。
这些阶段模拟招聘流程:招聘人员 → 高级工程师 → 招聘经理。每个角色都是不同的视角,
只评判自己能感知的内容。所有角色特质、评分标准、权重和阈值均位于
config/scoring_panel.yaml 中——请按原样使用,不要在此处硬编码。
原则
- 每次都是白板状态。 每个阶段一个子代理,每个子代理都有全新的上下文:它从未见过该候选人,
第一次通过简历了解他们。只向它提供职位描述、简历文本以及其自身的
read_mode/评分标准。切勿传递我们的适配分析、决策记录或之前的分数(锚定效应)。 - 不同的视角,不同的评分标准。 不要将三个阶段共用同一套评分标准。
- 不要取平均分。 裁决是最差的等级,标记在最早失败的那个阶段;跟踪 分数是各阶段得分的最低值。招聘人员的65分和招聘经理的82分平均下来是舒适的 73.5分——但简历在第一阶段就被淘汰了,招聘经理根本不会看到它。
- 评判可读的内容,而非真实的内容。 审阅者面对陌生人的简历时没有真实信息,因此它 只评估文档的说服力——夸大的声明只是未能说服人。真实性是作者的责任: 这就是此仓库从不编造经验的原因(参见构建技能)。
- 对真实文档评分。 从构建好的
.docx文件中提取文本一次,检查其非空, 然后将其内联传递给所有三个阶段(如果阶段收到空文本,它会胡编乱造并给出垃圾分数)。 - 发现不等于修改。 基于发现采取行动绝不能编造。如果职位描述中的关键词需要 真实经验中的支撑要点,否则就是诚实的差距。
流程
- 加载
config/scoring_panel.yaml。 - 收集输入:职位描述(来自记录)、提取的简历文本,确认其是否为一页。
- 在一条消息中(并行) 派遣三个阶段,每个阶段基于
reviewer-prompt-template.md构建。 - 合成:根据每个阶段自身的
pass/borderline确定等级;裁决 = 最早阶段的最差等级 (NO@recruiter、BORDERLINE@hiring_manager或PASS);跟踪分数 =min(gate totals); 共识 = 至少两个阶段独立标记的内容;将每条扣分分类为 可修复 与 固有。 - 在申请记录中写入一个
## Scorecard部分(格式如下)并在其日志中写入一行。
记分卡格式
## Scorecard — YYYY-MM-DD (resume: <output>.pdf)
**Funnel: Recruiter ✅ NN → Staff ⚠️ NN → HM ❌ NN → NO@hiring_manager**
**Weakest gate: NN/100**
| Stage | Score | Sub-scores | Verdict |
|---|---|---|---|
| Recruiter | NN/100 | stack NN/45, seniority NN/30, scan NN/25 | ✅ |
| Staff eng | NN/100 | tech NN/35, projects NN/30, jd NN/35 | ⚠️ |
| HM | NN/100 | job NN/65, level NN/35 | ❌ |
**Probe list (staff):** 1) … 2) … 3) … **Risk memo (HM):** …
**Consensus (>=2 gates):** …
**Deductions:** fixable: … · inherent (interview narrative): …
**Ranked next edits:** 1) … 2) … 3) …
常见错误
- 用我们自己的分析或之前的分数使阶段产生锚定效应。
- 对三个分数取平均值。
- 要求审阅者评估真实性(它只能评估说服力)。
- 让阶段因申请表格单独询问的内容而扣分(参见配置中的
out_of_scope)。 - 将固有差距视为可通过重新措辞修复。
- 通过编造来提高分数。