>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Go

求职搜索引擎如何在上百万职位中实现无中间商运作

在外企或大型IT公司求职往往变成一种充满意外惊喜的常规流程。你在聚合平台上看到一个感兴趣的职位,点击链接后发现这个职位一个月前就关闭了。或者你遇到招聘机构发布的同一职位无限复制版本,而这些机构甚至不透露最终雇主是谁。

freehire preview

freehire项目通过直接的技术方案解决这个问题:它直接从招聘跟踪系统(ATS)解析数据,绕过中间环节。数据库包含来自近30万家公司的330多万个活跃职位。整个技术栈采用MIT许可证开源,包括数据采集器、Web界面、搜索引擎和API。

数据来源

大多数科技公司通过Greenhouse、Lever、Workday、Ashby或iCIMS等专业服务平台发布职位。freehire的开发者为92个这样的平台编写了适配器,还连接了大约一百个第三方招聘网站和大型企业的直接数据源。

整个流程运作如下:

  1. 一个工作进程爬取招聘网站并读取最新职位。添加一家公司通常只需要在YAML文件中添加一行,指定公司名称和ATS中的ID。
  2. 数据被规范化为统一格式。如果一个职位在多个平台发布,系统会通过稳定键值合并重复项。
  3. 职位等级、薪资、地点和技术栈的筛选器基于严格的字典构建。这里没有不可靠的启发式方法——系统不会随机猜测数据。
  4. 一个独立的工作进程从目标ATS下载实际的申请表,保留原始字段结构。

除了职位目录还有什么

搜索只是门面。在职位数据库周围,开发者构建了一个功能完整的求职者工作空间。

简历生成器与匹配度检查

代码库包含一个简历构建器,可以生成针对自动化ATS解析优化的PDF文件。系统将职位要求与你的经历进行匹配,并计算确定性的兼容度评分。当连接到语言模型时,它会针对特定申请提供精准的简历调整建议,而不会编造经历。

带收件功能的回复追踪器

提交申请后,追踪会在看板板上继续进行,并附带状态更新。集成的邮件网关将招聘人员的回复连接到具体的申请卡片上,使通信保持有序,而不会丢失在普通收件箱中。

助手和浏览器扩展

已开发了一个Chrome侧边栏扩展。当你打开任何网站上的职位页面时,插件会读取页面文本,与你的个人资料进行交叉引用,并为你填写申请表。对于喜欢通过Claude Desktop等LLM客户端工作的用户,作者提供了一个独立的MCP服务器。

架构与技术栈

代码库使用Fiber v2 Web框架用Go编写。架构上,后端清晰分离:API服务器专门处理客户端请求,所有后台工作都移至独立的单次执行工作进程。这些工作进程通过cron或在队列中运行都很方便。

cmd/                 Точки входа: HTTP-сервер и консольные воркеры
sources/             Файлы конфигурации источников вакансий (YAML)
migrations/          Схема PostgreSQL для sqlc и initdb
web/                 Интерфейс на SvelteKit 2
internal/            Внутренние пакеты предметной области
  sources/           Адаптеры под конкретные ATS (Workday, Lever, etc.)
  pipeline/          Пайплайн сбора, валидации и дедупликации
  cv/ cvedit/        Генерация структурированных резюме в PDF
  inbox/             Обработка и связывание почты рекрутеров

存储和快速搜索采用组件组合方式:

  • PostgreSQL配合pgvector扩展存储主实体和用于语义搜索的向量嵌入。
  • sqlc从纯SQL查询生成类型安全的数据库操作代码——不使用ORM。
  • Meilisearch处理全文搜索和即时分面过滤。
  • SvelteKit 2(基于Svelte 5 runes)和Tailwind 4构成快速SSR前端。
  • RedisMinIO负责缓存、请求速率限制和文件对象存储。

快速启动与API使用

可以通过Docker一键启动本地服务实例及所有依赖项:

make up

该命令将在8080端口启动数据库、搜索引擎、API和Web界面。你可以通过简单的curl请求检查可用性:

curl localhost:8080/health
curl localhost:8080/api/v1/jobs

顺便说一下,项目的公共API无需密钥或授权即可访问。如果你的机器人或个人项目需要获取最新职位,只需访问端点https://freehire.me/api/v1/jobs。所有响应都以可预测的JSON格式返回,包含结构化元数据和分页信息。

运行数据采集器需要使用CLI中的控制台命令:

# Обход конкретного каталога ATS
go run ./cmd/ingest sources/greenhouse.yml

# Сброс очереди индексации в Meilisearch
go run ./cmd/search-drain

# Извлечение вакансий из Telegram-каналов
go run ./cmd/tg-extract

这个项目适合谁

代码库在三种情况下会很有用:

  1. 你在国际公司找工作,并对低质量的聚合平台感到厌倦。Web版本提供雇主ATS系统的直接链接,没有侵入性的中间商。
  2. 你想构建自己的聚合平台、职位Telegram频道或机器人。92个ATS系统的开放适配器可以节省数百小时的解析器编写时间。
  3. 你对一个成熟的Go项目示例感兴趣——没有过度使用的ORM、严格的SQL类型定义、独立工作进程的分离,以及与现代搜索引擎的集成。

项目看起来成熟,其开放性让任何开发者都能通过一行YAML配置提交PR来添加新公司。你可以在项目网站上在线试用,或者在自己的服务器上通过Docker部署。

相关项目