📌 项目地址:strelov1/freehire | ⭐ 2,203 颗星 | 🔧 Go | 📜 未标注
问题:招聘平台上的职位信息太脏
在 LinkedIn 或 Indeed 上找工作,你大概率遇到过这几种情况:同一个岗位被招聘者和聚合站反复转发,搜出来好几条;点进去的链接指向二手页面,岗位早就关了;还有一些挂着”在招”的职位,实际上根本不招人。
freehire 的做法是绕开这些中间环节,直接抓公司自己的 ATS 招聘系统,也就是 Workday、Greenhouse、Lever、Ashby、iCIMS 这些企业用来发职位的平台,一共接入了 124 个。每条职位都来自公司官方的招聘页,链接直指原始发布地址。
目前的规模:330 万条去重后的有效职位,来自 47 万多家公司,加上聚合器、直接 feed 和 97 个 Telegram 频道,总共 320 个数据源。这些来源全部列在 README 的 Sources 部分,抓了谁一清二楚,你可以自己审计。
一个容易被忽略的工程细节:去重
同一家公司把岗位发到 Workday 又发到 Greenhouse,怎么算?freehire 把所有来源的职位先统一成同一个数据结构,再用一个稳定 key 做去重,三个渠道发的同一岗位最后只剩一条。所以 330 万这个数字就是你在 freehire.me/jobs 上实际能搜到的数量,没有水分。
搜索本身也做了分面:按地区、办公模式、级别、技能、薪资过滤。这些维度来自人工维护的词典,不是靠模型猜出来的。
找到职位只是开始
这个项目有意思的地方在于,它把求职的后续流程也做进来了,共用同一套数据:
- Find:分面搜索、精选合集、保存搜索后用 email 或 Telegram 推送摘要、共享看板、市场分析,还有 ghost job(幽灵岗位)信号检测
- Apply:ATS 安全的 PDF 简历模板、简历和岗位的匹配打分、AI 匹配分析、简历定制(明确标注”不编造内容”)
- Track:申请看板带阶段流转,收件箱会自动把招聘者的回复关联到对应的申请上,外加事件账本和提醒
- Ask:内置 agent,五种模式:聊天、浏览、画像、简历定制、面试演练
我对”收件箱自动关联申请”这个设计印象比较深。求职最痛苦的一环是投出去就石沉大海,你不知道哪封回复对应哪次投递。它把这件事在数据层面打通了。
三种用法
- 直接用托管站:freehire.me,零成本
- 自托管:MIT 协议,抓取流程和数据都开源
- 二次开发:有 HTTP API 和 CLI,可以在职位数据上建自己的工具
要提醒的是,README 没有给出具体的安装命令和 API 调用示例,动手前先看仓库 docs/ 目录下的架构文档(docs/architecture.md)和功能文档(docs/features.md)。
添加一个新公司只要一行
如果你盯着的公司还没被收录,在公司目录表里加一行就能补上,具体步骤在 README 的 “Adding a source” 一节。这是开源产品和封闭平台最实质的差别:数据缺口你可以自己填,不用等产品经理排期。
几点保留意见
- 项目用 Go 写的,自部署需要一定技术背景
- 覆盖范围以使用这 124 个 ATS 平台的公司为主,也就是 IT 岗位为主,非技术行业覆盖有限
- 2203 个 star,社区还在早期(有 Discord),长期维护节奏需要自己观察
- README 里”Ask”部分提到 agent “no shell and no min”,说明作者对安全边界有意识,但我建议自部署时还是谨慎对待任何带 agent 的功能
如果你在找工作,或者想拿干净的职位数据做市场分析、建工具,这个仓库值得收藏。