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.
Install / Use
npx skills add ai-job-search-dev/ai-job-searchInstalls into whichever agent you are using.
CLAUDE.md
Claude Code project instructions
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of ai-job-search
ai-job-search scores 100/100 on our quality scale, 2nd of 4,592 Development & Engineering skills we index (top 1%).
Its CLAUDE.md is 33 KB long, well organised into 30 sections with 12 code examples: a thorough specification that gives an agent plenty to work with.
With 62,861 GitHub stars, it is one of the more widely adopted skills in the catalogue.
Maintenance, license and trust
- The repository was last updated today, so ai-job-search is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
ai-job-search compared with similar skills
ai-job-search has the highest quality score among these 4 similar skills.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| ai-job-search (this skill)by ai-job-search-dev | 100 | 62.9k | today | CLAUDE.md |
| claude-memby thedotmack | 100 | 102.1k | 1d ago | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 100.6k | 1d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 100.5k | 1d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 87.5k | today | CLAUDE.md |
Frequently asked questions
- How do I install ai-job-search?
- Run
npx skills add ai-job-search-dev/ai-job-search. The install tabs above show the steps for each supported agent. - Which AI agents does ai-job-search work with?
- It is written for Claude Code, as a CLAUDE.md file. Other agents that read the same format can often use it too.
- Is ai-job-search safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is ai-job-search still maintained?
- The repository was last updated today, so ai-job-search is actively maintained.
Skill content
View source on GitHubAI Job Search
The job search that runs on your machine.
<p align="center"> <a href="https://trendshift.io/repositories/43622?utm_source=trendshift-badge&utm_medium=badge&utm_campaign=badge-trendshift-43622" target="_blank" rel="noopener noreferrer"><img src="https://trendshift.io/api/badge/trendshift/repositories/43622/daily" alt="MadsLorentzen%2Fai-job-search | Trendshift" width="250" height="55"/></a> </p>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.
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.
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.
<p align="center"> <i>Did this save you a Sunday of cover-letter writing? Consider a coffee.<br> Did it land you the job? Maybe two.</i> ☕ </p> <p align="center"> <a href="https://ko-fi.com/madslorentzen"> <img src="https://storage.ko-fi.com/cdn/kofi3.png?v=6" alt="Buy me a coffee at ko-fi.com" height="40"> </a> </p>What this is
A structured workflow that turns Claude Code into a full-stack job application assistant. 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.
/setup /scrape /apply <url>
| | |
v v v
Fill in Search job Evaluate fit
your profile portals Score & recommend
| | |
v v v
Profile Present matches Draft CV + Cover Letter
files ready with fit ratings (LaTeX, tailored)
| |
v v
Pick a match Reviewer agent critiques
-> /apply -> Revise -> Final output
The framework encodes career guidance best practices, including structured evaluation criteria, forward-looking cover letter framing, and optional salary benchmarking.
Prerequisites
- Claude Code (CLI). Claude Code has no free tier: you need a Claude Pro/Max/Team subscription or Anthropic API credits (pay-per-token, usually cheaper for occasional use). Using a different agent tool (Codex, Antigravity, Gemini CLI)? Start at
AGENTS.md- the portal search skills work there out of the box, and community forks adapt the full workflow. - Python 3.10+
- Bun (for job search CLI tools)
- LaTeX distribution with
lualatexandxelatex: TeX Live, MacTeX, TinyTeX, or MiKTeX. The CV compiles withlualatex(pdflatex often fails on modern MiKTeX installs withfontawesome5font-expansion errors); the cover letter compiles withxelatexbecausecover.clsrequiresfontspec. If using a minimal TeX install such as TinyTeX or BasicTeX, install the extra packages listed in SETUP.md. - Optional:
pip install pypdffor/apply's ATS parseability check (BSD; no Poppler required). Popplerpdftotextremains 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.
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).
1. Fork and clone
gh repo fork MadsLorentzen/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 asupstreaminstead — 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
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. A CLI whose package.json declares an install-time lifecycle script 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.
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.
Other commands
/setup, /scrape, and /apply form the core workflow. Ten more commands extend it once your profile is in place:
/interviewpreps you for a scheduled interview on a tracked application. It builds a stage-specific prep pack from the application's archive (the exact posting, the CV and cover letter the interviewer actually read, feedback recorded from earlier rounds), researches the company and interviewers with a verify-before-use rule, maps likely questions to your STAR examples, and offers a mock interview following the roleplay protocol in07-interview-prep.md. Gaps get honest bridge answers, never invented experience./outcomerecords what happened to an application - interview stages, offers, rejections, silence. It archives the submitted CV, cover letter, and posting text intodocuments/applications/<company>_<role>/, keepsoutcome.mdin the format/setupPath A parses, and updates the tracker. It also owns the stretch before there is an outcome to record:/outcome followupsurfaces open applications that have gone quiet (default 10 days), drafts a short channel-appropriate follow-up in your writing style using only claims from the materials you already submitted (drafts only, never sends; at most twice per application), and offers a thank-you note in the same turn an interview stage is recorded. Once a few applications resolve, it points you back to/setupto calibrate the fit framework from what actually got interviews./notion-syncpublishes a one-way, read-only view of the pipeline into a Notion database via the official Notion MCP server (OAuth, no API keys) - one row per ranked job plus every tracked application, with a write-once briefing page per row. The repo files stay the system of record: nothing syncs back, and documents sync as filenames only. Complements/html-report: that is the deep offline dashboard you regenerate at your desk; this is the glanceable live view from anywhere Notion runs (desktop, web, phone)./gmail-syncreads your Gmail (via the Gmail connector) for status signals on your open applications - interview invites, assessment links, offers, rejections - and proposes them as a batch for you to approve before anything is written to the tracker oroutcome.md, citing the source email on every proposed change. Offers stop short of proposinghired/offer_declinedsince that's your call; conflicting or unmatched signals get flagged for a manual/outcomepass instead of guessed./rankbridges/scrapeand/apply: it batch-scores all newly scraped postings against the fit framework (parallel agents fetch each posting and score the five evaluation dimensions) and returns a ranked shortlist with honest per-job strengths and gaps. Deal-breakers veto, deadlines get urgency flags, dead postings get marked expired. Pick a number and it hands off to the full/applyworkflow./expandenriches your profile by scanning public sources you've already linked in it (GitHub repos, portfolio site, Kaggle, Google Scholar) and looking up syllabi for named courses and certifications. Discovered competencies are added to your profile with a source tag. Useful right after/setupto surface skills that documents alone don't make explicit./upskillanalyzes the gap between your profile, your tracked job postings, and your ranked-but-
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
102.1kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
100.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
100.5kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
Understand-Anything
87.5kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
