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.

#tutorial#ai-agents#productivity

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

  1. Paste a job URL or the full JD text into your CLI. The /career-ops router auto-detects it and runs the full pipeline: evaluate, report, PDF, tracker entry.
  2. 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.
  3. 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.
  4. 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 with npm run serve:dashboard.
  • After a run of rejections, /career-ops patterns and /career-ops upskill name 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.