career-ops:开源 AI 求职系统(职位扫描 + A-H 结构化评估 + 定制简历 PDF + 投递追踪)
career-ops 是一个在本地 AI 编码 CLI 中运行的开源 AI 求职系统(careerops)。它自动扫描招聘门户,把职位描述评估为 A-H 结构化报告并给出 1-5 全局评分,生成 ATS 优化的定制简历与求职信 PDF,研究公司并寻找联系人,统一追踪投递进度;系统只做评估、排序与草稿,绝不自动提交申请,最终决定权始终在人。作者用它评估了 740+ 职位、生成 100+ 定制简历并拿到 Head of Applied AI 岗位。
社区作者 · zZz
它解决什么问题
项目定位
career-ops(career-ops.org,亦称 careerops)是一个开源的 AI 求职系统,运行在任何 AI 编码 CLI 内部,本地执行:评估职位、定制简历、追踪每一次投递,最终决定权始终在用户手中。它把散落在表格里的投递管理变成一条 AI 驱动的流水线。
重要说明:这不是“海投”工具。career-ops 是一个过滤器——从成百上千个职位中挑出值得投入时间的那几个;系统强烈建议不要投递低于 4.0/5 的职位,并且投递前必须人工复核。
主要功能
- **Auto-Pipeline(自动流水线)**:粘贴一个 URL,即得到完整评估 + PDF + 追踪记录。
- **A-H 评估**:角色摘要、CV 匹配度(含每条要求对该职位的重要性、以及该权重来自 JD 措辞、结构还是估计——逐条标注,估计值永不会进入最高档)、级别策略、薪酬调研、个性化、面试准备(STAR+R);另有 Block G 招聘真实性检查(标记诈骗与“幽灵职位”)和 Work-Auth 信号(JD 明确不提供签证担保时标为硬性阻断)。全局 1-5 分由五个维度的整体判断得出,而非算术公式;Block B 的要求重要性列与 Block G 的真实性评估均为独立、不影响分数的信号;Block H 仅在 4.5 分及以上才起草。
- **面试故事库**:跨多次评估累积 STAR+反思故事,形成 5-10 个可回答任何行为面试题的母故事。
- **谈判脚本**:薪资谈判框架、地域折扣反驳、竞争性 offer 杠杆。
- **ATS PDF 生成**:关键词注入的简历,使用 Space Grotesk + DM Sans 设计。
- **求职信生成器**:基于调研的求职信、关键词镜像、四次交互式角度提问(why/problems/approach/tone)、聊天内草稿审批关卡,并通过与简历相同的 HTML + Playwright 管线输出 A4 PDF;每次评估自动起草,可用
/career-ops cover按需补全并生成。 - **申请邮件草稿**:从报告或粘贴的 JD 生成正式的招聘方/内推/冷邮件,含主题行、附件清单、有来源支撑的匹配点与基于个人资料的联络区块;仅起草——career-ops 从不发送、提交或点击任何东西。
- **门户扫描器**:预置 100+ 公司(Anthropic、OpenAI、ElevenLabs、Retool、n8n 等)+ 跨 Ashby、Greenhouse、Lever、Wellfound 的自定义查询。
- **融资公司发现**:
company:funded命令以“先审阅”的方式,从结构化公共信息源呈现近期获融资公司及来源诊断,且不修改用户数据。 - **批处理**:用无头 CLI worker(
claude -p/opencode run)并行评估 10+ 个职位。 - **Dashboard TUI**:终端界面浏览、筛选、排序你的投递流水线。
- **人在回路(Human-in-the-Loop)**:AI 评估与推荐,你决定与行动;系统永不提交申请。
- **流水线完整性**:自动合并、去重、状态归一化、健康检查。
- **面试套件**:时间分块的准备计划、带反馈的模拟练习、面试后复盘(
interview/)以及公司红旗探测器(interview-redflag)。 - **Offer 阶段**:合同阅读伴侣——条款逐条讲解 + 律师问题清单(
offer-prep),以及期望/对外公布/实际薪资差距分析(salary-gap.mjs)。 - **跟进与回复**:跟进节奏计算器与预置提醒(
followup-cadence.mjs、followup-seed.mjs);雇主回信分类并写入追踪表(reply-watch)。 - **模式分析**:拒信模式与各 ATS 渠道的推进率(
analyze-patterns.mjs)、生命周期漏斗统计(stats.mjs)、重复发布/幽灵职位检测(detect-reposts.mjs)。 - **插件系统**:可选集成(Gmail、Notion、Apify + 社区注册表),默认关闭,见
docs/PLUGINS.md。 - **简历之外**:公司研究(
deep)呈现 AI 战略、近期动向、工程文化与你的履历应切入的角度;联系人发现(contacto)识别值得接触的用人经理、招聘官或团队同行,并按联系人类型起草 ≤300 字符的 LinkedIn 消息;正式申请邮件草稿(email)把已评估报告或粘贴的 JD 转成主题行、正文与附件清单——不发送、不提交、不点击。投递让你进入队列,调研让你获得对话。
工作流程
粘贴职位 URL 或描述 → 原型分类(LLMOps / Agentic / PM / SA / FDE / Transformation)→ A-H 评估(读取 cv.md,做匹配、差距、薪酬调研、STAR 故事、真实性判断)→ 同时产出报告 .md、PDF、追踪表条目。
支持的 CLI
通过开放的 Agent Skill Standard 支持任何主流 AI 编码 CLI:Claude Code、Codex、Gemini / Antigravity、OpenCode、Grok、Qwen 等,不锁定单一厂商。详见 docs/SETUP.md;预算受限或本地模型运行见 docs/RUNNING_ON_A_BUDGET.md,零成本运行见 docs/FREE_TIER.md;定时扫描与零 token 初筛配方见 `docs/AUTOMATION.
md;ATS 自动填充见 docs/APPLY_AUTOFILL.md;LinkedIn 连接导出交叉比对见 docs/LINKEDIN_JOIN.md;常见问题见 docs/FAQ.md(含故事出处如何防止编造数字)。设计原则见 ARCHITECTURE.md,运行时流程见 docs/ARCHITECTURE.md`。
预置门户(部分)
- AI Labs:Anthropic、OpenAI、Mistral、Cohere、LangChain、Pinecone
- Voice AI:ElevenLabs、PolyAI、Parloa、Hume AI、Deepgram、Vapi、Bland AI
- AI Platforms:Retool、Airtable、Vercel、Temporal、Glean、Arize AI
- Contact Center:Ada、LivePerson、Sierra、Decagon、Talkdesk、Genesys
- Enterprise:Salesforce、Twilio、Gong、Dialpad
- LLMOps:Langfuse、Weights & Biases、Lindy、Cognigy、Speechmatics
- Automation:n8n、Zapier、Make.com
- European:Factorial、Attio、Tinybird、Clarity AI、Travelperk
职位板搜索:55+ 个 provider 模块覆盖 ATS API、全站 feed、XML/RSS、markdown feed 与本地解析器。默认 node scan.mjs(即 npm run scan)信任各 ATS feed 的返回结果,部分公司会把已关闭职位留在公开 API 中;加 --verify 可在 API 扫描后用 Playwright 剔除过期职位,校验为串行、仅针对去重后的新职位,成本可控。
Dashboard TUI
npm run serve:dashboard 启动 TUI;npm run build:dashboard 可选构建独立二进制。特性:6 个筛选标签、4 种排序模式、分组/平铺视图、懒加载预览、行内状态修改。另有实验性 Web UI(alpha,默认不启动),见 web/README.md。
项目结构(要点)
AGENTS.md(所有 CLI 的规范代理说明)、CLAUDE.md/CODEX.md/OPENCODE.md(各自包装并导入 AGENTS.md)、GEMINI.md(为防 Antigravity 重复上下文的兼容空操作)、cv.md(你的简历,需自建)、article-digest.md(证明点,可选)、config/profile.example.yml、modes/(_shared.md、oferta.md、pdf.md、cover.md、`email.
md、scan.md、batch.md 等)、templates/(ATS 简历模板、门户配置模板、状态定义)、batch/(批处理提示词与编排脚本)、dashboard/(Go TUI)、data/、reports/、output/(均被 gitignore)、fonts/、docs/、examples/`。
外部数据目录(可选)
默认用户层数据(cv.md、portals.yml 及 data/、reports/、output/)位于项目根目录。可按以下优先级分离个人数据与代码:1) 环境变量 CAREER_OPS_ROOT 或 CAREER_OPS_DATA_DIR;2) 仓库根目录的 .career-ops-data 标记文件(内容为数据目录路径);3) 默认仓库根目录。解析后所有用户文件相对该目录读写,而提示词与脚本仍相对仓库解析。还可用 CAREER_OPS_TRACKER 覆盖投递追踪文件路径;所有写操作统一指向 {DATA_ROOT}/data/applications.md。
Go TUI、Node 脚本与 AI 模式均遵守该解析层级。
技术栈
Agent:带共享技能与模式的 AI 编码 CLI(AGENTS.md + CLI 包装);PDF:Playwright + HTML 模板;求职信:HTML 模板 + Playwright(A4 PDF,与简历同管线);扫描器:Playwright + Greenhouse API + WebSearch;Dashboard:
Go + Bubble Tea + Lipgloss(Catppuccin Mocha 主题);数据:Markdown 表格 + YAML 配置 + TSV 批处理文件。
常见问题(来源要点)
- 能否免费或跑在更便宜/本地模型上?可以,CLI 无关,可通过 OpenRouter 免费模型、Ollama 或任何 OpenAI 兼容端点运行,见
docs/RUNNING_ON_A_BUDGET.md。 - 付费 Claude Pro/Max 却仍在烧 API 额度?因为环境变量中的
ANTHROPIC_API_KEY优先级高于已登录订阅,CLI 会改用 key 并按 token 计费。运行echo $ANTHROPIC_API_KEY,若输出内容就从 shell 配置中移除,重启终端后/login。批处理是例外:claude -pworker 不使用交互式登录,先运行一次claude setup-token并把结果导出为CLAUDE_CODE_OAUTH_TOKEN。 - 支持哪些 CLI?任何主流 AI 编码 CLI(Claude Code、Codex、Gemini / Antigravity、OpenCode、Grok、Qwen 等),基于开放 Agent Skill Standard。
- Windows 如何安装?可运行,平台细节(Git Bash 发现、换行符、任务计划程序)见
docs/WINDOWS.md;若安装时技能因符号链接报错,修复方法在docs/FAQ.md。 - 会自动投递吗?不会。它是过滤器而非海投机器人,AI 只评估、排序、起草,绝不提交、发送或点击。
- 是否免费开源?是,对求职者永久免费,是 CareerOps Manifesto 的首个参考实现。
免责声明(来源要点)
本地开源工具,非托管服务。数据由你掌控,简历与个人信息留在本机并直接发送给你选择的 AI 提供商,项目方不收集、不存储、不访问任何数据;AI 行为由你控制,默认提示词禁止自动提交,但模型可能不可预测,修改提示词或更换模型风险自负,提交前务必复核;须遵守第三方招聘门户(Greenhouse、Lever、Workday、LinkedIn 等)的服务条款,不得用于骚扰雇主或压垮 ATS;评估是建议而非事实,模型可能编造技能或经历,作者不对求职结果、被拒、账号受限等后果负责。详见 LEGAL_DISCLAIMER.md。
— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。
安装 / 开始使用
Quick Start Fastest way — one command:
npx @santifer/career-ops init💡 npx ships with Node.js — it runs the installer once, without installing anything globally. No Node yet? Install it first. (Already using a Claude Code / Gemini / Codex CLI? Then you already have it.) This clones the latest release into .
/career-ops and installs dependencies. Then:
cd career-opsclaude # or codex / qwen / opencode / agy / grok — open your AI CLI here On first launch, career-ops walks you through setup — your CV, profile and target roles — just by chatting. Nothing to edit by hand. Prefer to set it up manually? (git clone)
git clone https://github.com/career-ops-hq/career-ops.gitcd career-ops && npm installnpx playwright install chromium # only needed for PDF generation2. Check setup
npm run doctor # Validates all prerequisites3. Configure
cp config/profile.example.yml config/profile.yml # Edit with your detailscp templates/portals.example.yml portals.yml # Customize companies4. Add your CV
Create cv.md in the project root with your CV in markdown
5. Open your AI CLI in this directory
claude # or codex / opencode / qwen / agy / grok
Then ask your CLI to adapt the system to you:
"Change the archetypes to backend engineering roles"
"Translate the modes to English"
"Add these 5 companies to portals.yml"
"Update my profile with this CV I'm pasting"
6. Start using
Paste a job URL or JD text to trigger auto-pipeline
If your CLI supports slash commands, use /career-ops (or its CLI-specific alias)
In Codex, ask for the same mode in plain language, e.g.:
"Run the career-ops scan mode"
"Run the career-ops pipeline mode for data/pipeline.md"
"Run the career-ops pdf mode for the latest evaluated role"
"Run the career-ops tracker mode and summarize the current statuses"
Global install
npm i -g @santifer/career-opsThis installs the career-ops binary globally so you can run it directly instead of via npx .
Unlike npx @santifer/career-ops init (which bootstraps a project directory), the global install gives you a persistent career-ops command available anywhere in your terminal. Which one should you use?
npx @santifer/career-ops init — best for first use; creates a dedicated project folder.npm i -g @santifer/career-ops — best once you have a project folder and want to run career-ops commands directly.The system is designed to be customized by your AI coding CLI itself. Modes, archetypes, scoring weights, negotiation scripts -- just ask it to change them. It reads the same files it uses, so it knows exactly what to edit. See docs/SETUP.
md for the full setup guide, docs/RUNNING_ON_A_BUDGET.md for instructions on running career-ops cheaply using custom or local models (and docs/FREE_TIER.md for running it at zero cost on Antigravity CLI's free tier), docs/AUTOMATION.
md for scheduling recurring scans and a zero-token triage-to-shortlist recipe, docs/APPLY_AUTOFILL.md for details on the ATS auto-fill flow, docs/LINKEDIN_JOIN.
md for cross-referencing a LinkedIn connections export against the companies in your funnel, and docs/FAQ.md for answers to common setup questions, including how story provenance prevents invented numbers . Design principles live in ARCHITECTURE.
md ; runtime flows in docs/ARCHITECTURE.md . Antigravity CLI Integration career-ops supports Antigravity CLI natively, the same way it supports Claude Code and OpenCode.
All slash commands are available through the shared skill entrypoint, using the same modes/*.md evaluation logic. Google has transitioned consumer Gemini CLI access to Antigravity CLI. GEMINI.
md is now a no-op compatibility guard so Antigravity does not duplicate the full project instructions when it reads both AGENTS.md and GEMINI.md . Native Antigravity CLI
1. Run in the career-ops directory
cd career-opsagy
2. Use the unified /career-ops command with subcommands:
/career-ops " Senior AI Engineer at Anthropic. " /career-ops pipeline /career-ops scan /career-ops pdf /career-ops tracker The skill is defined using the open standard in .agents/skills/career-ops/SKILL.md and symlinked/referenced for each supported CLI (e.g.
.claude/ , .cursor/ , .qwen/ , .antigravitycli/ , .grok/ ). Codex Integration career-ops supports Codex through the same shared router, but the invocation model is different from CLIs that auto-register slash commands. For the full guide, see docs/CODEX.md .
Interactive Codex
cd career-opscodex Slash commands are not guaranteed in Codex. If /career-ops is unavailable, ask Codex to run the mode directly in plain language: Evaluate this JD with career-ops auto-pipeline: https://company.
com/jobs/123 Run the career-ops scan mode and summarize new matches. Run the career-ops pipeline mode for data/pipeline.md. Run the career-ops pdf mode for the latest evaluated role. Run the career-ops tracker mode and summarize the current statuses.
One-shot Codex ( codex exec ) codex exec " Evaluate this JD with career-ops auto-pipeline: https://company.com/jobs/123 " codex exec " Run career-ops scan mode in this repo and summarize new matches.
" codex exec " Run career-ops pipeline mode for data/pipeline.md. " codex exec " Run career-ops pdf mode for the latest evaluated role. " codex exec " Run career-ops tracker mode and summarize the current statuses.
" Grok Build CLI Integration career-ops supports Grok Build CLI natively, the same way it supports Claude Code and OpenCode. AGENTS.md is auto-loaded as project rules, and all slash commands are available through the shared skill entrypoint.
Native Grok Build CLI
1. Run in the career-ops directory
cd career-opsgrok
2. Use the unified /career-ops command with subcommands:
/career-ops " Senior AI Engineer at Anthropic... " /career-ops pipeline /career-ops scan /career-ops pdf /career-ops tracker For headless batch workers, use grok -p "prompt" (add --yolo to auto-approve tool executions). Standalone Gemini API Script (No CLI install needed)