resume-tailor
- 仓库:
- Waaangjl/resume-tailor
- 语言:
- Python · LaTeX
- 年份:
- 2026 — 在做
一个 Python 小工具:吃进一份 LaTeX 简历和一份 JD,只重写其中的 bullets——让它读起来像是为这个职位写的。它努力不去越的那条线是:不能编造。如果一条 bullet 写「我在 2025 年 3 月搭了一个 40 标签的现金流模型」,那它可以换时态、换重点、换动词、把更相关的结果提到前面——但不能改成 50 个标签,也不能改成 2 月。
为什么写它
SIPA 的 on-cycle 找工作是一台跑步机。真的跑步机——15 家投行、10 家咨询、12 家气候基金,每一家都要单独 tailor 的简历和 cover letter,每一家都赶在同一个周日截止。
Tailor 本身并不烧脑。无非是一堆小心的复制粘贴,和一堆「哪条 bullet 应该放在第一位」的判断。
我老老实实手工改了第一轮。改到第七份的时候,我注意到自己在重复同样的五个动作:换时态、调 lead bullet、JD 提到「Python」就把它改成「Python(pandas、statsmodels)」。这正好是模型擅长的活——有明确约束的、局部的小改写。
于是我写了它。
它怎么工作
一份 .tex 进,工具解析出每条 \item{...},构造一个上下文(你完整的简历、JD、职位级别、你设的护栏),然后让模型在三条规则下重写每条 bullet:
- 不能加事实。 一条 bullet 里没有数字,重写也不能凭空造一个出来。
- 不能改专有名词。 Wood Mackenzie 还是 Wood Mackenzie,不许换成「一家研究机构」。
- 对齐 JD 的词。 JD 说 valuation 就不要写 modeling。
输出是一份新 .tex 文件,加一个彩色 diff——让你扫一眼改了什么,再决定要不要接受。还有一个 cover letter 模式,套同样的约束跑一份五段式模板。
后端可以接 Claude Code(用 claude -p 当 inference)或任何 LiteLLM 支持的 endpoint。我最常用的是 Sonnet 跑 tailor,Opus 留给那种感觉「需要再过一遍」的简历。
它不做的事
- 不排版。你自己
pdflatex。 - 不追踪结果。没有「v3 拿到了 Y 公司的面试」这种闭环。我试着接过一次,最后觉得这事儿挺别扭,就拆了。
- 不对齐文化。「这家公司氛围 collegial,写得暖一点」——模型会照做,但效果一般。我把这个 feature 砍了。
一句话警告
这类工具边上有一条真实的伦理线。Tailor 没问题;编造不行。上面那三条规则的全部意义就是把工具留在线的正确一侧——但当然,用户可以覆盖任何规则、让模型说谎。我希望你别。
克隆
git clone https://github.com/Waaangjl/resume-tailor
cd resume-tailor
pip install -r requirements.txt
python tailor.py --resume me.tex --jd job.txt --out me-tailored.tex