OpenJob 复盘:
把求职串成一条可审阅的流水线

反复刷搜索结果、把同一份简历改来改去、挨个点"立即沟通"——找工作的三件重复劳动,我把它们交给机器;但投不投的判断,我留给了自己。这篇文章拆解 OpenJob 的设计哲学、五个环节,以及做完之后我学到的三件事。


集中找工作那段时间,我发现一个尴尬的事实:占用时间的全是重复劳动,而真正决定成败的全是判断。翻页、去重、筛岗位是重复的;"这个岗位值不值得投"没法外包。把同一份简历改出五个版本是重复的;"这版该突出什么"没法外包。于是就有一个很自然的分工问题——哪些交给机器,哪些留给自己。

OpenJob 是我给出的答案:一个运行在自己电脑上的 AI 求职工作台,把"找岗位、去重、评分、改简历、准备招呼语、盯回复"串成一条流水线。它不是代投服务,更不是无人值守的海投机器人。

01设计哲学:三条分工铁律

整个项目都建立在这三句分工上:

第三条最容易被质疑"何必这么死板"。但用了之后我反而确定:确认制不是效率的敌人,是信任的基础。正因为知道机器绝不会替我发出任何一句话,我才敢让它在前面放开跑。

02五个环节,各自的巧思

采集:只做入口,不做黑箱

岗位来自 BOSS 直聘的搜索结果,关键词和城市完全由我配置,支持搜索流、推荐流和针对目标公司的定向猎捕三条路。所有岗位统一去重入库,实习岗和正式岗在采集阶段就能识别过滤。到点的定时任务只做"采集 + 评分",错过时段就记录跳过,绝不补跑——宁可少采一轮,不做失控的事。

评分:让 AI 说人话,也说真话

五维评分里"职责匹配"占 40 分、"证据强度"占 25 分。我特意加了一条"弱迁移封顶":没有直接证据的技能,不允许 AI 因为"看起来相关"就打高分。黑名单和一票否决词命中直接出局。整个评分阶段零页面访问——纯文本分析,不占平台的风控额度。

简历:改写可以激进,编造绝对不行

简历定制是整条流水线里工程量最大的环节。多方向底稿按岗位方向自动选稿;JD 定向改写采用逐行等长换写——换动词、融入岗位关键词、调语序,但照片、栏目、版式永不改动,保证一页排版零损伤。最有意思的是编造拦截:AI 想新增事实、数字、经历?检测到就生成失败。AI 腔还会被自动清洗掉——"赋能""抓手"这类词活不过终审。

投递:确认队列是唯一的出口

所有对外动作先进队列,逐条放行。招呼语基于 JD 和简历生成,我可以编辑后发送。三重防重复(岗位级 + 会话级 + 历史台账)保证我不会对同一家公司发出尴尬的第二句。每日上限、随机间隔、发送时间窗——机器负责节奏,我负责内容。

监测:让等待也自动化

HR 回复由定时监听发现,桌面通知提醒我去平台回复。跟进间隔可配置,默认关闭——我不想变成骚扰机器人的样子。

03工程化:给自己上的枷锁

一个自己用的工具,最容易死在"随便改改"上。OpenJob 的做法是把工程标准拉满:GitHub Actions 把 Python 测试、静态检查、前端构建和关键 UI 验收作为合并门禁;每日自动备份数据库和简历;数据完全自持在本地。这些约束在添加的时候都让我慢了一点,但每一次重构都没有还过债。

04复盘:学到的三件事

OpenJob 已在 GitHub 开源。如果你也在找工作,或者对"人机分工"这个话题有不同看法,欢迎在讨论区找我聊——这个项目本身就是我的一次回答。

本文基于 OpenJob 项目 README 与产品文档整理。项目地址:github.com/Batianxieshen1/OpenJob。代码是诚实的,复述是我自己的。


留言与讨论