AI Job Search: A Claude Code Framework for Tailored CVs, Cover Letters & Interview Prep
Fork it, fill in your profile once, and let Claude handle the repetitive parts of applying.
It scores each posting for fit, drafts a LaTeX CV and cover letter, has a second agent critique them, compiles and checks the PDFs, and preps you for interviews. Every claim is checked against your real profile.
How /apply Works (Drafter-Reviewer Pipeline)
Every application runs through the same eight steps, as described in the README:
Read the job posting from a URL, or from pasted text if the site blocks automated access.
Score skills, experience, culture, location and career alignment against your profile.
Write a tailored CV and cover letter in LaTeX.
Spawn a separate reviewer agent with fresh context that researches the company and critiques the drafts.
Apply the reviewer's feedback.
lualatex for the CV, xelatex for the letter. Iterate until the CV is exactly 2 pages and the letter 1 page.
Extract the PDF text layer and verify contact details, reading order and keyword coverage. Gaps stay visible, never stuffed.
Show the final output with a verification checklist.
Commands: Core Workflow & Extensions
| Command | What It Does |
|---|---|
| /setup | Builds your profile from a documents folder (CV, LinkedIn export, diplomas), a pasted CV, or an interview. |
| /scrape | Searches job portals for matching roles, deduplicates them and sorts by fit. |
| /apply <url> | Runs the full drafter-reviewer pipeline above. |
| /rank | Batch-scores newly scraped postings with parallel agents and returns a ranked shortlist. |
| /interview | Builds a stage-specific prep pack and offers a mock interview. Gaps get honest bridge answers, never invented experience. |
| /outcome | Records interviews, offers and rejections, archives what you sent, and drafts follow-ups (drafts only, never sends). |
| /gmail-sync · /notion-sync | Reads Gmail for status signals (you approve every change); publishes a read-only pipeline view to Notion. |
| /expand · /upskill | Enriches your profile from public sources you linked; maps skill gaps to a learning plan. |
| /html-report | Generates an offline HTML dashboard of your applications. |
| /add-template · /add-portal | Registers your own CV/letter template (LaTeX, Typst…); generates a search skill for a job board in your country. |
Prerequisites
| Requirement | Notes |
|---|---|
| Claude Code | No free tier: needs a Claude Pro, Max or Team plan, or Anthropic API credits. |
| Python 3.10+ | For the helper tools and salary lookup. |
| Bun | Runs the job-portal CLI tools. |
| LaTeX (lualatex + xelatex) | TeX Live, MacTeX, TinyTeX or MiKTeX. The CV compiles with lualatex, the cover letter with xelatex. |
| pypdf (optional) | Enables /apply's ATS parseability check; Poppler's pdftotext is a fallback. |
Install & First Run
python3 tools/install_portal_clis.py
Run this after cloning, then start claude and run /setup, /scrape and /apply <url>. For your own search, use a private repository with this project as upstream (see the warning below).
gh repo fork MadsLorentzen/ai-job-search --clone && cd ai-job-search
python tools\install_portal_clis.py
/apply <paste the full job description here>
/setup --section search
Why the Reviewer Agent Matters
The drafter writes; a second Claude agent with a fresh context researches the company and critiques the drafts before revision. The README says this catches missed keywords, weak framing and generic language that a single pass often leaves in. The reviewer receives drafts inline instead of re-reading files, to save tokens.
Works Outside Denmark Too
The profile, fit scoring and application pipeline are language- and country-agnostic. The shipped portal skills cover Danish job boards plus LinkedIn and freehire.me; /add-portal investigates your local job board and scaffolds a matching search skill, test-running a live query before registering it.
Read This Before You Start
Points the README itself stresses:
- Forks are public: /setup writes your name, contact details, history and salary expectations into tracked files. A fork of a public repo is always public, so use a private repo for your own search.
- It costs money: Claude Code has no free tier, and each application runs several agents plus PDF compile loops.
- Postings are untrusted input: The workflow follows no instructions inside postings, but these defences are instruction-level, not a sandbox. Skim what was fetched before you send anything.
- One success story: 69 applications, 20 interviews and one contract is the author's personal result. Your market and profile will differ.
Everything lives in files in your own repository. Gmail and Notion sync are optional and propose changes for you to approve.
MIT License. Independent project, not affiliated with or endorsed by Anthropic.
The author says the project has no cryptocurrency, token or paid sponsorship program. The only support channels are Ko-fi and GitHub contributions.
Frequently Asked Questions
Do I need a paid Claude plan to use AI Job Search?
Yes. The README notes Claude Code has no free tier, so you need a Claude Pro, Max or Team subscription or Anthropic API credits. It also points users of other agent tools to AGENTS.md and community forks.
Is my personal data safe in this repository?
Your profile is written into tracked files in your copy of the repo. The README warns that a fork of a public repository is always public, so for your own job search it recommends a private repository with this project as upstream instead of a public fork.
Does it work outside Denmark?
The profile, fit evaluation and application pipeline are language- and country-agnostic. The shipped job-portal skills target Danish boards, plus LinkedIn and freehire.me; /add-portal generates a search skill for a job board in your own market.
Will employers mind an AI-assisted application?
The author says he was open about using the tool with every employer and that it usually started a technical conversation rather than counting against him. Whatever tool you use, review every application yourself before you send it.
