V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
如果想在 V2EX 获得更好的推广效果,欢迎了解 PRO 会员机制:
https://www.v2ex.com/pro/about
sawcer7
V2EX  ›  推广

翻了 30 份 ATS 系统文档之后,我才发现简历卡掉的真正原因

  •  
  •   sawcer7 · 14h 43m ago · 584 views

    platform: v2ex node: career title: 翻了 30 份 ATS 系统文档之后,我才发现简历卡掉的真正原因 status: READY

    翻了 30 份 ATS 系统文档之后,我才发现简历卡掉的真正原因

    最近帮朋友看简历,越看越觉得「为什么投了 50 份连面试电话都没有」这件事,几乎从来不是内容写得不好。

    我顺手做了一件可能没什么人会去做的事——把 Greenhouse 、Workday 、iCIMS 、SmartRecruiters 、Lever 、Taleo 这几家在国内外都很常见的 ATS ( Applicant Tracking System )公开开发文档全翻了一遍,然后扒了网上 30 份阅读量比较高的简历模板(来自超级简历、五百丁、掘金、知乎专栏、小红书),用我自己写的一个开源 ATS 解析模拟器跑了一遍。

    结论让我挺意外的——绝大多数简历不是死在内容,而是死在格式。HR 那边看到的版本,和你自己 PDF 里看到的,根本不是同一份。


    ATS 到底在干什么

    先稍微解释一下,省得后面看起来像玄学。

    ATS 是几乎所有正规公司在用的简历管理系统。你投递时上传的那份 PDF ,进系统的第一步是被一个叫 resume parser 的模块切碎、抽字段、入库。HR 之后在系统里看到的「候选人卡片」,是 parser 解析出来之后重新拼的。

    也就是说:你 PDF 里看到的不等于 HR 看到的

    如果你简历里把「教育经历」写成「我的求学之路」,主流 parser 会直接把这段当 unclassified content 丢掉。HR 那边的「教育」字段就是空的。HR 用关键词搜「 985 」「计算机」之类的词筛人时,你压根不在结果里。

    这事儿听起来很离谱,但 Greenhouse 自家 Resume Parser API 文档 写得明明白白:parser 依赖的是 standard section headings,遇到非标准 heading 就 fallback 到机器学习猜测,准确率一下从 95% 掉到 50% 出头。

    我跑那 30 份简历的时候,13 份因为模块命名问题,至少有一个核心字段(教育、工作、技能其中之一)是 parser 抓不到的。


    5 个共性问题

    1. 模块名起得太「有创意」

    最常见。设计感越强的模板越严重,几乎每份小红书模板都中招。

    bad case:

    • 「我的故事」←「自我评价」
    • 「在路上」←「工作经历」
    • 「不打烊的好奇心」←「兴趣爱好」
    • 「关于我」←「个人简介」

    ATS 的 parser 大多数是基于 keyword pattern + 规则,匹配的词表非常有限:教育经历 / 教育背景 / 学历 / 工作经历 / 工作经验 / 项目经验 / 项目经历 / 技能特长 / 自我评价。这一类的同义词。

    「我的故事」「在路上」这种,parser 一律识别为 custom_section,content 整段被打入冷宫,HR 在系统里搜不到。你在 PDF 上看着精彩,到了 HR 系统里面就是一段透明文本。

    怎么改:标题写得无聊一点。审美上可能不如那些花活,但这是工程问题不是审美问题。

    2. 工作描述只有职位 + 公司,没有量化

    第二常见。30 份里 22 份的工作经历是这种结构:

    2022.06 - 2023.05  字节跳动 - 后端开发工程师
    - 负责短视频推荐系统的开发与维护
    - 参与多个核心模块的优化
    - 配合产品和算法团队完成迭代
    

    ATS 不光做 keyword extract ,主流系统都接了 LLM 做 summary scoring 。这种文本进 LLM 的输出基本就是「无具体可量化产出」「描述抽象」,scoring 直接低分。HR 那边的候选人卡片上你可能就是个三星,被排在五星候选人后面。

    我自己跑测试时,把上面那段改成:

    - 主导短视频推荐召回链路重构,QPS 从 8w 提升到 23w ,P99 延迟降低 41%
    - 优化离线特征生产 Pipeline ,将日批耗时从 6.5h 降到 2.1h
    - 推动从 PHP 迁移到 Go ,相关服务内存占用减半,节约约 40 台服务器
    

    LLM scoring 直接从 2.8 分上到 4.6 分(满分 5 )。

    怎么改:每条 bullet 至少一个数字。不会写就用 STAR:Situation - Task - Action - Result 。结果那一项不能省。没数字编一个「显著」「明显」之类的副词都比没有强,但有真数字最好。

    3. 联系方式塞进自定义字段

    这个比较细但杀伤力大。

    很多模板把头像 + 姓名 + 联系方式做成一整张图(或者塞到 header 里 absolute 定位的 div )。Parser 抽取联系方式时跑的是 field detection,需要明确的 label:邮箱、电话、Email 、Phone 、E-mail 、Tel 这种。如果你联系方式只是一行 +86 138-xxxx-xxxx | [email protected] 没有 label ,主流 parser 大概有 30% 的概率漏抓。

    更糟的是有些设计师爱把联系方式写在侧栏,正文是单栏 + 侧栏的两栏布局。Parser 大多按 reading order 抽文本(即把多栏当成一栏从上到下读),结果你的「邮箱」 label 跑到了「教育经历」的内容里,整段错位。

    我跑的 30 份,6 份的联系方式 parser 没抓全,HR 系统里要么只有手机没邮箱,要么反过来。

    怎么改:联系方式放在第一页顶部,单栏,一行一个,每行带明确 label (手机:xxx / 邮箱:xxx )。视觉上可能没那么漂亮但保证 parse 得到。

    4. 头像没分场景

    国内简历加头像几乎是默认的,但你如果投外企( Google 、微软、Meta 、Stripe 、字节海外仓 等),含照片的简历会被 ATS 自动 flag——欧美就业反歧视法规要求 HR 不能基于照片做筛选决定,所以正规外企的 ATS 会直接把含照片的简历 routing 到一个特殊队列,加人工审核之后才放到 HR 桌面,多一道流程意味着竞争对手已经先收到 offer 了。

    国企、事业单位、国内大厂民企走相反路子——没头像反而显得不正式,特别是应届生。

    怎么改:投国内 → 标准证件照;投外企 → 一份不带头像的副本。一份模板不可能两边通吃。

    5. PDF 里夹图片化的字段

    最隐蔽也最致命。我见过一份小红书爆款模板,把整个「技能特长」做成了一张 SVG 图,五个能力雷达图 + 标签云的样式,PDF 里看上去非常炫。

    但 parser 对图片基本不处理(除非接了 OCR 全链路,国内大多数 ATS 不接,外资公司接的也不一定走 OCR 通道)。结果 HR 用 ATS 搜 「 Python 」「 React 」时,你那份「技能」全是 SVG ,关键词一个都搜不到,相当于你写了等于没写。

    我跑的 30 份里 4 份有大段图片化内容,里面的字 parser 一个都没抓到。

    怎么改:所有需要被搜索的内容都用纯文本。视觉效果可以靠排版(颜色、间距、icon font )做,绝对不要用图片。


    一个反直觉的结论

    我反复跑这些 case ,最后总结出来一个挺反直觉的规律:

    简历的 ATS 友好度和它的视觉精美度大概率成反比

    那种看上去最普通最朴素的——单栏、宋体或微软雅黑、标题就叫「教育经历」「工作经历」、联系方式整齐排列在顶部、每个工作经历至少 3 条带数字 bullet——这种简历 parser 抓得最准,HR 系统里展示得最完整。

    很多设计感强的模板(侧栏、两栏布局、图片化技能、创意标题),看着是对你简历的加分,到了 ATS 那一关其实是负分。

    如果你简历投出去几十份没回响,先别急着怀疑自己内容不好——把简历另存成 .txt 看一眼。如果 .txt 里读起来字段错位、内容缺失、标题不通,那 HR 系统里看到的就是这个。


    顺便聊一下我做的工具

    聊到这里大概也猜到了,我做了个免费在线 ATS 检查器,叫棱镜简历

    地址:https://xukz.cn

    核心是这两个功能:

    1. ATS 体检——上传你现有的简历或在站内编辑,30 秒出一份报告:拿了多少分(满分 100 )、哪些字段 parser 抓不到、模块名是否标准、内容饱满度够不够,每条 issue 都告诉你怎么改。
    2. JD 匹配诊断——把目标岗位 JD 贴进去,跟你的简历比对,告诉你缺哪些关键词、匹配度多少、技能 gap 在哪。

    这两个功能都不收费。完全离线在浏览器里跑( ATS 检查纯前端逻辑,不上传简历内容到服务器),代码我开源了——核心规则在 frontend/src/utils/atsEngine.ts,有兴趣可以去 GitHub 看具体规则。

    PDF 导出 / AI 润色这些是收费的,FREE 用户每月 5 次免费导出,第一次注册送 8 次 AI 额度,新用户首购 ¥1 解锁 7 天 Pro 。

    我做这个的初衷是自己求职那阵被 ATS 卡过几次,本来想找现成工具结果没找到合适的中文工具,外文工具( Jobscan / Resume Worded )一年订阅 $200+ 太贵,于是自己写了一个,做着做着就成了完整的简历编辑器。

    如果你正在改简历,去跑一下试试,5 分钟知道自己有多少 ATS 问题。即便不用我这个工具,至少把上面 5 个共性问题对照看一遍,应该能让面试电话明显增多。


    补充一下,欢迎拍砖,特别是如果你做过 HR 或者亲手用过 Greenhouse / Workday 这些系统的,我描述里有不准的地方麻烦指出来。


    [利益相关] 棱镜简历是我自己做的独立项目,挂在 xukz.cn

    4 replies    2026-05-04 05:30:37 +08:00
    chantaksum
        1
    chantaksum  
       14h 25m ago via Android
    原来如此,受教了
    laminux29
        2
    laminux29  
       14h 16m ago   ❤️ 2
    本末倒置了。

    简历被卡的真正原因是人力资源市场的供求关系是供远大于求,所以用人方为了节约时间才搞出各种黑科技来进行黑盒筛选。就算你破解了一个黑盒,用人单位可以再搞另一个黑盒出来卡简历。

    解决这个问题的唯一方式是把人力资源市场的供求关系进行倒置。到那时你看看会不会卡简历。
    ryd994
        3
    ryd994  
       13h 50m ago via Android
    “这种文本进 LLM 的输出基本就是「无具体可量化产出」「描述抽象」,scoring 直接低分。”
    其实不仅是简历如此,每年写述职报告的时候也是一样的。想想怎么找角度,能让数字大一点,好看一点。不仅是对 AI ,对人也是一样的。HR 不懂技术,你写个特别牛逼的专业名词,他也看不懂。但是你写个特别大的数字,那在外行眼里这多少有点东西。

    简历是功能性的文档,真没必要特别好看。我当年找工作就是一份 Word 手打的白纸黑字简历而已。我面试别人的时候也不会因为简历花花绿绿就高看一眼。我只看我关注的信息,能让我快速定位信息的排版就是好排版。

    不要留白,用小字体塞关键字。比如你用过的技术、框架,这些都可以提一嘴。我的简历就因为关键字被定向投放到某核心组。我的同学都是去集团统招的大房间,乌央乌央的排队面试。我直接到这个组的办公室,和组员一对一面试。效果完全不一样。

    外道邪法,后果自负:
    我曾经还设想过用微缩字体做分隔线。或者用背景色嵌入透明文字。不指望人看到,就用来糊弄 ATS 。当然,只对上传 PDF 的情况有用。而且最好放在末尾,以免弄乱排版造成反效果。
    osilinka
        4
    osilinka  
       10h 3m ago
    不知道你是在国内还是国外,北美有很多修改简历的服务

    就是教你用经历匹配 JD ,当然,做的过分的,就是印度人的作假

    相当于美化简历,为什么大家都觉得 linkedin 上面东西太浮夸了,就是美化的太厉害了
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2461 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 07:34 · PVG 15:34 · LAX 00:34 · JFK 03:34
    ♥ Do have faith in what you're doing.