Resume Job Radar
把"按简历找岗位"变成一条可长期无人值守的流水线:简历进 → 画像出 → 每日检索 → 去重过滤 → 邮件速递 → 投递台账闭环。
核心设计原则:
- 简历与配置全部留白、由运行时采集。安装后用户只需上传一份简历,剩余参数在对话中一次性确认即可开跑。
- 定时任务不需要用户二次要求。用户下达的只是一条"帮我找岗位"的指令;本技能在首轮邮件发送成功后,自动建立每日定时速递。用户唯一需要提供的两项(收件邮箱、发送时间)已在步骤 0 的确认环节一次问清,之后不再追问。
- 本技能不涉及电脑电源管理(不创建唤醒/休眠/计划任务)。若用户电脑在定时点处于睡眠,WorkBuddy 会在客户端恢复后自动补跑,表现为"邮件晚到"而非"邮件丢失"——这个行为要在回复里主动说明,避免用户以为任务挂了。
何时使用
- 用户上传简历(PDF / DOCX / 图片)并要求"帮我找合适的岗位"
- 用户要求"每天自动检索岗位发到我邮箱"
- 用户追问"今天有没有新岗位""某岗位投了没""明天记得过滤"
- 用户要求调整速递发送时间
工作流总览
[0] 接收简历 → 提取文本 → 提炼画像 → 与用户确认配置
↓
[1] 初始化工作区(画像 / 配置 / 台账 / 去重表)
↓
[2] 首轮检索 → 三重过滤 → 生成速递 → 发邮件(先跑通一次再谈自动化)
↓
[3] 自动建立每日定时速递(无需用户再次指令;时间沿用步骤 0 确认的结果)
↓
[4] 每日运行:过滤 → 分级 → 发送 → 归档
↓
[5] 投递反馈 → 台账状态流转 → 后续速递自动过滤
步骤 0:接收简历并提炼画像(留白部分在这里填充)
简历文本提取
.pdf不能用 Read 工具直接读(二进制)。改用脚本:
bash
python scripts/extract_resume_text.py "<简历绝对路径>"
脚本优先用 pypdf,缺失时回退 pdftotext,并把纯文本写到 <同目录>/<文件名>.txt。缺依赖时按脚本输出提示安装(pip install pypdf)。
- .docx 可用 Read 直接读;扫描件 PDF 提取为空时,改用 Read 工具按图片读取(多模态识别)。
- 提取失败不要瞎猜,直接告诉用户并请其粘贴文本或换格式。
提炼画像
把结果整理成结构化画像,字段模板见 references/intake-template.md 的「画像区」。必须覆盖:
- 基本信息:年龄 / 现居城市 / 工作年限 / 最高学历与专业
- 期望:月薪区间、目标城市与优先级、可接受的通勤与出差边界
- 核心经历:按时间倒序列出 2-4 段,每段写清"做了什么 + 可量化结果"
- 硬技能清单
- 求职方向:按优先级编号列 3-4 个(如 ①客户成功 ②实施交付 ③项目经理 ④产品运营)
- 硬伤:明确写出学历、年限、专业、语言等可能被机筛卡住的点
确认配置
用 AskUserQuestion 一次性问清,不要分多轮打扰:
- 目标城市与优先级
- 期望月薪区间
- 求职方向优先级(给出从画像提炼的默认值让用户改)
- 收件邮箱与速递发送时间
关于硬伤的处理原则:坦率写出来并告诉用户哪些岗位会被机筛掉。不要粉饰,也不要因此就不推荐——只推荐门槛确实没卡死的岗位,并在简报里标注风险。
步骤 1:初始化工作区
在当前工作区创建固定目录结构(本技能所有路径引用都基于它):
.workbuddy/job-monitor/
├── profile.md 求职画像(步骤 0 生成)
├── config.md 筛选配置(城市/薪资/方向/邮箱/时间)
├── applied-jobs.md 已投递 + 收藏待投递台账(驱动过滤)
├── seen-jobs.md 全量去重记录(驱动过滤)
└── 速递-YYYY-MM-DD.md 每日简报归档
初始模板见 assets/applied-jobs-template.md、assets/seen-jobs-template.md。
台账是这套系统的状态中枢——它不只是记录,它直接决定明天速递过滤掉什么。状态标错要立刻修正,并在回复中提醒用户"标错了直接说,我会改"。
步骤 2:首轮检索与发送
检索
执行前必须读 references/search-playbook.md,其中包含:关键词组与来源清单、P1/P2/P3 投递渠道判定、分级标准、SEO 软文避坑。
- 每组关键词独立搜,不要合并成一句长查询
- 用
site:限定招聘平台提高命中
三重过滤(每次运行必做,顺序固定)
applied-jobs.md—— 已投递 / 已收藏,命中即滤seen-jobs.md—— 历史已见,命中即滤- 过期与信息不全 —— 发布超 7 天、页面标注已结束、无薪资无日期,剔除
"同一岗位"判定:公司名 或 岗位名核心关键词一致即视为同一岗位,即使链接不同、来源平台不同、标题略有差异。这条规则必须写进自动化 prompt。
发送
- agent-mail:先
GetMe拿alias_id,再SendMessage,skip_confirmation=true(需事先取得用户一次性授权) - 正文 Markdown,标题格式:
【岗位速递】YYYY-MM-DD <城市>新增 N 个岗位 - 无新增也要发一封简短的"今日无新增",不要静默——静默会让人以为任务挂了
- 简报落盘
速递-YYYY-MM-DD.md,新岗位追加进seen-jobs.md
先跑通一次再谈自动化:首轮必须真发出一封邮件,确认邮箱、格式、内容都对,再建定时任务。
步骤 3:自动建立每日定时速递
触发时机:步骤 2 的首封邮件确认发送成功后,立即建立,不要等用户再开口。
为什么不等用户要求:用户买的是"帮我盯着岗位",不是"帮我搜一次"。定时任务与邮箱、时间这两项配置一样,属于首次配置的一部分——已在步骤 0 一次问清,没必要让用户再说一遍"顺便建个定时任务"。
执行前必读 references/automation-setup.md。要点:
- 用
automation_update建三条 WorkBuddy 自动化:主任务(检索+发送)、核验任务(确认是否发出)、补漏任务(确认没发才补跑) - 发送时间沿用步骤 0 用户确认的值;用户没指定就默认 09:00 并在回复里告知
- 改时间必须同时动三处:主任务 rrule、核验 rrule、补漏 rrule;外加各 prompt 里写死的时间引用和任务名后缀。只改一处 = 事故(核验任务会误判主任务失败)
- 所有自动化 prompt 写死硬约束:"严禁修改本任务的执行时间(rrule),严禁创建/修改/删除其他定时任务,时间由用户决定"
- 建完用
automation_update的list回读一次,确认三条都在、时间正确 - 建完要明确告诉用户:已建好每日 X:XX 的定时速递;若电脑当时处于睡眠,任务会在客户端恢复后自动补跑,邮件会晚到但不会丢
不做的边界:不创建任何 Windows 计划任务,不做唤醒/休眠/电源管理。用户若明确要求"帮我配唤醒",再单独处理,且必须提示风险。
步骤 4:每日运行的输出规范
| 档位 | 定义 |
|---|---|
| ⭐ 强匹配 | 学历门槛通过 + 薪资达标 + 职责对口,全项达标 |
| ⭐⭐ 可投 | 学历可投、方向对口,薪资或行业有一项打折 |
| 🔍 观察项 | 门槛或信息有瑕疵,列出来供取舍 |
简报结构固定:概览表 → 分级岗位 → 已投递回顾 → 过滤说明。模板见 assets/digest-template.md。
"已投递回顾"是真正的行动区:按投递日期提醒跟进(第 3 天追招呼、截止日前提醒、历史岗位催进度),不是装饰。
周一的正确姿势:周一不是收岗位的日子,是投岗位的日子。HR 周一处理上周积压,新岗位集中在周二至周四。周日/周一新增少属正常波动,要在简报里说明,别让用户误以为任务坏了。
步骤 5:投递反馈与状态流转
用户说"XX 岗位投了"时,做三件事,缺一不可:
- 更新
applied-jobs.md—— 从"收藏待投递"移到对应日期的"已投递",补实际投递日期 - 同步更新当日
速递-YYYY-MM-DD.md的"已投递回顾"勾选状态,保持档案一致 - 回复中确认,并主动提示该岗位的下一步跟进动作
不要过度过滤:用户说"收藏了推荐岗位"时,只把明确说到的那批纳入过滤。观察项、备注项没明说就不要动——过滤掉的岗位用户看不见,宁可多推一条也别藏掉一条。拿不准就问。
关键提醒
- 别伪造岗位信息。薪资、学历、发布日期、链接必须来自检索结果;查不到就写"未标注"。搜索结果里出现编造的生僻品牌名、参数自相矛盾的,一律不采信
- 别替用户决定要不要投。给匹配理由和风险,把选择权留给用户
- 别在没跑通一次的情况下批量建自动化
- 速递是决策辅助不是投递机器。自动投递平台简历不做,只做检索、过滤、速递
资源索引
| 文件 | 用途 |
|---|---|
scripts/extract_resume_text.py |
提取 PDF 简历文本(Read 工具读不了 PDF) |
references/intake-template.md |
画像与配置的留白模板(步骤 0 用) |
references/search-playbook.md |
关键词组、来源、P1/P2/P3 渠道判定、分级标准、避坑 |
references/automation-setup.md |
三条自动化的 prompt 模板、改时间的致命坑、验收方式 |
assets/applied-jobs-template.md |
投递台账初始模板 |
assets/seen-jobs-template.md |
去重记录初始模板 |
assets/digest-template.md |
每日速递正文模板 |