简历 ATS 投递体检
回答一个具体问题:这份简历投出去,机器能不能读全、HR 能不能在 10 秒内看到价值。
不做职业规划,不代写经历,不编数字。只做三件事:找出被 ATS 丢掉的格式、找出没有结果的描述、找出 JD 要求但简历没体现的缺口。
交付物
| 文件 | 内容 |
|---|---|
简历体检-<姓名或文件名>-<YYYYMMDD>.md |
维度分 + 问题清单 + JD 缺口表 + 开头预览(已脱敏) |
findings.json |
机器可读结果,便于批量或二次处理 |
何时使用
- 投递前自检;投了很多没回音,想定位原因。
- 用户提到:简历、ATS、关键词、JD 匹配、简历优化、简历筛选、量化成果。
- 转行/应届/跳槽,需要判断「现有经历能不能支撑目标岗位」。
不适用:
- 代写整份简历、编造项目或数字——拒绝,并说明风险。
- 职业规划、薪资谈判、面试表现辅导——不同技能。
- 招聘方筛人、背调——这是候选人侧工具。
前置检查
- 格式:
.docx最好,.txt/.md可查内容但查不了版式;PDF 会丢失 ATS 格式信息,让用户导出 Word。 - JD(可选但强烈建议):没有 JD 只能查通用问题,无法判断匹配度。
- 隐私:简历含手机号、邮箱、公司名。只在本机处理;报告预览自动脱敏;不要把原文贴到外部服务。
- 事实边界:改写只能基于用户提供的事实;缺数字时让用户补,不要生成「提升 30%」。
缺 JD 时先跑通用体检,再问一句「有目标岗位 JD 吗?有的话匹配度会准很多」。
执行流程
第 1 步:跑脚本
# 只查通用问题
python scripts/resume_lint.py "简历.docx" --out "简历体检.md" --json findings.json
# 带 JD 查匹配
python scripts/resume_lint.py "简历.docx" --jd "JD.txt" --out "简历体检.md" --json findings.json
退出码:0 无严重问题;1 有严重问题;2 文件无法解析。
第 2 步:先给结论,再给证据
- 一句话:几分、什么等级、最致命的是哪一项。
- 三个优先动作:按报告「先改这 3 件」,每条说清改哪一句、改成什么。
- JD 缺口:只列最靠前的 3 条,附「简历中最接近的一条 + 相似度」。
- 完整报告:文件给用户,正文不倒表格。
第 3 步:给改写示范(不是替写)
挑 2–3 条最弱的描述,按「动作 + 对象 + 方法 + 结果」给示范,并留空让用户填真实数字:
原:负责用户增长,参与活动策划
改:主导 3 场拉新活动(预算 5 万),通过社群裂变把注册转化率从 __% 提到 __%
数字必须由用户提供;用户给不出,就改成范围或规模(「覆盖 2000 人」),不要编。
第 4 步:解释「为什么」
- ATS 为什么读不到表格/文本框:解析器按段落和项目符号读,表格单元格常被丢弃。
- 为什么量化重要:HR 平均 7–10 秒扫一份简历,数字是最快的价值信号。
- 为什么关键词要覆盖:ATS 和 HR 都用 JD 关键词做初筛,但堆关键词会被面试问穿。
判断规则
| 指标 | 合格线 | 低于线怎么处理 |
|---|---|---|
| 成果量化比例 | ≥ 40% 的描述含数字/结果 | 严重项;挑 3 条最核心的经历先补 |
| 弱动词占比 | ≤ 30% | 建议项;换成主导/搭建/优化/交付 |
| 长度 | 3–8 年经验 ≤ 2 页(约 3500 字) | 建议项;删早期无关经历 |
| 时间线 | 每段有起止,倒序 | 缺起止判建议;不倒序判建议 |
| 模块 | 工作/教育/项目/技能 | 缺项判建议,不轻易判严重 |
| ATS 风险 | 无表格/文本框/图片/分栏 | 有则判严重,先改格式 |
| JD 关键词覆盖 | ≥ 45% | 严重项;逐条映射,不鼓励硬堆 |
特殊情形:
- 应届生没有工作经历:用项目/实习/课程项目替代,不因「缺工作经历」扣分。
- 转行:允许用「可迁移能力」映射,但要在报告里标注「非直接经验」。
- 自由职业/创业:按项目制写,时间线用「项目周期」而不是「在职」。
输出格式
报告固定七节:
一、维度分 结构 / 内容 / 匹配 / 格式 / 语言
二、问题清单 级别 / 模块 / 问题 / 怎么改
三、先改这 3 件 严重项按影响排序
四、JD 匹配 未覆盖要求 + 最接近的一条 + 相似度
五、ATS 兼容性 表格/文本框/图片/分栏/页眉
六、开头预览 已脱敏,检查第一屏信息
七、边界 不判断真假、不保证面试
正文回复骨架(≤10 行):
体检分 62/100,C(需重写)。最致命的是:ATS 读不到表格 + 0% 量化。
先改 3 件:①简历改成单栏纯文字 ②3 条核心经历补数字 ③补 JD 里的 A/B 测试经验
JD 关键词覆盖 19%,缺口集中在「留存/漏斗/A/B」。
报告:简历体检-张明-20261105.md
常见错误 → 怎么改(反模式)
| 反模式 | 问题 | 正确做法 |
|---|---|---|
| 用 PDF 投递 | 多数 ATS 对 PDF 解析差,版式信息丢失 | 导出 .docx;按平台要求再选 PDF |
| 用表格做两栏排版 | 解析顺序错乱,右栏内容可能全丢 | 单栏、纯文字、项目符号 |
| 把联系方式放页眉 | 页眉常被丢弃 | 放正文第一行 |
| 每条都写「负责」 | 只说明职责,不说明结果 | 用「主导/搭建/优化」+ 数字 |
| 堆 JD 关键词 | 面试一问就穿,且显得空洞 | 每条关键词配一个真实场景 |
| 编造数字 | 背调/面试风险,可能被辞退 | 用范围、规模、排名替代 |
| 一份简历投所有岗 | 匹配度低 | 按岗位族做 2–3 个版本 |
FAQ
Q:没有数字怎么办?
A:用「规模、范围、排名、频率、金额、人数」替代。例:「维护 200+ 客户」「覆盖 5 个城市」「每周产出 3 篇」。实在没有,就写方法和结果状态,不要编。
Q:JD 关键词覆盖多少算够?
A:硬性要求(学历、年限、证书、核心技术)尽量 100% 对应;软性要求 45%–70% 即可。覆盖率不是越高越好,堆词会被追问。
Q:应届生也要量化吗?
A:要,但量化的对象是项目/实习/竞赛:参与人数、时长、产出、排名、节省的时间。
Q:ATS 到底是什么?
A:企业用来收集和初筛简历的系统(如北森、Moka、Workday)。它先解析成结构化字段,再按关键词/条件筛。解析失败,人再优秀也看不到。
Q:报告里的相似度是怎么算的?
A:字符级 2-gram 重合,属于粗筛;同义改写(「拉新」vs「获客」)会被低估。它的用途是找缺口,不是打分。
Q:能帮我改完整份简历吗?
A:可以给逐条改写建议和示范,但事实必须你提供。代写编造的经历,面试和背调都会出问题。
验收清单
- [ ] 报告里没有出现完整手机号/邮箱(预览已脱敏)。
- [ ] 每条建议都对应一个具体句子或格式问题,不是泛泛而谈。
- [ ] 改写示范中的数字用
__留空,没有替用户编造。 - [ ] JD 缺口按相似度排序,并说明「粗筛,不是语义匹配」。
- [ ] 明确说了「不保证面试/录用」。
- [ ] 对应届/转行做了例外处理,没有机械扣分。
边界与免责
- 不判断经历真假,不替代 HR/背调。
- ATS 厂商解析规则不同,本报告按通用风险给出,不针对某一家系统。
- JD 匹配是字符级粗筛,同义表达可能漏判。
- 不承诺面试率、录用率;简历只是投递环节的一个变量。
- 简历原文只在本机处理,不上传、不写入外部服务。
参考资源
references/ats-rules.md—— ATS 解析原理、格式红线、各系统差异。references/rewrite-formulas.md—— XYZ/STAR 改写公式与 20 组对照。references/sample-report.md—— 报告样例。templates/简历体检整改表.md—— 逐条整改跟踪表。scripts/resume_lint.py—— 体检脚本;参数与退出码见文件头。