An open-source project by Mads Lorentzen (
MadsLorentzen/ai-job-search).
What it does
A job search is a loop of repetitive work — re-tailoring a CV for each posting, writing a fresh cover letter, tracking applications, and prepping for interviews. Doing each step by hand is draining, and optimizing a CV against a posting means starting over every time.
AI Job Search bundles that flow into Claude Code slash commands. It requires Claude Code to run, and it orchestrates a multi-step workflow — from evaluating postings to tailoring CVs, writing cover letters, and interview prep — inside the session. Your data and documents stay on your machine. From the README: “The job search that runs on your machine.”
What you can make
Running the commands produces these outputs, per the README:
- Tailored CV PDF —
/apply <url>reworks your CV against the posting. moderncv (banking style), lualatex-compiled, exactly 2 pages, with relevance-weighted content cutting when it overflows. - Cover letter PDF — a custom
cover.clsclass, xelatex-compiled, one page with a visible signature. A drafter-reviewer flow drafts it, then a separate-context reviewer agent researches the company and critiques the draft before revision. - Fit-ranked job shortlist —
/scrapeand/ranksearch portals, deduplicate, and score by fit against your profile, returning a ranked shortlist with gap analysis. - Interview prep package —
/interviewmaps likely questions to your documented STAR examples, researches company intel, and runs a mock-interview roleplay. - Skill-gap learning plan —
/upskilllays out skill gaps versus tracked postings as a heatmap and produces a learning plan with resources and time estimates.
The flow: /setup to build your profile → /scrape to collect and rank jobs → /apply <url> to generate the CV and cover letter → /interview to prep → /outcome to record results.
Key features
-
Slash-command workflow
Run each stage as a command —
/setup,/scrape,/apply,/rank,/interview,/outcome,/expand,/upskill./expandenriches your profile by scanning GitHub repos, portfolio, and Kaggle. -
PDF and ATS verification
/applycompiles the CV and cover letter, then inspects the PDFs to catch orphaned job titles and spilled pages, and extracts the text layer to confirm contact-detail legibility and ATS keyword coverage. -
Portal scraping
Supports Danish portals (Akademikernes Jobbank, Jobindex, Jobnet) plus LinkedIn (public endpoints) and freehire. Use
/add-portalto generate a skill for your own local job board. -
LaTeX templates
Keeps CVs and cover letters as LaTeX, and
/add-templateregisters custom templates while preserving structure and ATS readability.
Usage
Install — fork and clone the repo, then install the portal CLI tools with Bun.
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
cd .agents/skills/$tool/cli && bun install && cd ../../../..
done
Setup and run — start Claude Code, build your profile with /setup, then use the commands.
claude
/setup
# then /scrape, /apply <url>, /interview, etc.
Notes
- Requirements — Claude Code CLI, Python 3.10+, Bun, and a LaTeX distribution with
lualatexandxelatex(TeX Live, MacTeX, TinyTeX, or MiKTeX). ATS text-layer verification optionally uses poppler’spdftotextand degrades gracefully if it’s absent. - Portal coverage — the scrapers center on Danish job boards plus LinkedIn and freehire. The CV, cover letter, and interview features themselves are region-agnostic.
- Fork and own — it’s not distributed via a plugin marketplace; you fork the repo and edit or extend it yourself.
- MIT License — published as open source.