jialong@columbia:~/site$cat ./lab/resume-tailor.md
主页
> 实验室 · Waaangjl/resume-tailor

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:

  1. 不能加事实。 一条 bullet 里没有数字,重写也不能凭空造一个出来。
  2. 不能改专有名词。 Wood Mackenzie 还是 Wood Mackenzie,不许换成「一家研究机构」。
  3. 对齐 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

仓库:github.com/Waaangjl/resume-tailor ↗