You have a stack of job postings open and a Claude Code session already running. You do not want another chat that writes a generic cover letter. You want the same agent that edits your code to score the posting, rewrite the CV against the exact requirements, generate a cover letter, and hand you interview notes — all as real files on your machine. That is what the open-source project called ai-job-search does. It turns Claude Code into a full AI job search and application pipeline you control. Fork it, fill one profile, then run three slash commands. The output is tailored LaTeX PDFs and a score you can trust or override.
The rest of this page shows exactly how to set it up, what the first run produces, where it is strong, and when you should skip it.
Why a Normal Claude Chat Is Not Enough for Job Applications

A chat window can rewrite a bullet. It cannot keep a clean profile, search multiple portals without you pasting, score fit against a written criteria file, run a second agent that criticises the first draft, or compile a PDF that survives an ATS parser. You end up copying text back and forth and losing track of which version went where.
ai-job-search fixes that by living inside the same Claude Code process you already use for code. Profile, criteria, templates, and history stay as files. The agent reads them, writes new files, and leaves a trail you can git-commit.
What You Need Before the First Command
Claude Code (CLI) with a paid plan or API credits. Python 3.10+. Bun (for the portal search tools). A LaTeX install that can run lualatex and xelatex (TinyTeX works if you add the packages listed in SETUP.md). Optional: pypdf for the ATS text check.
Those are the only hard prerequisites. Everything else is inside the repo.
Install and First Run (the 10-Minute Path)
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
python3 tools/install_portal_clis.pyOpen Claude Code in that folder. Run /setup. It walks you through profile files: experience, skills, preferences, constraints. Fill them once. They become the single source of truth.
Then /scrape. The portal skills (Danish boards plus LinkedIn-style and freehire tools) pull listings, deduplicate, and rank by fit against your profile. You see a scored shortlist.
Pick one URL and run /apply <url>. The pipeline:
- Scores the posting against your criteria.
- Drafts a tailored CV and cover letter in LaTeX.
- Hands both to a reviewer agent that critiques tone, keyword coverage, and evidence.
- Revises and writes the final PDFs next to the source.
You review the PDFs. You decide whether to submit. Nothing is sent automatically.
I cloned the repo, walked the skills folders under .agents/skills, and confirmed the install script discovers every portal CLI without a hard-coded list. The structure is deliberate: each skill is a self-contained markdown + optional TypeScript CLI so you can add a new board with /add-portal later.
How the Scoring and Review Actually Work
The fit score is not a black-box embedding. It uses the criteria you wrote in setup plus the job text. The reviewer agent is a second Claude Code pass that is instructed to find weak evidence and missing keywords, not to praise the first draft. That second pass is the part that turns a generic rewrite into something you can defend in an interview.
LaTeX is the output format because the templates are designed for ATS parsing and clean visual layout. The CV uses lualatex; the cover letter uses xelatex for font support. If your minimal TeX install is missing packages, SETUP.md lists the exact tlmgr install lines.
When This Is the Right Tool and When It Is Not
Use it when:
- You already live in Claude Code.
- You want every application version under git.
- You are willing to keep the human in the loop for the final submit.
- Your market is covered by the existing portal skills or you are ready to add one.
Skip it (or fork heavily) when:
- You need fully automatic submission across dozens of sites.
- You refuse any paid Claude plan or API cost.
- Your language or country has no portal skill and you do not want to write one.
- You prefer a pure web app with a database UI.
There are other Claude Code job-search frameworks. This one is the one whose author published the exact numbers from his own search (69 tailored applications, 20 first interviews, one signed offer) and left the same commands in the public repo.
Test It Yourself in Under Ten Minutes
- Fork and clone.
- Run the portal install script.
- Start Claude Code and run
/setupwith a short real profile. - Paste one job URL you already care about into
/apply. - Open the generated PDFs and the score file.
If the score and the critique match what you would have written by hand, keep the workflow. If they do not, edit the criteria files and re-run. That is the whole point of a file-based system.
You now have the install path, the three commands, the honest limits, and a concrete test you can finish today. Run the first /apply on a real posting you care about. The files will tell you whether the pipeline is worth keeping.
Common questions about AI Job Search in Claude Code
Does it work outside Denmark?
The core scoring, drafting, and review loop is language- and country-agnostic. The portal search skills start Danish-heavy; the LinkedIn-style and freehire tools plus /add-portal cover the rest.
Will recruiters notice identical letters?
They will if you never edit. The reviewer agent and your own final pass exist so each letter is unique. Treat the output as a strong first draft, not the finished product.
Can I use it with Codex or another agent?
AGENTS.md explains the thin pointer pattern. Portal CLIs work out of the box; the full slash-command surface needs the community forks listed in the discussions.
Is my data leaving the machine?
Only the Claude API calls. Profile, CVs, cover letters, and history stay local. That is the design.