DEV Community

Cover image for How to automate your job search with open source AI (Career-Ops guide)
Wanda
Wanda

Posted on • Originally published at apidog.com

How to automate your job search with open source AI (Career-Ops guide)

TL;DR

Career-Ops is a free, open source boilerplate that turns Claude Code into a full job search command center. It evaluates offers with A-F scoring, generates tailored ATS-optimized CVs per listing, scans 45+ company portals automatically, and tracks everything in a terminal dashboard. Its creator used it to evaluate 740+ offers and land a Head of Applied AI role.

Try Apidog today

Introduction

Most developers use spreadsheets to track job applications: open a new tab, paste a job description, scan for keywords, update a status cell, and repeat for each listing. This manual process is tedious and inefficient.

Career-Ops automates this workflow. Instead of manually evaluating, formatting, and tracking jobs, you leverage Claude Code. Just paste a URL or job description, and the system reads your CV, evaluates fit, scores the job across 10 dimensions, generates a tailored PDF, and logs the result. You decide whether to apply.

This isn’t a spray-and-pray bot. Career-Ops is built to filter: focus on the quality offers and ignore the rest. Its creator, Santiago Fernández de Valderrama, used it to evaluate 740+ offers, generate 100+ tailored CVs, and land a Head of Applied AI role. The project hit 11.9k GitHub stars in less than a week.

💡 Pro Tip: If you’re building or testing APIs, Apidog’s Test Scenarios let you verify every HTTP call Career-Ops makes to job board APIs before deploying. See [internal: api-testing-tutorial] for detailed guidance.

What Career-Ops Actually Does

Career-Ops is a Claude Code boilerplate—not a standalone app. To get started:

  1. Clone the repo
  2. Add your CV as a markdown file
  3. Configure your profile in a YAML file
  4. Open Claude Code in that directory

A single slash command powers the pipeline.

Career-Ops Workflow

Workflow:

Paste job URL/description
        |
        v
Archetype detection (LLMOps / Agentic / PM / SA / FDE / Transformation)
        |
        v
A-F Evaluation Engine (reads your cv.md, scores 10 dimensions)
        |
   +----+----+
   v    v    v
Report  PDF  Tracker
 .md   .pdf  .tsv
Enter fullscreen mode Exit fullscreen mode

Claude Code is the runtime. It reads and can update its own mode files, scoring weights, and negotiation scripts on your command.

The 14 Slash Commands

Career-Ops exposes a /career-ops entry point with 14 modes:

/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
Enter fullscreen mode Exit fullscreen mode

The main command is the auto-pipeline: paste any job URL or description and Career-Ops handles everything, detecting the correct mode automatically.

How the A-F Scoring Engine Works

Career-Ops scores each offer across 6 structured blocks:

  • Block A: Role summary – Extracts title, team, seniority, skills, and archetype (e.g., LLMOps, Agentic Systems, PM).
  • Block B: CV match – Compares your CV to the description, identifies skill gaps/strengths, and flags dealbreakers.
  • Block C: Level and comp strategy – Researches compensation benchmarks and builds negotiation arguments.
  • Block D: Personalization – Crafts a targeted cover letter or outreach angle based on the company and your background.
  • Block E: Evaluation score (A-F) – Aggregates all blocks into a final score. Anything below 4.0/5 is flagged as not worth applying.
  • Block F: Interview prep (STAR+R) – Generates STAR-format stories from your CV for likely behavioral questions. Stories get stored in story-bank.md for reuse.

Negotiation scripts (salary anchoring, geographic discount pushback, competing-offer tactics) are also generated.

ATS-Optimized PDF Generation

Career-Ops doesn't just rewrite your CV; it tailors it per job description for ATS systems:

  1. Reads the job description, extracts key requirements and keywords
  2. Rewrites your experience bullets to front-load relevant keywords—no fabrication
  3. Renders to PDF via Playwright/Puppeteer using an HTML template (Space Grotesk & DM Sans)

The resulting PDF is both ATS-friendly and readable. The template is MIT-licensed—fork and customize as needed.

# Generate a tailored CV
/career-ops pdf

# Or as part of full evaluation
/career-ops {paste job URL or description}
Enter fullscreen mode Exit fullscreen mode

Outputs are saved in the output/ directory (gitignored for privacy).

Portal Scanning at Scale

Career-Ops includes 45+ preconfigured companies for automatic portal scanning:

  • 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 + 31 DACH companies

The scanner uses Playwright to navigate career pages and directly queries Greenhouse, Ashby, Lever, and Wellfound APIs. Configure target companies in portals.yml, then run:

/career-ops scan
Enter fullscreen mode Exit fullscreen mode

New listings are added to your pipeline automatically.

Batch Processing with Parallel Sub-Agents

To evaluate multiple job URLs in parallel:

# Place job descriptions (URLs) in jds/ directory, then:
$ /career-ops batch
Enter fullscreen mode Exit fullscreen mode

This uses claude -p workers in parallel. Results are deduplicated and merged into your tracker. The batch runner (batch/batch-runner.sh) manages orchestration and handles failures.

Batch mode can process 20 offers in under an hour.

The Go TUI Dashboard

Your application pipeline is kept in data/applications.md (markdown table). The terminal dashboard (Go, Bubble Tea framework, Catppuccin Mocha theme) provides a visual view:

cd dashboard
go build -o career-dashboard .
./career-dashboard
Enter fullscreen mode Exit fullscreen mode

Features include:

  • 6 filter tabs (status, archetype, score)
  • 4 sort modes
  • Grouped/flat views
  • Lazy-loaded report previews
  • Inline status changes (no manual markdown edits)

Setting It Up in 15 Minutes

Follow these steps to set up Career-Ops:

# 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 profile.yml: fill in your name, location, target role, salary range, preferences

# 3. Configure target companies
cp templates/portals.example.yml portals.yml
# Add/remove companies as needed

# 4. Add your CV
# Create cv.md in project root
# Paste your CV in markdown format

# 5. Open Claude Code
claude

# Then configure with Claude:
# "Change archetypes to backend engineering roles"
# "Add these 5 companies to portals.yml"
# "Update my profile with this CV"
Enter fullscreen mode Exit fullscreen mode

Claude can edit its own config and scoring files on request, allowing for tailored adaptation.

The Auto-Update System

Version 1.1.0 separates system files (auto-updatable modes, scoring, shared context) from user files (profile, CV, customizations). Updates only affect system files; your data remains untouched.

# Check for updates (auto-runs on session start)
node update-system.mjs check

# Apply updates
node update-system.mjs apply

# Rollback if needed
node update-system.mjs rollback
Enter fullscreen mode Exit fullscreen mode

A backup branch is created before each update, and post-update validation ensures user files are unchanged.

Why Career-Ops is Different

  • Decision-focused, not mass-apply: The A-F engine helps you say no to weak matches. Don't apply to anything below 4.0/5.
  • Reasoning over keywords: Block B actually reasons about your fit, not just keyword overlaps.
  • Improves with more context: The more proof points and stories you supply, the sharper its evaluations.
  • Everything is local: Your data (CV, PDFs, reports) is kept local and gitignored. Only Claude API calls leave your machine.

Limitations to Know

  • Requires Claude Code: Only works with Anthropic's Claude Code. Not compatible with other models/frontends.
  • Playwright can be flaky: Some company pages may break scanning (especially custom HTML). Works best with Greenhouse/Ashby/Lever portals.
  • First-time calibration needed: Spend time configuring your profile and adding proof points for accurate evaluations.
  • Batch mode burns API credits: Evaluating large batches can quickly use up Claude API quota.

See [internal: how-ai-agent-memory-works] for details on calibration and context.

Who Should Use Career-Ops

Career-Ops is ideal for developers and technical professionals who:

  • Want to automate job search tracking
  • Are targeting AI/tech companies (AI-focused portal list)
  • Prefer AI-powered evaluation/decision support over mass-apply bots
  • Are comfortable with CLI tools and editing YAML

Not recommended for non-technical users or those seeking to automate application submissions; Career-Ops never submits applications for you.

Getting Started

  1. Clone the repo
  2. Add your CV
  3. Spend an hour configuring your profile with Claude
  4. Run your first evaluation on a role you care about

GitHub: github.com/santifer/career-ops

MIT-licensed. Community contributions welcome—open an issue before PRs.

Conclusion

Career-Ops is the most complete open source job search pipeline available. The A-F scoring, ATS PDF generation, batch processing, and TUI dashboard each offer serious value. With a calibrated profile, you get a workflow that ruthlessly filters and helps you apply only where it counts.

The key insight: job searching is an information problem, not a volume problem. Career-Ops treats it as such.

FAQ

Does Career-Ops cost anything?

No. It's MIT-licensed and free. You pay only for Claude API usage. One full evaluation (evaluation + PDF + tracker) uses 10,000–30,000 tokens. At Claude 3.5 Haiku rates ($0.25/1M input, $1.25/1M output), this is usually <$0.05 per evaluation.

Can I use other models besides Claude?

No. Career-Ops is built specifically for Claude Code. Porting to another model requires rewriting skill definitions.

How does ATS optimization work?

Job description keywords are extracted, and your CV bullets are rewritten to front-load them (without fabrication). PDF is rendered via Playwright with ATS-safe fonts.

What job boards does the scanner support?

Greenhouse, Ashby, Lever, Wellfound, Workable, and RemoteFront directly. Custom pages are scanned via Playwright. 31 DACH/European companies are included via community contributions. See [internal: local-vs-api-ai-models] for details.

Is my CV data safe?

Yes. All data is local and gitignored. Only Claude API calls (same as normal Claude Code usage) leave your machine. See [internal: claude-code] for data handling details.

Can I add my own companies to the portal scanner?

Yes. Copy templates/portals.example.yml to portals.yml and add companies. Greenhouse/Ashby/Lever are auto-scanned; custom pages require Playwright selectors.

How long does a full evaluation take?

Typically 2–4 minutes per offer (evaluation + PDF) with Claude 3.5 Sonnet. In batch mode, 10 offers run in about the same time as 1.

What's the STAR+R framework?

STAR = Situation, Task, Action, Result. "+R" adds Reflection (what you learned, how you’d approach it now)—a signal of seniority.


Ready to level up your job search?

github.com/santifer/career-ops

Top comments (0)