Every stage of a job search is a slash command you run inside Claude Code: set up your profile, find jobs, rank them, write the application, prep for the interview, then log what happened. Your profile, CVs and tracker are all files in the folder, so each run builds on the last.
The author lays the loop out as /setup โ /scrape โ /rank โ /apply โ /interview โ /outcome, then back into /setup so fit scoring learns from what actually got you interviews.
/apply scores the posting against your profile first and asks whether to go ahead, so you don't spend an hour on a role you'd never get.| Command | What you give it | What you get |
|---|---|---|
/setup | Your documents, a pasted CV, or answers to an interview | Your full candidate profile, written into the repo's profile files |
/scrape | Nothing, or a focus like "remote product roles" | New jobs from the enabled job boards, rated High, Medium or Low fit |
/rank | Optional --top 5 or --limit 10 | A scored shortlist from everything /scrape found (quick triage, not a full evaluation) |
/apply | A job URL, or the full posting text pasted in | Fit evaluation, then a tailored CV and cover letter as PDFs, plus a row in your tracker |
/interview | A company you've applied to | Likely questions, your STAR examples mapped to them, tough questions and questions to ask, with an optional mock interview |
/outcome | A company, or followup or stale | Updates the status. followup drafts a short follow-up email but never sends it |
/upskill | Nothing, or one posting URL | Your skill gaps across the jobs you're targeting, with a study plan |
/add-portal | A job board's URL | A new search tool for that board (public boards only, no login walls) |
There's also /gmail-sync (reads replies and proposes status changes for you to approve), /html-report (an offline dashboard), /notion-sync (pushes your pipeline to a Notion database), /expand (finds skills your profile is missing) and /add-template (use your own CV design).
curl -fsSL https://claude.ai/install.sh | bash. On Windows PowerShell, run irm https://claude.ai/install.ps1 | iex. Then type claude and log in with your paid plan. Full instructions are in the Claude Code setup docs.python3 --version to check, or install it from python.org.curl -fsSL https://bun.sh/install | bash, or see bun.sh for Windows.pip install pypdf for the text check that makes sure applicant tracking systems can read your PDF. If it's missing, the repo falls back to Poppler.If you went with TinyTeX or BasicTeX, add the packages the templates need:
tlmgr install \
moderncv fontawesome5 fontawesome6 academicons import luatexbase pgf \
titlesec textpos xltxtra xunicode cite realscripts needspace
documents/ subfolders: cv/, linkedin/ (on LinkedIn, go to your profile, then More, then Save to PDF), diplomas/, references/, projects/ and applications/ for past applications. Convert Word files to PDF first, because it can't read .docx. Your documents stay out of git.claude from inside the repo folder. The commands only load when you start Claude Code there. Run /setup and pick Path A, the documents folder. It cross-checks your files, shows every change it wants to make and asks before writing. It's safe to re-run whenever you add material./scrape searches LinkedIn and freehire.me. The four Danish job boards ship switched off, and /setup only turns them on if you're job hunting in Denmark. Tell /setup your city and target roles, or update them later with /setup --section search./scrape. If it finds more than a handful of jobs, run /rank for a shortlist, then /apply on the best one.Step 1, copying the repo to your computer:
git clone https://github.com/MadsLorentzen/ai-job-search.git
cd ai-job-search
Step 2 on Mac or Linux:
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
(cd .agents/skills/$tool/cli && bun install)
done
Step 2 on Windows PowerShell:
$tools = @("jobbank-search", "jobdanmark-search", "jobindex-search", "jobnet-search", "linkedin-search", "freehire-search")
foreach ($tool in $tools) {
Push-Location ".agents/skills/$tool/cli"
bun install
Pop-Location
}
I want to set up the open-source job search framework at https://github.com/MadsLorentzen/ai-job-search for my own job search. Clone it into this folder, then read its README.md and SETUP.md in full before doing anything else.
Check which prerequisites I already have: Python 3.10 or newer, Bun, and a LaTeX distribution with both lualatex and xelatex. For anything missing, tell me the exact install step for my operating system and wait for me to confirm it's done. Don't run installers that need my password yourself.
Then run the job board tool install loop from the README. I'm keeping this repo private on my own computer, so don't fork it or push it anywhere. When everything is ready, tell me the exact command to open Claude Code inside the repo folder so I can run /setup.
/apply with the full posting text pasted in, or save it as documents/postings/Company - Job Title.txt and tell Claude it's there./apply or /interview, say so and it adds it to your profile. Anything that isn't in your profile gets stripped from later drafts as unsupported./outcome with the company name so the tracker moves from drafted to applied. It also needs a tracked application before /interview can prep you. Once about 3 applications have a result, re-run /setup and it adjusts your fit scoring based on what actually got interviews.Before your first /apply, check the rules the author wrote for his own search. For example, the repo's CLAUDE.md tells it to name "Claude Code" whenever a CV mentions AI tooling. Paste this into Claude Code inside the repo:
Before I run /apply for the first time, read CLAUDE.md and every file in .claude/skills/job-application-assistant/. List every rule that looks specific to the original author's own job search rather than mine, such as tools it always mentions by name, language assumptions, the Danish job market, or formatting preferences.
For each one, quote the exact line, name the file it's in, and explain in one sentence how it would change my CV or cover letter. Then ask me which ones to keep, change or remove, and only edit the files after I answer. Don't touch anything in my profile section while you do this.
If you're not in Denmark, use this to point the search at your own market:
Set up job searching for my market. I'm looking for [target roles, for example "marketing manager or growth lead"] in [city and country, for example "Sydney, Australia"], and I'm open to [remote / hybrid / on-site].
Check that the Danish job boards are disabled and that LinkedIn and freehire.me are enabled. Update the search queries file so /scrape searches my roles with my location, and show me the changes before saving them. Then run one LinkedIn search as a test and show me the first results. Keep the search volume low, because LinkedIn only allows personal use.
Finally, tell me whether [name of a local job board, for example "Seek"] is a good candidate for /add-portal. Say whether it's public without a login and whether its robots.txt allows access, but don't build it until I say so.
python3 tools/check_upstream_updates.py to preview what an update changes./rank work without it, but /apply has to compile PDFs to finish. The lighter route is /add-template, which lets you register your own CV template in another toolchain that compiles from the command line, like Typst. It test-compiles the template before using it.
ai-job-search on GitHub (README, stars, license)
SETUP.md, the full install walkthrough
SECURITY.md, what it does and doesn't protect against
CHANGELOG.md, release history
Community forks and adaptations
Claude Code setup docs (plan requirements)