--- name: jd-resume-tailor description: 给定一份 JD 和一份现有简历,做"JD 拆解 + 简历定向改写"。拆 JD 抽出硬技能、软技能、加分项;对照简历做 gap 分析;产出针对该岗位重写后的简历,突出相关经验、补齐关键词缺口、并保留候选人真实经历不编造。当用户说"针对这个岗位 / 这家公司改简历""帮我对一下这个 JD""我想投这个职位你看怎么改""把这份简历针对 X 公司优化""做一份定向版简历",或同时给出 JD 文本 + 简历文件时,必须触发本 skill。**请勿用本 skill 做"从零写简历"**——那是 resume-builder 的事。 --- # JD ⇄ Resume Tailor(JD 拆解 + 简历定向改写) 这个 skill 的边界很窄:**只解决"已有 JD + 已有简历,要改一份命中率最高的版本"**。 不做的事: - 写新简历(去 `resume-builder`) - 找方向 / 推荐岗位(去 `job-intent-tracker`) - 出面试题(去 `interview-prep`) --- ## 何时触发 强信号: - 用户给了 JD 链接 / JD 文本 + 一份简历 → **必触发** - "针对这个岗位帮我改简历" - "对照一下这个 JD" - "我想投 X 公司的 Y 岗,帮我看简历" - "做一份定向版" 弱信号(先确认): - 只给了 JD 没有简历 → 问"你的简历方便发我看一下吗?没有的话,我可以先帮你从零做一份(resume-builder)" - 只给了简历说"改简历" → 问"是针对哪个 JD 改?没有 JD 就用 resume-builder 通用优化" --- ## 工作流 ### Step 1: 解析 JD 输入可能是: - 纯文本(用户粘贴) - 链接(**不要**自动 fetch,提醒用户复制 JD 文本进来;若用户授权 fetch,使用 web_fetch) - 截图(用 OCR / 视觉识别,让用户确认抽取结果) - doc/pdf 文件 调用脚本: ```bash python scripts/parse_jd.py --jd-file --out jd_parsed.json ``` 脚本会从 JD 抽出: - **硬技能 must-have**("必须" / "要求" / "至少 X 年" 等强信号词后面的技能) - **硬技能 nice-to-have**("加分" / "优先" / "熟悉者优先" 等弱信号) - **软技能信号**(沟通 / 推动 / 跨部门 / 抗压 等) - **职责动词 + 对象**("负责 X" / "搭建 Y" / "推动 Z") - **特殊要求**(出差 / 学历 / 证书 / 语言 / 城市) 把结果展示给用户,让用户**确认 / 修正抽取是否准确**(关键 must-have 不能漏)。 ### Step 2: 解析简历 输入:用户上传的简历文件(.pdf / .docx / .md / .txt)。 调用对应 skill 解析: - pdf → pdf skill - docx → docx skill 抽出:基本信息、教育、每段工作 / 项目经历的(公司、岗位、时间、职责 bullet)、技能列表。 ### Step 3: Gap 分析 调用: ```bash python scripts/jd_gap.py --jd jd_parsed.json --resume resume.txt --out gap.md ``` 脚本输出三类清单: 1. **完美命中**(JD must-have 在简历里有明确证据) 2. **隐性命中**(JD 要求 X,简历里有 X 的近义经验,但用词不一样 → 改写时可以"提一下") 3. **真缺口**(JD 要求但简历完全没有) 对"真缺口"分两类: - **可补救**:简历里其实做过类似的事,只是没写出来 → 追问用户"你做过 X 吗?" - **不可补救**:用户确实没做过 → **不能编**,建议用户在 cover letter 或 summary 里诚实说明并强调 transferable skill ### Step 4: 定向改写 按以下原则重写简历: **a. 重排经历顺序**:与 JD 最相关的工作 / 项目放最前(不改时间真实性,但可以把项目经历拆成两块"相关项目 / 其他项目") **b. 重写每条 bullet**: - 把 JD 里的"职责动词"自然嵌入 bullet(如 JD 说"主导 ___ 系统设计",简历里就把"参与"改成"主导"——前提是用户确实主导了) - 数字保留并放大("用户 100 万"是好事,别藏起来) - 补 JD 关键词(如 JD 说"A/B 测试",但简历里写的是"灰度对比",改成"A/B 测试(灰度对比)") **c. 重写 Summary**:用 2~3 行总结你为什么是这个岗位的合适人选,**直接对应 JD 的 must-have** **d. 调整技能列表**:把 JD 提到的技能移到最前面(前提是真的会) **e. 不改的事实**: - 公司名、岗位名、起止时间、学历 —— 一字不改 - 项目规模、用户量、收入数据 —— 不能编,只能让用户确认后填准 ### Step 5: 自检 + 报告 输出三个文件: 1. `resume_tailored_<公司>_<岗位>.md`(改写后的简历) 2. `gap_analysis.md`(gap 分析报告) 3. 聊天里给一个 ATS 命中率对比:"改前 X% → 改后 Y%" 附:诚实提醒用户**哪些 bullet 是基于现有信息推测改写的**,让用户复核后再投。 --- ## 反模式(不要做) - ❌ 编造经历("加上一段你没做过的项目"——绝对禁止,哪怕用户要求) - ❌ 把 JD 的整段话直接粘进简历(很容易被 HR 一眼识破,且 ATS 反作弊会标记) - ❌ 关键词堆砌(在末尾塞一长串技能词凑命中率,HR 一眼能看出) - ❌ 把"参与"改成"主导"但没有问用户实际角色 → 必须先核实 - ❌ 不给用户看 gap,自己默默改 → 用户会失去对简历的"理解" ## 与其他 skill 的协作 - 改完后用户说"帮我准备这家公司的面试" → 转 `interview-prep`,把 JD + 改写简历传过去 - 用户说"我想知道还能投哪些类似的岗" → 转 `job-intent-tracker` - 用户说"我现在简历不太行,能不能整体重做" → 转 `resume-builder`