career-ops-hq/career-ops

★ 73,232⑂ 0

Open-source AI job search agent: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV

About career-ops-hq/career-ops

career-ops-hq/career-ops is an open-source project on GitHub, mainly written in JavaScript. Open-source AI job search agent: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV It currently holds 73,232 stars and 0 forks with 0 open issues, and was last pushed on an unknown date (repository created unknown).

Project Overview

Git Homed tracks it on the AI Agent Skills Trending board and on the AI AI Agent Skills Trending list.

GitHub Repository Details

Repository career-ops-hq/career-ops · default branch - · size 0 KB · watchers 0 · source: GitHub REST API and repository README

README

https://github.com/career-ops-hq/career-ops/blob/HEAD/career-ops

The open-source AI job search agent.

English | Español | Deutsch | Français | Português (Brasil) | 한국어 | 日本語 | 简体中文 | 繁體中文 | Українська | Русский | Polski | Dansk | தமிழ் | العربية | हिन्दी | Türkçe

https://github.com/career-ops-hq/career-ops/blob/HEAD/Santiago Fernández de Valderrama Aparicio  santifer

Months of sending CVs into silence.
So I built the filter I needed.

740 listings evaluated. 68 applied. 12 interviews. 1 offer.
I was its first user. I got the job. Then I open-⁠sourced it.

Paste a job. On your machine, it tells you if it's still open and if it fits.
It tailors your CV and drafts your answers. You press Submit.

https://github.com/career-ops-hq/career-ops/blob/HEAD/The author's own search in the career-ops dashboard: scored listings, a red count of the ones marked do not apply, then a full evaluation report

My own search, partway through, with the UI in Spanish.

Companies use AI to filter candidates.
I just gave candidates AI to choose companies.

Six months later, I left that job.
Now we build career-ops, so you can land yours.

Try it on one job ↓ · Read the full story →


https://github.com/career-ops-hq/career-ops/blob/HEAD/Hired with career-ops: public stories on the record

The people who came after me wrote down how they got hired.

https://github.com/career-ops-hq/career-ops/blob/HEAD/Hired stories you can open and read

Every card is a public issue you can open. Landed yours? Leave your card →

⭐ If career-ops helped you, a star helps the next person find it.


https://github.com/career-ops-hq/career-ops/blob/HEAD/WIRED      https://github.com/career-ops-hq/career-ops/blob/HEAD/Business Insider

https://github.com/career-ops-hq/career-ops/blob/HEAD/Vercel OSS Program

https://github.com/career-ops-hq/career-ops/blob/HEAD/GitHub Trending: #1 repository of the day (Trendshift)      https://github.com/career-ops-hq/career-ops/blob/HEAD/Featured on Product Hunt

Your turn

Paste one job you were about to apply to tonight. If it comes back do not apply, you just got the night back. If it comes back with a plan, you know what to do next.

npx @santifer/career-ops init

Open source. Local. In the AI CLI you already use. Free and local models included.

You don't have to search alone

The silence after you hit send is not about you. Enough people saw the same thing to write the practice down, in six lines:

Apply better to fewer. Signal over volume. Evidence over keywords. A human decides. Local-first. Dignity on both sides of the table.

https://github.com/career-ops-hq/career-ops/blob/HEAD/The CareerOps manifesto: live count of signatories

A few of them, in their own words.

https://github.com/career-ops-hq/career-ops/blob/HEAD/Three signatures of the CareerOps manifesto, in their own words

Every signature is a commit you can audit. Read them all, or add yours →


Hiring will not fix itself. The people going through it can, and they are already in the room, comparing notes and fixing each other's setups. This is where the fix gets written. A room, not a club. Let's build together.

https://github.com/career-ops-hq/career-ops/blob/HEAD/Discord: live member count of the career-ops server

Sponsors

career-ops is free for candidates, forever. These companies sponsor the project:

https://github.com/career-ops-hq/career-ops/blob/HEAD/SerpApi

SerpApi · Build a portfolio project with live search data. SerpApi gives developers structured JSON/Markdown from Google Search, Maps, Shopping, and other engines through a simple API call.

Sponsorship buys clearly labeled visibility, never influence: no amount of money changes the roadmap or places anything in the product. Sponsors never appear in evaluations, rankings or recommendations.

What career-ops does for you

Paste a job. It tells you whether that night is worth it.

The first runs are rough. It does not know you yet. Talk to it: your CV, what you want, what you refuse. Think of it as a recruiter's first week.

On first launch it asks for all that in chat. Nothing to configure by hand.

What career-ops will not do

It reformulates your CV; it must never fabricate it. A check in code stops a PDF whose numbers or facts appear in neither your CV nor your article digest, but it cannot judge every rewording yet. Read every CV before you send it. Details in the FAQ.

Features

| Feature | Description | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | A-H Evaluation | Role summary, CV match (with how much each requirement matters for this posting, and whether that weight came from the JD's own wording, its structure, or an estimate, labelled per requirement; an estimate can never be top-band), level strategy, comp research, personalization, interview prep (STAR+R) -- plus a Block G posting-legitimacy check (is it still open, is it a repost: observations, not verdicts), and a Work-Auth signal that flags an explicit no-sponsorship JD as a hard blocker | | Human-in-the-Loop | AI evaluates and recommends, you decide and act. The system never submits an application -- you always have the final call | | ATS PDF Generation | ATS-readable CVs tailored to each JD from your own experience, in Space Grotesk + DM Sans design | | Cover Letter Generator | Research-backed cover letters with keyword mirroring, four interactive angle prompts (why/problems/approach/tone), draft-in-chat approval gate, and A4 PDF via the same HTML + Playwright pipeline as CVs. Auto-drafts on every evaluation; complete and generate on demand via /career-ops cover | | Beyond the CV | Company research (deep) surfaces AI strategy, recent moves, engineering culture, and the angle your profile should take. Contact discovery (contacto) identifies the hiring manager, recruiter, or team peer worth reaching out to and drafts a ≤300-character LinkedIn message tuned to each contact type. Formal application email drafts (email) turn an evaluated report or pasted JD into a subject line, body, and attachment checklist without sending, submitting, or clicking anything. Applications get you in the queue; research gets you a conversation. | | Pattern Analysis | Rejection patterns and per-ATS-channel advance rates (analyze-patterns.mjs), lifetime funnel stats (stats.mjs), repost detection, a possible sign of a ghost job (detect-reposts.mjs) |

Everything else it does

| Feature | Description | | ------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------- | | Auto-Pipeline | Paste a URL, get a full evaluation + PDF + tracker entry | | Interview Story Bank | Accumulates STAR+Reflection stories across evaluations -- 5-10 master stories you can adapt to the behavioral questions you get | | Negotiation Scripts | Salary negotiation frameworks, geographic discount pushback, competing offer leverage | | Application Email Drafts | Formal recruiter/referral/cold application emails from a report or pasted JD, with subject line, attachment checklist, source-backed fit points, and a profile-driven contact block. Draft-only -- career-ops never sends, submits, or clicks anything. | | Portal Scanner | 100+ companies pre-configured (Anthropic, OpenAI, ElevenLabs, Retool, n8n...) + custom queries across Ashby, Greenhouse, Lever, Wellfound | | Funded Company Discovery | Review-first company:funded command surfaces recently funded companies and source diagnostics from structured public feeds without editing your data | | Batch Processing | Parallel evaluation with headless CLI workers (claude -p / opencode run) | | Dashboard TUI | Terminal UI to browse, filter, and sort your pipeline | | Pipeline Integrity | Automated merge, dedup, status normalization, health checks | | Interview Suite | Time-blocked prep plans, practice sessions with feedback, post-interview debriefs (interview/), and a company red-flag detector (interview-redflag) | | Offer Stage | Contract reading companion -- clause walk plus a lawyer question list (offer-prep) -- and a desired/advertised/actual salary-gap analyzer (salary-gap.mjs) | | Follow-ups & Replies | Follow-up cadence calculator and seeded reminders (followup-cadence.mjs, followup-seed.mjs); employer reply classification into tracker updates (reply-watch) | | Plugin System | Opt-in integrations (Gmail, Notion, Apify + a community registry), disabled by default -- see docs/PLUGINS.md |

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-ops
claude   # 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.git
cd career-ops && npm install
npx playwright install chromium   # only needed for PDF generation

On a non-Debian/Ubuntu Linux distro (Fedora, Arch, ...), Chromium's system

libraries aren't installed by the line above — install them yourself with

your distro's package manager if PDF generation fails to launch the browser

(Playwright's own docs list the required libraries per platform).

2. Check setup

npm run doctor # Validates all prerequisites

3. Configure

cp config/profile.example.yml config/profile.yml # Edit with your details cp templates/portals.example.yml portals.yml # Customize companies

4. 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"

Scanning through an outbound proxy

Node's ordinary fetch() may ignore HTTP_PROXY, HTTPS_PROXY and NO_PROXY in a proxy-only sandbox. Provider requests can use those variables with CAREER_OPS_TRUST_PROXY_EGRESS=1 node scan.mjs. This uses a request-scoped proxy dispatcher; unrelated requests are unaffected, and NO_PROXY destinations still use the local private-address guard.

Set this flag only when the configured proxy itself blocks connections to private, loopback and metadata addresses. When a proxy resolves the destination remotely, career-ops cannot verify that final address locally; the proxy must enforce that part of the SSRF boundary. Without this explicit trust setting, provider requests keep their normal direct transport and a DNS failure names the proxy setup needed. Proxy URLs containing credentials must use HTTPS; credential-free HTTP proxies remain supported. The flag requires Node.js 18.17 or newer. Existing installations keep direct transport after a system update; proxy environment variables alone do not enable it. Before enabling the flag, run npm install in the career-ops directory to install the added undici dependency. It is loaded only for an opted-in request with a configured proxy, so direct scanning continues to work even before that dependency is installed.

Global install

npm i -g @santifer/career-ops

This 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?

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.

Usage

career-ops uses a shared command router. In CLIs that register slash commands, it looks like this:

/career-ops           → Show all available commands
/career-ops {JD}      → AUTO-PIPELINE: evaluate + report + PDF + tracker (paste text or URL)
/career-ops pipeline  → Process pending URLs from inbox (data/pipeline.md)
/career-ops oferta    → Evaluation only, blocks A to H (no auto PDF)
/career-ops ofertas   → Compare and rank multiple offers
/career-ops contacto  → LinkedIn power move: find contacts + draft message
/career-ops deep      → Deep research prompt about company
/career-ops interview-prep → Generate company-specific interview prep doc
/career-ops interview    → Interactive profile/CV onboarding interview
/career-ops master-profile → Import, review, and validate your Master Career Profile
/career-ops eu-swe    → Calibrate a European SWE application before CV/apply/interview
/career-ops eu-fintech → Scan 21 EU fintech portals for Product Manager roles (zero-token)
/career-ops interview/plan → Time-blocked prep plan for an upcoming interview
/career-ops interview/practice → Practice interview, one question at a time with feedback
/career-ops interview/debrief → Post-interview debrief: close gaps, predict next round
/career-ops interview-redflag → Analyze employer warning signs before joining a company
/career-ops pdf       → PDF only, ATS-optimized CV
/career-ops text      → Tailored markdown CV (mirrors cv.md, no PDF)
/career-ops latex     → Export CV as LaTeX/Overleaf .tex
/career-ops latex-tex → Tailor your own resume.tex in place (opt-in; cv.md stays default)
/career-ops cover     → Cover letter: standalone JD paste or /career-ops cover {slug}
/career-ops email     → Formal application email draft (draft-only; never sends, submits, or clicks)
/career-ops add       → Add a project/paper/role to your CV (fetch + preview + confirm)
/career-ops expand    → Auto-discover and add missing competencies from profile links
/career-ops training  → Evaluate course/cert against North Star
/career-ops project   → Evaluate portfolio project idea
/career-ops tracker   → Application status overview
/career-ops agent-inbox → Queue/drain requests for the next session (data/agent-inbox.md)
/career-ops apply     → Live application assistant (reads form + generates answers)
/career-ops scan      → Scan portals and discover new offers
/career-ops discover  → Resolve a company list to scannable ATS boards + append to portals.yml (zero-token)
/career-ops batch     → Batch processing with parallel workers
/career-ops patterns  → Analyze rejection patterns and improve targeting
/career-ops offer-prep → Read a received offer/contract with the candidate: clause walk + lawyer questions (not legal advice)
/career-ops titles    → Suggest adjacent job titles from your CV to broaden the search
/career-ops upskill   → Aggregate skill-gap analysis from your evaluated reports
/career-ops followup  → Follow-up cadence tracker: flag overdue, generate drafts
/career-ops reply-watch → Classify employer replies and suggest tracker updates
/career-ops outcome   → Record application outcome & archive artifacts
/career-ops calibrate → Advisory report: do your evaluation scores predict your real outcomes? Reads /outcome data; never changes scoring
/career-ops update    → Update career-ops system files with diff preview + compat check

Or just paste a job URL or description directly -- career-ops auto-detects it and runs the full

GitHub Stars & Activity

73,232Stars
0Forks
0Open issues
JavaScriptLanguage

GitHub Popularity

GitHub stars73,232
Forks0
Open issues0
Primary languageJavaScript
License-
Stars gained today0
Created-
Last pushed-

Trending History

Trending statusnot on today's boards

Related GitHub Projects

1

affaan-m / ECC

JavaScript★ 270,598⑂ 0
→
2

DietrichGebert / ponytail

JavaScript★ 150,258⑂ 0
→
3

addyosmani / agent-skills

JavaScript★ 100,303⑂ 0
→
4

Leonxlnx / taste-skill

JavaScript★ 91,750⑂ 0
→
5

tt-a1i / archify

JavaScript★ 75,733⑂ 0
→
6

asgeirtj / system_prompts_leaks

JavaScript★ 68,722⑂ 0
→
7

Mintplex-Labs / anything-llm

JavaScript★ 66,654⑂ 0
→
8

gsd-build / get-shit-done

JavaScript★ 64,412⑂ 0
→

More Trending Repositories