career-ops: the AI job-search command center that runs in your CLI
santifer/career-ops · 72,721★ · 13,671 forks
Everything worth knowing about santifer/career-ops: an open-source, AI-agent job-search system that turns any coding CLI (Claude Code, Codex, OpenCode, Antigravity, and others) into a full pipeline for evaluation, resume tailoring, portal scanning, and application tracking, local-first and with no telemetry.
What career-ops is
career-ops (also written careerops) isn’t a model, a cloud service, or a mass-application bot: it’s an open-source, MIT-licensed system that installs on the candidate’s own machine and runs from an AI coding CLI. The README defines it as a job-search “command center”: the AI agent browses job pages, scores offers against the resume, generates documents, and keeps a tracking log, while the human makes every final decision.
Its purpose is to filter, not flood. The README itself warns it’s not a “spray-and-pray” tool: the system recommends never applying to a posting that scores below 4.0 out of 5. Documented features include: offer evaluation in a structured report with blocks A through H and a 1-to-5 score reached by holistic judgment; tailored PDF generation optimized for ATS; automatic portal scanning with over 100 preconfigured companies and 45+ search queries; batch processing of 10+ offers in parallel; and tracking in a single source of truth with a Go-based TUI dashboard.
The origin: a real job search
The repository was created on April 4, 2026 by Santiago Fernández de Valderrama Aparicio (santifer), an engineer and Head of Applied AI based in Seville. According to his case study on santifer.io and the Business Insider profile, the story is: Santiago started a real job search in 2026 for senior AI-engineering roles; the first week was fully manual, and by the second he stopped applying and started building the system instead. The real outcome of his search: 740 offers evaluated, 68 applications sent, 12 interview processes, and 1 signed offer.
Once he landed the role, he open-sourced it. In its first week, it went from a private repository to 35,000+ stars and 5,000+ forks (author’s own figures). On July 14, 2026, on crossing 60,000 stars, he wrote the CareerOps Manifesto (MANIFESTO.md) and coined the practice it’s named after: “CareerOps is the practice of managing a job search the way engineers manage a system in production: with evidence, with discipline, and with tooling on the candidate’s side.”
Verified press coverage includes Wired Greece (April 17, 2026), which described it as “the most effective tool for people applying to jobs” per AI circles on X; and Business Insider (April 28, 2026), titled “I built a tool to filter 700 job listings for my job search. It got me a position as head of AI.”

Philosophy and principles
The MANIFESTO.md (v1.0, signed at 60,000 stars) condenses the philosophy into six practices: (1) apply better to less: “ten applications you believe in beat two hundred you don’t”; (2) signal over volume; (3) evidence over keywords: “reframe, never fabricate”; (4) a human decides: nothing is ever auto-sent; (5) local first: “your search isn’t anyone’s dataset”; (6) dignity on both sides of the table.
The nine rights include: being invisible by default; never paying; portable, exportable, and deletable data; and the right to know when a machine is deciding. The README adds the explicit commitment to keep the project MIT-licensed with no dark patterns, no cross-selling inside the CLI, and no paid features.

How it works
The architecture is built on “modes, not one long prompt”: each mode is a skill file with its own context, rules, and tools. The case study documents 12 operational modes: auto-pipeline (full pipeline), oferta/ofertas (single or comparative evaluation), pdf (ATS-optimized generation), scan (board discovery), batch (an orchestrator with parallel workers), apply (form-filling with Playwright), contacto, deep (company research), tracker, and training.
The main flow (auto-pipeline): paste a URL or the offer’s text; the profile archetype gets classified; A-H evaluation reads cv.md; and three artifacts are produced: a Markdown report, a PDF in output/, and a tracking entry.

The scanner ships with more than 100 preconfigured companies and more than 55 provider modules. Since ATS feeds sometimes retain expired postings, node scan.mjs --verify adds a liveness check with Playwright only for new listings.

The TUI dashboard (npm run serve:dashboard) is written in Go with Bubble Tea and Lipgloss (Catppuccin Mocha theme). The plugin system (v1.15.0) extends the core with integrations needing an API key: they’re opt-in, “sandboxed by convention,” and additive. The bundled plugins are apify, gmail, and notion.


The ecosystem
Repositories by the author (santifer): santifer/cv-santiago (815 stars, web portfolio); santifer/jacobo-workflows (161, n8n workflows for his multi-agent system); santifer/career-ops-docs (55); santifer/claudeable (25); santifer/watermark-remover (25).
Bundled plugins (reviewed in the tree, intentionally minimal “reference seeds”): apify, gmail, notion. Registry-approved, all by Schlaflied: career-ops-plugin-tavily, career-ops-plugin-google-calendar, career-ops-plugin-linkedin-alerts, career-ops-plugin-outlook-interviews, career-ops-plugin-obsidian. CONTRIBUTING.md documents the “maintained successor” mechanism: if a bundled plugin needs more development, the community publishes one with the same id which, once registry-approved, takes priority over the bundled seed.
The README’s translations into 16 languages are themselves a visible community ecosystem.
Official and semi-official status
In the sources consulted, there’s no official acceptance on any marketplace and no vendor backing. What is verified: the README carries Product Hunt’s “featured” badge (the page wasn’t accessible during this run); both the project (Q139007988) and the author (Q138710224) have Wikidata entries; and CONTRIBUTING.md cites that “a single-network launch post drove 15,626 unique machines to clone the repository in a day.”

Quick-start guide
Installation and first run
Requirements: an AI coding CLI (Claude Code, Gemini CLI, Codex, Qwen Code, OpenCode, GitHub Copilot CLI, Antigravity CLI, or Grok Build CLI), Node.js 18+, and git.
npx @santifer/career-ops init
npx runs the installer once with nothing installed globally: it clones the latest release into ./career-ops and installs dependencies. Then:
cd career-ops
claude # or codex / qwen / opencode / agy / grok
career-ops guides setup through conversation: it asks for the resume and details, and configures the scanner with preconfigured companies. Rendering PDFs requires installing headless Chromium once: npx playwright install chromium.
Common workflows
- Evaluate an offer: paste the URL directly; career-ops detects and runs the
auto-pipeline. - Find new offers:
/career-ops scan. - Process several at once:
/career-ops batchevaluates multiple URLs in parallel with headless workers. - Check status:
/career-ops tracker. - Application email draft:
/career-ops emailgenerates a subject, body, and attachment list. It’s draft-only: the system never sends anything.
Essential configuration
cv.md(root): the Markdown resume the system evaluates against. The core input.config/profile.yml: name, target roles, salary, and candidate preferences.portals.yml: the companies and queries the scanner visits..env: API keys for enabled plugins (the core needs none).
Common pitfalls and fixes
- Burning API credits despite paying for Claude Pro/Max: if
ANTHROPIC_API_KEYis set in the environment, it takes priority over the subscription and gets billed per token; clear it from the shell profile and restart. - The first evaluations aren’t great: per the README, “the system doesn’t know you yet”; it needs to be fed context.
- Expired listings sneaking into the pipeline:
node scan.mjs --verifyfilters out expired ones. - CLI cost: the author runs it on a Claude Max 20x plan, though the docs explain how to run it on free or local models.
Integrations and migration
career-ops relies on the open agent skills standard, linked for every compatible CLI, so switching between Claude Code, OpenCode, Antigravity, or Grok requires no reconfiguration. Plugins add integrations with Gmail, Notion, and Apify in the core, plus Tavily, Google Calendar, LinkedIn alerts, Outlook, and Obsidian in the community registry.
Repo numbers
Measured: August 24-25, 2026, GitHub API.
| Metric | Value |
|---|---|
| Stars | 68,155 |
| Forks | 12,939 |
| Subscribers | 260 |
| Commits | ~1,527 |
| Open issues | 327 |
| Releases | 37 |
| Primary language | JavaScript |
| License | MIT |
| Created | April 4, 2026 |
| Latest release | career-ops-v1.28.0, August 20, 2026 |
Top contributors: santifer (317), careerops-ledger (93), Schlaflied (76), abankar1 (69), Scott-Emberson (69). On npm, @santifer/career-ops logged 3,604 downloads the week of August 17-23, 2026, and 10,960 over the prior month.
Contributing
CONTRIBUTING.md: for a new feature, open an issue first; bug fixes, unauthenticated scanner providers, docs, and translations can go straight to a pull request. Testing: node test-all.mjs is mandatory before pushing. Explicit limits: PRs that scrape platforms banning automated access, that enable auto-send without human review, or that send user data to an external service are not accepted.
How the community received it
The recovered evidence shows viral adoption concentrated outside Hacker News. All three HN submissions found have 2 points and 0 comments. The author’s case study cites an r/ClaudeAI thread with 2,600+ upvotes and a 4,400+-person Discord community (first-party figures, not independently verified). Wired Greece portrayed it as “the only topic” in AI circles on a Sunday night.
Verified caveats: the README warns the first evaluations will be poor until the system is fed context, and reminds users that models can hallucinate skills or experience.
career-ops versus other proposals
| Project | Verifiable overlap | Verifiable difference |
|---|---|---|
Paramchoudhary/ResumeSkills (1,801 ★) | A collection of AI-agent skills for resume/application optimization. | Focuses on CV skills, not the full scan-evaluate-track pipeline. |
surapuramakhil-org/Job_search_agent (172 ★) | An AI agent that searches for and applies to jobs. | Applies on your behalf; career-ops is explicitly designed against auto-send. |
suxrobGM/jobpilot (59 ★) | An agent that applies to jobs: searches, adapts the resume, and fills forms. | Fills and advances the application; career-ops stops everything at draft for human review. |
The most useful comparison isn’t by popularity: career-ops stands out when you want a complete system that lives inside a coding CLI you already use, with local data and final human decision.
Use cases and who this repository can help
- Technical candidates active in the AI market: if they already pay for Claude Code or similar, they get a pipeline that evaluates hundreds of offers at no marginal license cost.
- People job-hunting internationally: language detection and regional PDF formatting, plus a
trainingmode that scores courses and certifications. - Budget-conscious candidates: documented routes with free or local models, with no subscription required.
- Anyone wanting to avoid spray-and-pray: an application log with deduplication, rejection-pattern analysis, and ghost-job detection.
- Interview prep and negotiation: a mock-interview suite, salary-negotiation scripts, and a contract-reading companion.
Resources
- Repository: https://github.com/santifer/career-ops
- Official site: https://career-ops.org
- Manifesto: https://github.com/santifer/career-ops/blob/main/MANIFESTO.md
- npm package: https://www.npmjs.com/package/@santifer/career-ops
- Discord community: https://discord.gg/8pRpHETxa4
Note: this article combines the README, MANIFESTO.md, and CONTRIBUTING.md of career-ops, the author’s case study on santifer.io, the GitHub API, the npm registry, Hacker News search, and the Wired Greece and Business Insider articles, consulted on August 24-25, 2026. Figures change over time.
Comments