DEV Community

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

Posted on

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

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.

Try Apidog today

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.

Image

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

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

The common workflow is the auto-pipeline:

/career-ops {paste job URL or job description}
Enter fullscreen mode Exit fullscreen mode

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

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:

  1. Reads the job description and extracts required skills and ATS keywords.
  2. Rewrites your experience bullets to surface those keywords without fabricating experience.
  3. 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
Enter fullscreen mode Exit fullscreen mode

Or include it in the full pipeline:

/career-ops {paste job URL or description}
Enter fullscreen mode Exit fullscreen mode

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

Then run:

/career-ops scan
Enter fullscreen mode Exit fullscreen mode

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

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

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

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

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

2. Configure your profile

cp config/profile.example.yml config/profile.yml
Enter fullscreen mode Exit fullscreen mode

Edit config/profile.yml with:

  • Name
  • Location
  • Target role
  • Salary range
  • Preferences

3. Configure target companies

cp templates/portals.example.yml portals.yml
Enter fullscreen mode Exit fullscreen mode

Add or remove companies from the scanner list.

4. Add your CV

Create a cv.md file in the project root:

touch cv.md
Enter fullscreen mode Exit fullscreen mode

Paste your CV in Markdown format.

5. Open Claude Code

claude
Enter fullscreen mode Exit fullscreen mode

Then ask Claude to adapt the system:

Change the archetypes to backend engineering roles.
Enter fullscreen mode Exit fullscreen mode
Add these 5 companies to portals.yml.
Enter fullscreen mode Exit fullscreen mode
Update my profile with this CV.
Enter fullscreen mode Exit fullscreen mode

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

Apply an update:

node update-system.mjs apply
Enter fullscreen mode Exit fullscreen mode

Roll back if needed:

node update-system.mjs rollback
Enter fullscreen mode Exit fullscreen mode

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

Then run:

/career-ops {paste job URL or description}
Enter fullscreen mode Exit fullscreen mode

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

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)