
AI Job Search turns Claude Code into a job application assistant. You fork the repository, fill in your profile once, and then run slash commands: search the job boards, score each posting against your profile, draft a tailored CV and cover letter, have a second agent critique them, and prepare for the interview.
It isn't an app or a service. It's a folder of instructions, skills and templates that runs on your own machine, with your own Claude subscription.
| Author | Mads Lorentzen, a geophysicist turned AI engineer, who built it for the Danish job market |
| Licence | MIT |
| Language | Python and TypeScript, with LaTeX templates |
| Created | 18th March 2026 |
| Traction | 43,949 stars, 15,128 forks |
| Needs | Claude Code (paid), Python 3.10+, Bun, and a LaTeX install |
The story behind it
Lorentzen lost his position in late 2025 and built the framework for his own search, running the same commands every week. His result: 69 tailored applications, 20 first interviews and 1 signed contract. He started as an AI engineer in June 2026, and says he was open about the tool with every employer, which usually started a technical conversation rather than hurting him.
That track record is why the repository took off. It's a working system that got its author hired, not a demo.
What it does
The core is 3 commands:
/setupbuilds your profile. It reads adocuments/folder (CV, LinkedIn export, diplomas, reference letters, past applications), imports a pasted CV, or interviews you./scrapesearches job portals, removes duplicates and sorts the results by fit./apply <url>runs the full pipeline on 1 posting: evaluate the fit and score it, draft a CV and cover letter in LaTeX, pass them to a reviewer agent that critiques them, revise, and present the final PDFs.
10 more commands cover the rest of the search:
| Command | What it does |
|---|---|
/rank |
Scores a batch of scraped postings in parallel and returns a ranked shortlist |
/interview |
Builds a prep pack for a specific interview round, then offers a mock interview |
/outcome |
Records results, archives what you sent, and drafts follow-ups for silent applications |
/gmail-sync |
Reads Gmail for interview invites or rejections, and proposes tracker updates for approval |
/notion-sync |
Publishes a read-only view of the pipeline to a Notion database |
/html-report |
Builds an offline HTML dashboard of the whole search |
/upskill |
Maps skill gaps against the postings, with a learning plan |
/expand |
Adds skills found in your GitHub, portfolio or publications to the profile |
/add-template |
Registers your own CV or cover letter template |
/add-portal |
Generates a search skill for a job board in your country |
For business people
The problem it solves: a serious job search means dozens of applications, each needing a tailored CV and letter. That's the "Sunday of cover-letter writing" the author wanted to get rid of.
Why it works better than asking a chatbot:
- It knows you in detail. Profile, behavioural assessment, writing style and STAR examples live in files, so every draft starts from the same facts.
- It says no. A scoring framework rates each posting on 5 dimensions, and deal-breakers veto a job before you spend time on it.
- It checks its own work. A second agent reviews every CV and letter before you see them.
- It remembers. A tracker and an archive of everything sent feed follow-ups, interview prep, and a later recalibration of the scoring from what actually got interviews.
- It never invents. Gaps in experience get honest "bridge" answers, and follow-ups only use claims from materials you already sent.
The costs and limits:
- Claude Code has no free tier. You need a Claude subscription or API credits.
- The job boards are Danish. Jobindex, Jobnet, Akademikernes Jobbank and Jobdanmark come built in. The profile, scoring and application steps work in any country, and
/add-portalgenerates a skill for a local board. - A fork is public.
/setupwrites your name, work history and salary expectations into tracked files. The README warns about this plainly: for a real search, use a private copy instead of a fork. - Postings are untrusted input. The workflow ignores instructions hidden in a job ad and doesn't follow its links, but the author calls these defences instruction-level, not a sandbox. Read what it fetched before you send anything.
For technical people
Install
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
# Portal search CLIs (TypeScript, run with Bun)
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
(cd .agents/skills/$tool/cli && bun install)
done
claude # then run /setup inside Claude Code
The CV compiles with lualatex and the cover letter with xelatex. pypdf is optional, for an ATS parseability check on the finished PDF.
How it's built
CLAUDE.mdholds the candidate profile and the workflow rules..claude/skills/job-application-assistant/is the core skill, split into 7 files: candidate profile, behavioural profile, writing style, job evaluation, CV templates, cover letter templates and interview prep..claude/commands/holds 1 Markdown file per slash command..agents/skills/holds 6 portal search tools, each a small CLI with its own tests.- CI compiles the LaTeX templates, lints the skills and type-checks the CLIs.
AGENTS.mdlets Codex, Gemini CLI and other agents use the portal skills, and community forks adapt the full workflow.
⚠️ WARNING: 1 of the bundled search tools,
linkedin-search, fetches LinkedIn's public job listings. Skip it if your LinkedIn account mustn't touch automated traffic.
Value
For a job search, it's the most complete open-source setup I've seen: the whole funnel from search to signed contract, with an honest scoring step that saves time on jobs you shouldn't apply for.
For me, the interest is the architecture. It uses the same patterns as my own NicAI setup, applied to a single domain:
- Profile files as the source of truth, like my knowledge base (see The NicAI workspace ).
- A writing-style file so drafts sound like the candidate (see The NicAI voice stack ).
- A drafter and a reviewer agent, a lighter version of my review loop (see The Council ).
- A tracker that recalibrates the scoring from real outcomes. That's the flywheel most AI setups promise and few build.
It's a good template for anyone who wants to see what a well-built, single-purpose Claude Code framework looks like.
Further Reading
