Claude Code + Codex Latest docs for npm latest Python 3.10+ MIT License v1.11.0

Six commands.
End-to-end job applications.

Bootstrap your profile from your CV → verify role leads → scaffold a config → generate a tailored CV PDF → prepare the ATS form with guarded handoff → track your pipeline. Profile data stays local (gitignored). The agent fills safe fields. You handle sensitive controls and Submit.

career-agent · Claude Code aliases
$ /setup-profile ~/Downloads/LinkedIn.pdf  profile.json written · 9 roles parsed · 3 CV variants
$ /source Netherlands backend  verified leads returned · top fit is heuristic
$ /new-role https://boards.greenhouse.io/stripe/jobs/5891234  roles/stripe_backend_2026.json
$ /generate-cv stripe_backend_2026  stripe_backend_2026_CV.pdf · CoverLetter.pdf
$ /apply stripe_backend_2026  safe fields prepared where verified · handoff before Submit
→ Waiting for you: sensitive fields + Submit
$ /track stripe_backend_2026 applied  status → applied
demo · /apply stripe_backend_2026
career-agent demo: filling a Greenhouse ATS form with human handoff

The six commands

person_add
/setup-profile
Bootstrap from CV or LinkedIn
search
/source
Find & verify roles
settings_suggest
/new-role
Scaffold role config
picture_as_pdf
/generate-cv
Tailored PDF + cover letter
smart_toy
/apply
Fill ATS form & upload
monitoring
/track
Pipeline & status
verified_user

The agent never clicks Submit. It stops before EEO, consent, attestation, legal, CAPTCHA, credential, payment, national-ID, and ambiguous fields. That boundary is intentional.

What makes it different

Not a template engine. Not a job board. A Claude Code and Codex workflow that runs the application pipeline from your local project. career-agent has no backend, accounts, or telemetry.

person_add

Profile Bootstrap

Upload your CV or LinkedIn PDF. The agent extracts work history, infers three audience variants (AI/LLM, Data Platform, Backend), and writes one default bullet set plus three audience-specific variants.

find_in_page

Role Sourcing

Discovers leads from available public sources, verifies open roles on company-controlled pages, and scores verified matches against your profile. Blocked or inconclusive checks are marked clearly. Fit scores are heuristic.

architecture

A/B/C CV Variant System

Three audience variants: AI/LLM, Data Platform, Senior Backend, with per-job bullet sets reframed for each. One profile, reusable tailored outputs.

picture_as_pdf

ATS-Safe PDF Generation

reportlab Platypus engine. Single-column, Helvetica, no tables, no images, clickable links. Designed to avoid common parser issues; review extracted content before submitting.

smart_toy

Browser Form Automation

Opens the ATS URL, fills only classified safe fields, uploads PDFs when safe, and hands off before sensitive controls or Submit. Greenhouse, Lever, and Workable require non-submitting evidence before Codex Chrome support is promoted.

lock

Data Stays Local

profile.json and roles/ are gitignored. career-agent has no backend, accounts, telemetry, or API keys for your data. Your agent host and browser may process content you choose to provide.

Agent Skills

Profile Bootstrap

Build profile.json from your CV or LinkedIn PDF. Extracts work history, infers three CV variants, and writes one default bullet set plus three audience-specific variants.

$ /setup-profile # upload or paste your CV in the same message
info

Evidence standard: the agent never invents facts not in the source. Fields it can't populate are left blank and flagged in the report.

Role Lead Verification

Discover role leads from available public/search sources, verify open roles on company-controlled posts, and rank verified matches by heuristic fit score against your profile variants.

$ /source Germany backend
info

Official posts are cited when roles are counted as verified. Sponsorship and relocation are labeled by confidence, with source-list claims kept separate from job-post facts.

Role Config Scaffold

Scrapes the job posting URL, detects the ATS platform, selects the right CV variant, and generates a pre-filled roles/<role_id>.json.

$ /new-role https://boards.greenhouse.io/stripe/jobs/5891234
info

Auto-detects Greenhouse, Lever, Workable from the URL. Prompts interactively for anything it can't infer.

PDF Generation

Builds ATS-aware CV and cover letter PDFs using reportlab Platypus. Single-column, Helvetica, no tables, no images, clickable links. Parser behavior varies by ATS, so review extracted content before submitting.

$ /generate-cv stripe_backend_2026
info

Output: generated/stripe_backend_2026_CV.pdf and generated/stripe_backend_2026_CoverLetter.pdf

ATS Form Filling

Opens the job URL, fills only classified safe fields when the ATS case is understood, uploads PDFs when safe, answers safe custom questions, then hands off sensitive fields and Submit to you.

$ /apply stripe_backend_2026
verified_user

The agent never fills EEO, consent, attestation, legal, CAPTCHA, credential, payment, national-ID, or ambiguous fields, and never clicks Submit.

Pipeline Tracker

View your application pipeline, update statuses, add notes. Stored in tracker.json (gitignored - stays local).

$ /track stripe_backend_2026 "screen"
info

Statuses: draft, applied, screen, interview, offer, rejected, withdrawn. Run /track with no args to view the full pipeline.

ATS platform notes

Greenhouse logo
Evidence Notes

Greenhouse

Direct forms and top-level embed URLs have handling notes for React comboboxes and hidden file inputs. Codex Chrome remains experimental; page observations are recorded in the verification matrix but no non-submitted end-to-end fill-and-upload pass has been committed for this platform.

boards.greenhouse.io · boards.greenhouse.io/embed
Lever logo
Evidence Notes

Lever

Single-page forms have handling notes for resume upload and cover-letter text areas. Codex Chrome remains experimental; page observations are recorded in the verification matrix but no non-submitted end-to-end fill-and-upload pass has been committed for this platform.

jobs.lever.co
Workable logo
Evidence Notes

Workable

Workable has handling notes for visible file inputs, dropdowns, and multi-step forms. Codex Chrome remains experimental; page observations are recorded in the verification matrix but no non-submitted end-to-end fill-and-upload pass has been committed for this platform.

apply.workable.com
Greenhouse EU logo
Evidence Notes

Greenhouse EU

EU-domain Greenhouse forms use the same field-filling strategy as Greenhouse direct. First-class supported platform; verified against JetBrains and Kayzen submissions (2026-06-22). Codex Chrome remains experimental.

job-boards.eu.greenhouse.io
Ashby logo
Evidence Notes

Ashby

Standard form structure; resume upload, optional cover letter, custom fields. Confirmation detection verified against Poolside and Kraken submissions (2026-06-22). Field-filling DOM quirks not yet documented — treat as standard form and record observations on first run.

jobs.ashbyhq.com
Teamtailor logo
Evidence Notes

Teamtailor

Standard form structure; resume upload, optional cover letter. Confirmation detection verified against BUX submission (2026-06-22). Field-filling DOM quirks not yet documented — treat as standard form and record observations on first run.

teamtailor.com

Coming next: SmartRecruiters, iCIMS, Taleo, BambooHR - PRs welcome.

Install

The setup command checks Python 3.10+, installs PDF dependencies from requirements.txt when needed, detects Claude Code and Codex independently, and creates profile.json. It does not install either plugin host or the Codex plugin for you.

Setup check
$ npx @nextwebb/career-agent
$ npx @nextwebb/career-agent doctor
Claude Code
$ claude plugin marketplace add nextwebb/career-agent
$ claude plugin install career-agent
Codex setup

The setup check verifies local prerequisites and may create starter files, but it does not install the Codex plugin. Install the Codex plugin from this repository's marketplace:

$ codex plugin marketplace add nextwebb/career-agent
$ codex plugin add career-agent@career-agent

The Claude commands above are Claude Code setup only.

Support matrix
Workflow Claude Code Codex
Profile, sourcing, role config, PDFs, trackingSupportedSupported
ATS form fillingSupported with Claude in ChromeExperimental; page observations are in the verification matrix but no platform has a committed non-submitted end-to-end pass
Then
$ /setup-profile # Claude Code alias
$ $setup-profile # Codex skill invocation
$ /source Netherlands backend # Claude Code alias
$ $source Netherlands backend # Codex skill invocation
$ /new-role <url> # Claude Code alias
$ $new-role <url> # Codex skill invocation
$ /generate-cv <role_id> # Claude Code alias
$ $generate-cv <role_id> # Codex skill invocation
$ /apply <role_id> # Claude Code alias
$ $apply <role_id> # Codex Chrome evidence-gated

Common questions

Is my personal data safe? add
career-agent has no backend, accounts, or telemetry. profile.json, roles/, and tracker.json are gitignored. Your agent host and browser may process content you choose to provide.
Does it click Submit for me? add
No. The agent stops at the final review page. It also never fills EEO, consent, attestation, legal, CAPTCHA, credential, payment, national-ID, or ambiguous fields. This boundary is intentional - you retain full control of irreversible and sensitive actions.
What do I need besides Claude Code or Codex? add
Python 3.10+ with reportlab and pypdf from requirements.txt. Node 18+ if you use the npx setup check. For form filling, Claude Code uses Claude in Chrome. Codex uses Browser for public pages and Chrome for signed-in browser state, but Codex Chrome /apply remains experimental — page observations are recorded in the verification matrix, but page observations alone do not constitute an end-to-end automation pass; no ATS platform has a committed non-submitted fill-and-upload record for Codex Chrome.
Why does /setup-profile exist? Can't I just fill profile.json manually? add
You can, but the schema is substantial - three CV variants (each with its own headline and summary) and per-variant bullet sets for every job role. For a 10-role history that's 30+ bullet sets. /setup-profile generates all of it from your existing CV or LinkedIn PDF in one pass.
My ATS platform isn't listed. Can I add it? add
Yes. Open an issue first to avoid duplication, then add platform-specific quirks to the apply skill. Target platforms: Ashby, SmartRecruiters, Taleo, iCIMS, BambooHR. See CONTRIBUTING.md.