Oct 9, 2026
Run a Disciplined Job Search From Your AI CLI With career-ops
The 74k-star open-source job search agent evaluates postings against your CV, drafts tailored PDFs, and leaves every submit button to you.
Companies screen candidates with AI filters. career-ops hands the same machinery to the other side of the table: paste a job posting, and a 74k-star open-source agent tells you whether the posting is still live, whether it fits your CV, and what to send — while you keep the final call on everything.
Why This Skill Matters
Most job-search pain is volume without signal: dozens of applications into silence. career-ops inverts that. Its README quotes the author's own run as the first user — 740 listings evaluated, 68 applied, 12 interviews, 1 offer — and the design keeps two things explicit: it scores fit before you invest an evening, and it never submits anything for you.
The evaluation is structured as an A-to-H block report: role summary, CV match with per-requirement weights, level strategy, compensation research, personalization, and interview prep — plus a posting-legitimacy check (still open? a repost?) and a work-authorization signal that flags an explicit no-sponsorship JD as a hard blocker.
Installation
One command bootstraps a project folder:
npx @santifer/career-ops init
This clones the latest release into ./career-ops and installs dependencies. Then open your AI CLI inside it:
cd career-ops
claude
The README lists Codex, Qwen, OpenCode, Antigravity, Grok, and Pi as additional supported CLIs; the skill is defined once at .agents/skills/career-ops/SKILL.md and shared by all of them. On first launch, setup happens entirely in chat — it asks for your CV, profile, and target roles, nothing to edit by hand. A global install (npm i -g @santifer/career-ops) is available once you already have a project folder.
Real Workflow: Evaluate One Posting Before You Apply
- Paste a job URL or the full JD text into your CLI. The
/career-opsrouter auto-detects it and runs the full pipeline: evaluate, report, PDF, tracker entry. - Read the report. If the fit scores below the 4.0/5 line, it tells you not to apply — you can override it, and it will say so in the output.
- Ask for the tailored CV (
/career-ops pdf) and a cover letter (/career-ops cover). PDFs render through an HTML template plus Playwright in an ATS-readable layout. - Review every draft and press Submit yourself. The system never submits an application and never sends an email — there is no mail transport in the codebase, per the README.
/career-ops https://example.com/jobs/senior-ai-engineer
A second pass worth knowing: /career-ops scan sweeps the pre-configured portal list — the README counts 100+ companies and 35+ search queries across Ashby, Greenhouse, Lever, and Wellfound, backed by 55+ provider modules. The underlying scanner (node scan.mjs) takes a --verify flag that runs a Playwright liveness check after the API pass, so stale postings do not leak into your pipeline.
Tips
- Trust, then verify the CV. A check in code blocks a PDF whose numbers or facts appear in neither your CV nor your article digest (bypass with
--skip-fact-check), but the README concedes it cannot judge every rewording yet — read every document before you send it. - All data stays local. No telemetry, no backend; your CV goes from your machine to the AI provider you chose.
- Tight on budget? The README documents running on free and local models (OpenRouter free tiers, Ollama, any OpenAI-compatible endpoint) in
docs/RUNNING_ON_A_BUDGET.md. - Track the funnel with
/career-ops tracker, or launch the terminal dashboard withnpm run serve:dashboard. - After a run of rejections,
/career-ops patternsand/career-ops upskillname the recurring gap instead of leaving you guessing.
When Not to Use This
You want a spray-and-pray auto-applier — this is the opposite, by design. It is also a poor fit if you will not review drafts: the guardrails catch fabricated numbers, not every reworded claim. And if your target companies sit outside its ATS coverage, the scanner has nothing to sweep; you paste postings manually.
See the leaderboard for more skills.