TL;DR
Career-Ops is a free, open source Claude Code boilerplate that turns your job search into a local, CLI-driven pipeline. It evaluates roles with A-F scoring, generates tailored ATS-friendly CV PDFs, scans 45+ company portals, tracks applications, and includes a Go terminal dashboard. Its creator used it to evaluate 740+ offers and land a Head of Applied AI role.
Introduction
Most developers manage job applications in spreadsheets: paste a job description, scan for keywords, update a status column, repeat. After 50 listings, the process starts to feel like another job.
Career-Ops changes the workflow. Instead of manually evaluating, tailoring, and tracking every role, you run the process through Claude Code. You paste a job URL or description, and the system reads your CV, reasons about fit, scores the role across structured dimensions, generates a tailored PDF, and logs the result. You still decide whether to apply.
The project is not designed as a mass-apply bot. Its core philosophy is filtering: identify the few roles worth your time and reject everything below a 4.0/5 fit score. Santiago Fernández de Valderrama, the creator, used it to evaluate 740+ offers, generate 100+ tailored CVs, and land a Head of Applied AI role. The project reached 11.9k GitHub stars in under a week.
If you're building or testing APIs and need a reliable way to validate endpoints throughout pipeline setup, Apidog's Test Scenarios can help you verify HTTP calls Career-Ops makes to job board APIs before they break in production. See [internal: api-testing-tutorial] for the broader testing approach.
What Career-Ops does
Career-Ops is a Claude Code boilerplate, not a standalone SaaS app. You clone the repo, add your CV as Markdown, configure a YAML profile, and open Claude Code in that directory. From there, slash commands run the job-search workflow.
The core flow:
Job URL or description
|
v
Archetype detection
(LLMOps / Agentic / PM / SA / FDE / Transformation)
|
v
A-F Evaluation Engine
(reads cv.md, scores 10 dimensions)
|
+----+----+
v v v
Report PDF Tracker
.md .pdf .tsv
Because Claude Code reads and edits the same files it executes, you can ask it to adjust modes, scoring weights, archetypes, or negotiation scripts directly inside the project.
Slash commands
Career-Ops exposes one main entry point: /career-ops.
/career-ops # Show all commands
/career-ops {paste a JD} # Full pipeline: evaluate + PDF + tracker
/career-ops scan # Scan 45+ company portals for new offers
/career-ops pdf # Generate ATS-optimized CV for a listing
/career-ops batch # Evaluate 10+ offers in parallel
/career-ops tracker # View application pipeline status
/career-ops apply # Fill application forms with AI
/career-ops pipeline # Process a queue of pending URLs
/career-ops contacto # Draft LinkedIn outreach messages
/career-ops deep # Deep research on a target company
/career-ops training # Evaluate a course or certification
/career-ops project # Evaluate a portfolio project
The common workflow is the auto-pipeline:
/career-ops {paste job URL or job description}
Career-Ops auto-detects the mode, evaluates the role, generates the PDF, and updates the tracker.
How the A-F scoring engine works
The evaluation engine scores each offer through six structured blocks.
Block A: Role summary
Extracts:
- Job title
- Team
- Seniority
- Required skills
- Role archetype
Supported archetypes include LLMOps engineer, Agentic Systems, Product Manager, Solutions Architect, and related technical roles.
Block B: CV match
Compares your actual cv.md against the job description. It reasons about experience rather than counting keyword matches.
It identifies:
- Matching experience
- Skill gaps
- Strengths
- Dealbreakers
Block C: Level and compensation strategy
Researches compensation benchmarks for the role, location, and seniority. It then builds a negotiation argument from your proof points.
Block D: Personalization
Generates the application angle for cover letters or outreach based on:
- What the company is building
- How your background maps to the role
- Which proof points are strongest
Block E: Final A-F evaluation
Aggregates the previous blocks into a final score. The recommended rule is simple:
Do not apply below 4.0/5.
That constraint keeps the system focused on decision support instead of application volume.
Block F: Interview prep with STAR+R
Generates behavioral interview stories from your CV using STAR+R:
- Situation
- Task
- Action
- Result
- Reflection
The Reflection column is intended to signal seniority: what you learned, what you would do differently, and how the experience changed your approach.
Stories are stored in story-bank.md, so you can build a reusable library of 5-10 strong stories instead of rewriting them for each interview.
Career-Ops also generates negotiation scripts for salary anchoring, geographic discount pushback, and competing-offer scenarios.
Generate ATS-optimized PDFs
The PDF generator creates a tailored CV for each job description instead of using a generic resume.
It does three things:
- Reads the job description and extracts required skills and ATS keywords.
- Rewrites your experience bullets to surface those keywords without fabricating experience.
- Renders the CV to PDF via Playwright/Puppeteer using an HTML template with Space Grotesk and DM Sans fonts.
Run it directly:
/career-ops pdf
Or include it in the full pipeline:
/career-ops {paste job URL or description}
Generated files are written to the output/ directory, which is gitignored by default so personal CV data stays local.
The template is MIT-licensed, so you can fork and customize it.
Scan company portals
Career-Ops includes 45+ preconfigured companies for automatic scanning.
Examples include:
| Category | Companies |
|---|---|
| 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 |
| LLMOps | Langfuse, Weights & Biases, Lindy, Cognigy, Speechmatics |
| Enterprise | Salesforce, Twilio, Gong, Dialpad |
| Automation | n8n, Zapier, Make.com |
| European / DACH | Factorial, Attio, Tinybird, Clarity AI, Travelperk, plus 31 DACH companies added by contributors |
The scanner uses Playwright for career pages and queries Greenhouse, Ashby, Lever, and Wellfound APIs directly. It also runs 19 prebuilt search queries across major job boards.
Configure target companies in portals.yml:
cp templates/portals.example.yml portals.yml
Then run:
/career-ops scan
New listings are added to your pipeline automatically.
Process jobs in batch mode
If you already have a backlog of job URLs, use batch mode.
# Drop URLs into the jds/ directory
/career-ops batch
Under the hood, Career-Ops runs parallel claude -p workers. Each worker processes one offer independently. Results are deduplicated and merged into the tracker.
The batch runner lives here:
batch/batch-runner.sh
This is useful when you want to evaluate many roles without spending a full day manually reviewing them. The project reports that evaluating 20 offers manually can take a full day, while batch mode can complete that scale in under an hour.
Use the Go TUI dashboard
Applications are stored in:
data/applications.md
The built-in dashboard is written in Go with Bubble Tea and uses the Catppuccin Mocha theme.
Build and run it:
cd dashboard
go build -o career-dashboard .
./career-dashboard
The dashboard supports:
- 6 filter tabs by status, archetype, and score
- 4 sort modes
- Grouped and flat views
- Lazy-loaded report previews
- Inline status updates
You can update an application status from the TUI without manually editing the Markdown tracker.
Set it up in 15 minutes
1. Clone and install
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium
2. Configure your profile
cp config/profile.example.yml config/profile.yml
Edit config/profile.yml with:
- Name
- Location
- Target role
- Salary range
- Preferences
3. Configure target companies
cp templates/portals.example.yml portals.yml
Add or remove companies from the scanner list.
4. Add your CV
Create a cv.md file in the project root:
touch cv.md
Paste your CV in Markdown format.
5. Open Claude Code
claude
Then ask Claude to adapt the system:
Change the archetypes to backend engineering roles.
Add these 5 companies to portals.yml.
Update my profile with this CV.
Because Claude reads the mode files it executes, it can update scoring weights, negotiation scripts, and archetypes by editing the relevant project files.
Update the system
Version 1.1.0 introduced a two-layer architecture:
- System files: scoring rules, modes, shared context
- User files: profile, CV, customizations
Updates apply to the system layer only. User data is not touched.
Check for updates:
node update-system.mjs check
Apply an update:
node update-system.mjs apply
Roll back if needed:
node update-system.mjs rollback
A backup branch is created before every update. Post-update validation confirms that user files were not modified.
What makes Career-Ops different
Most AI job search tools are either resume rewriters or mass-apply bots. Career-Ops is neither.
It is a decision system
The A-F scoring engine is designed to help you reject weak-fit roles. The documented recommendation is to avoid applying below 4.0/5.
It reasons about fit
Block B compares your CV and the job description semantically. For example, a role listing "5 years Python" may still score well if you have fewer years of Python but strong production ML systems experience.
It improves with context
The first few evaluations may be rough because Claude does not know your career story yet. Add proof points, preferences, and reusable stories to improve calibration.
Think of it like onboarding a recruiter: the system becomes more useful after it has enough context.
It keeps your data local
Your CV, generated PDFs, reports, and application tracker are gitignored by default. Nothing leaves your machine except the Claude API calls made through Claude Code.
Limitations
Requires Claude Code
Career-Ops is built specifically for Claude Code. It does not directly run with other models or frontends. You need an Anthropic account with Claude Code access.
Playwright scanners can break
Company career pages change often. The scanner is more reliable for standardized platforms like Greenhouse, Ashby, and Lever. Custom career pages may require selector updates.
Initial evaluations need calibration
The README warns that early evaluations may be inaccurate until you configure your profile and add enough proof points. Budget time for setup before trusting scores.
Batch mode can use API credits quickly
Parallel claude -p workers can burn through credits on large batches. Monitor usage before running a 50-offer batch.
See [internal: how-ai-agent-memory-works] for background on why AI systems need calibration time and context before they perform well.
Who should use Career-Ops
Career-Ops is a good fit for developers and technical professionals who:
- Are actively job searching
- Want to reduce manual application tracking
- Are targeting AI companies or technical roles
- Want AI-assisted evaluation, not mass application automation
- Are comfortable with CLI tools, YAML, and Markdown
It is not ideal for non-technical users who want a GUI or anyone looking to automate application submission. Career-Ops does not submit applications. The final decision stays with you.
Getting started
Start with one role you actually care about:
git clone https://github.com/santifer/career-ops.git
cd career-ops
npm install
npx playwright install chromium
cp config/profile.example.yml config/profile.yml
cp templates/portals.example.yml portals.yml
touch cv.md
claude
Then run:
/career-ops {paste job URL or description}
GitHub: github.com/santifer/career-ops
The project is MIT-licensed. Community contributions are welcome; open an issue before submitting a PR.
Conclusion
Career-Ops is a complete open source job-search pipeline built around Claude Code. The A-F scoring system, tailored PDF generation, batch processing, portal scanning, and Go TUI dashboard are useful individually. Together, they create a practical workflow for filtering roles and applying only where the fit is strong.
The core idea is simple: job searching is an information problem, not a volume problem. Career-Ops gives developers a local, configurable system for treating it that way.
FAQ
Does Career-Ops cost anything?
The tool itself is free and MIT-licensed. You pay for Claude API usage, which depends on how many evaluations and PDFs you generate.
A single full evaluation, including evaluation, PDF generation, and tracker entry, typically uses 10,000-30,000 tokens depending on CV and job description length. At Claude 3.5 Haiku pricing of $0.25/1M input tokens and $1.25/1M output tokens, a full evaluation costs under $0.05.
Can I use it with models other than Claude?
Not directly. Career-Ops is built as a Claude Code boilerplate. The modes and shared context files are written for Claude's tool-use capabilities. Porting it to another model would require rewriting the skill definitions.
How does ATS optimization work?
Career-Ops reads the job description, extracts required skills and keywords that ATS systems may scan for, and rewrites your experience bullets to surface those keywords naturally.
It does not fabricate experience. It reframes existing experience in the language used by the role.
The HTML template renders to PDF via Playwright with Space Grotesk and DM Sans fonts.
What job boards does the scanner support?
Career-Ops supports Greenhouse, Ashby, Lever, Wellfound, Workable, and RemoteFront directly. For companies not on these platforms, Playwright navigates custom career pages.
Community contributors have added 31 DACH/European companies.
See [internal: local-vs-api-ai-models] for context on how Claude Code handles different API surfaces.
Is my CV data safe?
Yes. Everything is local by default. Your CV, applications, generated PDFs, and reports are gitignored.
Nothing is sent to a third party except the Claude API calls made during evaluation through Claude Code.
See [internal: claude-code] for more on how Claude Code handles data.
Can I add my own companies to the portal scanner?
Yes. Copy the example config:
cp templates/portals.example.yml portals.yml
Then add the company.
If the company uses Greenhouse, Ashby, or Lever, the scanner can use the standard API. For custom career pages, define Playwright selectors in the config.
How long does a full evaluation take?
A single offer evaluation with PDF generation typically takes 2-4 minutes with Claude 3.5 Sonnet.
In batch mode with parallel workers, 10 offers can run in roughly the same time as one.
What is STAR+R?
STAR is a behavioral interview framework:
- Situation
- Task
- Action
- Result
Career-Ops adds:
- Reflection
Reflection captures what you learned, what you would do differently, and how the experience changed your approach. This helps senior candidates show judgment, not just execution.

Top comments (0)