📦MadsLorentzen / ai-job-search
← 返回首页
The job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
⚖️ MIT#ai#ai-agents#career#claude-code#cover-letter📅 创建于 2026-03-18🔄 更新于 2026-10-27
🔗 GitHub Python

📄 仓库 README

在 GitHub 查看 ↗
来自 GitHub 仓库自述文件 · 版权归原作者所有

AI Job Search. Pip the courier bird carries an application along a flight path to its destination. The job search that runs on your machine.

CI   Built on Claude Code   MIT license

MadsLorentzen%2Fai-job-search | Trendshift

An AI-powered job application framework built on Claude Code.
Fork it, fill in your profile, and let Claude evaluate job postings, tailor your CV,
write cover letters, and prepare you for interviews.

Quick start     Commands     How /apply works     Customization     Setup guide

[!NOTE] This is an independent open-source project and is not affiliated with, endorsed by, sponsored by, or maintained by Anthropic. Anthropic and Claude Code are referenced only to describe the toolchain this workflow uses.

This project has no affiliated cryptocurrency, token, or paid sponsorship program. Anything claiming otherwise is unauthorized and should be treated as a scam. The only ways to support the project are the Ko-fi link below and contributing on GitHub.

Does it actually work?

I'm a geophysicist by training. When my position was cut in late 2025, I built this framework to run my own job search - the same /scrape, /apply, and /interview workflow in this repo, used weekly, on my own career. I was upfront about it with every employer I spoke to, and instead of counting against me, it usually sparked a genuine technical conversation.

69 envelopes for 69 tailored applications. 20 of them light up as first interviews, and one is sealed as the signed contract.

Sixty-nine tailored applications, twenty first interviews, and one signed contract later, I started as an AI engineer in June 2026. People kept asking whether this actually works. It got me hired. Now it's yours.

The longer version, including the full application funnel, is on LinkedIn.

Did this save you a Sunday of cover-letter writing? Consider a coffee.
Did it land you the job? Maybe two.
☕

Buy me a coffee at ko-fi.com

What this is

A structured workflow that turns Claude Code into a full-stack job application assistant. Six commands carry you from an empty profile to a tracked result:

The workflow in order: /setup builds your profile, /scrape finds new postings, /rank shortlists the fits, /apply tailors a CV and cover letter, /interview preps every round, /outcome tracks each result.

The core workflow (self-profiling, fit evaluation, and the drafter-reviewer application pipeline) is language- and country-agnostic. The job portal search skills are built for the Danish market (Jobindex, Jobnet, Akademikernes Jobbank, etc.), but the pattern is designed to be swapped for your local job boards.

The framework encodes career guidance best practices, including structured evaluation criteria, forward-looking cover letter framing, and optional salary benchmarking.

Quick start

🎥 Prefer to see it in action first? The Next New Thing did a hands-on walkthrough of how the workflow is actually used, from setup to a finished application (recorded August 2026 - commands may have evolved since).

What you need

Claude Code The CLI. No free tier: a Claude Pro/Max/Team subscription or Anthropic API credits (pay-per-token, usually cheaper for occasional use).
Python 3.10+ For the tools in tools/.
Bun Runs the job search CLI tools.
LaTeX A distribution with lualatex and xelatex: TeX Live, MacTeX, TinyTeX, or MiKTeX.
pypdf (optional) pip install pypdf for /apply's ATS parseability check.
Fine print: other agents, LaTeX engines, PDF text extraction - **Using a different agent tool** (Codex, Antigravity, Gemini CLI)? Start at [`AGENTS.md`](https://github.com/MadsLorentzen/ai-job-search/blob/HEAD/AGENTS.md) - the portal search skills work there out of the box, and [community forks](https://github.com/ai-job-search-dev/ai-job-search/discussions/78) adapt the full workflow. - **LaTeX engines.** The CV compiles with `lualatex` (pdflatex often fails on modern MiKTeX installs with `fontawesome5` font-expansion errors); the cover letter compiles with `xelatex` because `cover.cls` requires `fontspec`. If using a minimal TeX install such as TinyTeX or BasicTeX, install the extra packages listed in [SETUP.md](https://github.com/MadsLorentzen/ai-job-search/blob/HEAD/SETUP.md#minimal-tex-install-tinytexbasictex). - **PDF text extraction.** `pypdf` is BSD-licensed and needs no Poppler. Poppler `pdftotext` remains a fallback (macOS: `brew install poppler`, Debian/Ubuntu: `apt install poppler-utils`, Windows: `choco install poppler`). If both are missing, the check degrades to a visual keyword review.

1. Fork and clone

gh repo fork ai-job-search-dev/ai-job-search --clone
cd ai-job-search

[!IMPORTANT] A fork of this repo is always public — GitHub does not allow private forks of public repositories — and /setup (step 3 below) writes your personal data (name, contact details, employment history, salary expectations) into tracked files. If this copy is for your own job search rather than for contributing changes back, use a private repository with this repo as upstream instead — the two-minute recipe is in SETUP.md section 8, and every update workflow works identically. Fork only to contribute.

2. Install job search tools

python3 tools/install_portal_clis.py   # Windows: python tools\install_portal_clis.py
What the installer does It runs `bun install` in every portal CLI under `.agents/skills/*/cli/` - discovered, not listed, so a portal you add with `/add-portal` or copy from another fork is included on a fresh clone. Every install runs with `--ignore-scripts`, and a CLI whose `package.json` declares an install-time lifecycle script, `trustedDependencies` or `workspaces`, or that has a `bunfig.toml` or `.npmrc` beside it, is skipped and reported rather than run. `--dry-run` shows what it would install. For `linkedin-search` and `freehire-search` the install is optional: both have zero runtime dependencies and run with plain `bun`; `bun install` only pulls TypeScript dev types.

3. Set up your profile

claude
# Then inside Claude Code:
/setup

/setup offers three paths: read your documents/ folder if you have one populated (CV PDF, LinkedIn export, diplomas, reference letters, past applications), import a single CV pasted in chat, or walk through an interview. It auto-detects what you have and asks. Documents-folder mode is idempotent and safe to re-run as you add more material; see documents/README.md for the layout.

4. Search for jobs

/scrape

This searches multiple job portals for positions matching your profile, deduplicates results, and presents them sorted by fit. Pick a match to run /apply on it directly — or, when a scrape returns more jobs than you want to eyeball, run /rank to batch-score them all against the fit framework and get a ranked shortlist first.

5. Apply to a job

/apply https://jobindex.dk/job/1234567

If the URL can't be fetched (some job portals block automated access), you can paste the job description directly instead:

/apply <paste the full job description here>

This runs the full workflow: evaluate fit, draft CV + cover letter, review with a second agent, revise, and present the final output. The posting passes a deterministic integrity gate first (hidden text, invisible characters, instruction-shaped lines, hidden links), and its one-line verdict opens the evaluation; the agents that fetch and review read-only.

[!WARNING] Postings are treated as untrusted input (the workflow follows no instructions embedded in them and fetches no links from their body), but agentic defenses are instruction-level, not a sandbox - on an unfamiliar job board, skim what was fetched and written before you hit send. Details in SECURITY.md.

Commands

/setup, /scrape, and /apply form the core workflow. Ten more commands extend it once your profile is in place.

Command What it does
/setup Builds your profile from your documents, a pasted CV, or an interview
/scrape Searches job portals for postings that match your profile
/apply Evaluates fit, then drafts, reviews, and compiles a tailored CV and cover letter
/rank Batch-scores a scrape into a ranked shortlist
/interview Builds a stage-specific prep pack and runs a mock inte

📈 近 7 天 Star 趋势

每日新增 Star(柱)与累计 Star(线)· 数据来自 GitHub

🏆 排名变化趋势

在各榜单中的排名历史(数字越小越靠前)

📋 历史上榜记录

每次快照的详细数据
日期 榜单 排名 周期新增 总 STAR