MadsLorentzen/ai-job-search hit #1 on GitHub trending on July 7, 2026 — and it hasn't slowed down. With 19.5K stars and 5.6K forks in a matter of weeks, it's the single fastest-growing Claude Code workflow repo this year. The premise is simple: fork it, run /setup, and let Claude evaluate job postings, tailor your CV, draft cover letters, and prep you for interviews.
But the interesting part isn't the automation. It's the architecture underneath — a drafter-reviewer agent pattern that treats job applications as adversarial documents, not form-fill exercises. That design choice is what separates ai-job-search from the spray-and-pray bots that are already poisoning hiring pipelines.
What It Actually Does
Mads Lorentzen — a PhD geophysicist who lost his job and built this framework over three months — designed the system around four slash commands:
/setup builds your profile. Claude interviews you about your background, skills, and career goals, then assembles a structured profile from your CV, LinkedIn exports, diplomas, and reference letters. This isn't a quick form — expect to spend 30+ minutes here if you want outputs that actually differentiate you. The system also supports an /expand command that crawls your GitHub repos, portfolio sites, and Google Scholar to surface competencies you might not think to mention.
/scrape searches job portals, deduplicates results, and ranks every posting against your profile across five dimensions: skills match, experience relevance, cultural alignment, location fit, and career trajectory logic. The portal search skills ship with Danish job boards (Jobindex, Jobnet, Akademikernes Jobbank), but the architecture is designed for swapping — there's a /add-portal command that generates search skills for any local job board. A linkedin-search skill uses LinkedIn's unauthenticated public endpoints for country-agnostic coverage.
/apply is where the drafter-reviewer architecture kicks in. One Claude agent drafts a tailored CV and cover letter. A second agent — spawned with a fresh context so it has no loyalty to the first draft — researches the company independently and critiques the output for missed keywords, weak framing, inflated claims, and generic language. The first agent revises. Then the system compiles PDFs via LaTeX (lualatex for CVs, xelatex for cover letters), extracts the text layer with pdftotext, and runs an ATS verification pass that checks reading order, contact details, and keyword coverage.
/interview builds stage-specific prep packs from archived application materials, researches the company and interviewers, maps STAR examples to likely questions, and runs mock interviews. It bridges knowledge gaps without fabricating experience.
The honesty constraint is structural, not aspirational. ai-job-search never fabricates skills. The ATS keyword check adds keywords your profile genuinely supports and surfaces gaps as gaps — visible to you, flagged for the reviewer agent. If the system can't honestly bridge a gap, it says so. That's the difference between "AI that helps you apply" and "AI that lies for you."
The Architecture That Matters
Most AI job application tools follow a predictable pattern: ingest a job posting, generate a cover letter, maybe swap some resume bullet points. ai-job-search's drafter-reviewer separation is a fundamentally different design — and it's the real reason this repo exploded.
Here's why the pattern works. A single LLM pass on a cover letter tends to produce competent-sounding but generic output. It hits the right keywords, uses professional language, and sounds like every other AI-generated letter in the stack. The hiring manager who reads 50 of these a day can spot them instantly.
The reviewer agent breaks this pattern. Because it's spawned with a fresh context, it approaches the draft like a hostile reader — exactly what the hiring manager will be. It checks whether the letter actually addresses the company's specific challenges (not just the job title), whether the CV emphasizes the right projects for this role (not just the most impressive ones), and whether any claims stretch beyond what the profile supports.
This is the same pattern that experienced career coaches use: write a draft, then have someone else read it as if they're the hiring manager looking for reasons to say no. ai-job-search automates the second opinion.
The pattern generalizes. Any high-stakes agent workflow — contract drafting, grant proposals, client presentations — benefits from adversarial review by a second agent with fresh context. If you're building agent systems, study this repo's
.agents/skills/directory and.claude/commands/structure for the implementation pattern.
The Operator's Guide: Fork to First Application
If you want to run this yourself, here's the actual path:
Prerequisites: Claude Code CLI, Python 3.10+, Bun (for the job search CLI tools), and a LaTeX distribution with lualatex and xelatex. On macOS, brew install --cask mactex handles the LaTeX dependency. Optional but recommended: pdftotext (from poppler) for ATS text extraction.
Step 1: Fork and clone. Don't just clone — fork first. The framework is designed around your personal profile data living in the repo. Your CLAUDE.md becomes your career profile.
Step 2: Run /setup. This is the make-or-break step. Give it your CV PDF, LinkedIn export, and any other career documents. The more you invest here, the better the downstream outputs. Lorentzen himself reports that the structured self-reflection in /setup — not the automated applications — delivered the most value.
Step 3: Add your local job boards. If you're not in Denmark, run /add-portal with your preferred job sites. The system investigates URL patterns, result structures, and access rules, then scaffolds CLI skills and test-runs queries. LinkedIn search works out of the box.
Step 4: /scrape and review. Don't apply to everything that scores well. The fit evaluation is a starting point for your judgment, not a replacement for it. Use /rank for batch-scoring when you have a large result set.
Step 5: /apply with oversight. Read every cover letter before sending. Check that the CV emphasis matches the role. The reviewer agent catches a lot, but you know your career story better than any model.
What ai-job-search does NOT do: It does not auto-submit applications. It does not log into job portals on your behalf. It does not fabricate credentials. Every application passes through a human review checkpoint before anything leaves your machine. If someone forks this and removes those guardrails, they're building a different (and worse) tool.
What the Community Is Saying
The reception has been overwhelmingly positive — but the most interesting commentary isn't about the tool itself. It's about what the tool represents in the 2026 job market.
On X, Lian Lim highlighted the three-command simplicity: "/setup, /scrape, /apply — three commands run the entire pipeline." The fork-to-star ratio — over 5,600 forks against 19,500 stars — signals that people aren't just bookmarking this. They're using it.
On Threads, Swadesh Srivastava noted that "a fork-to-star ratio that high means people are using it, not only bookmarking" and emphasized that Lorentzen "is not a startup founder. He built this because he needed it for himself, then shared it."
But the counterpoint is sharp. The HN thread on AIHawk (a mass-application bot) drew 64 comments, and the dominant concern was systemic: "tools like this are clogging job inboxes with hundreds of submissions per day." One hiring manager reported receiving 800 applications within 24 hours for a single role — 30% of which were ghost applications from non-responsive candidates. Another noted that "50% LLM generated cover letters" in recent batches led to instant rejections.
The tragedy-of-the-commons dynamic is real: individual automation seems rational, but collective adoption makes everyone's prospects worse, and opting out unilaterally guarantees disadvantage.
ai-job-search's design directly addresses this. By forcing structured self-reflection (/setup), adversarial review (the drafter-reviewer split), and human oversight (no auto-submit), it trades volume for signal quality. As Aakash Gupta argues in his Job Search OS analysis: "Mass-applying with AI doesn't work. The people getting hired apply to fewer roles with surgical targeting."
The Ecosystem: ai-job-search Isn't Alone
ai-job-search is the standout, but the "automate yourself getting hired" wave is broader than one repo:
- career-ops takes a similar approach but supports multiple AI CLIs (Claude Code, Gemini, Codex, OpenCode). It scores listings A-F and tracks applications across portals.
- ApplyPilot took the spray-and-pray route and got 500 stars and "500K views on Reddit" in a week — but the sole HN comment asked the question that matters: "how many interviews would you get applying to 1000 jobs?"
The distinction that matters: tools built around volume versus tools built around fit. ai-job-search is firmly in the fit camp, and the market signal suggests that's where practitioners are moving.
Where a Human Still Has to Gate It
ai-job-search is good. It's not a replacement for career judgment. Here's where the human remains load-bearing:
Profile accuracy. /setup builds from what you give it. If your documents understate your experience or omit key projects, the system has no way to compensate. Garbage in, polished garbage out.
Cultural fit assessment. The five-dimension scoring includes "cultural alignment," but no model can reliably assess company culture from a job posting. Use it as a prompt for your own research, not a verdict.
Salary negotiation. The system includes salary benchmarking from Danish engineering union data, but actual negotiation requires reading the room — something agents can't do.
Networking. Lorentzen himself notes that his "speculative outreach" — contacting companies without posted positions — generated some of his best conversations. That's a human play. The agent handles the transactional pipeline; the relationship-building stays with you.
The final send. Never auto-submit. Read the cover letter as if you're the hiring manager. If it sounds like AI wrote it, it probably still does — and that's your cue to edit.
Lorentzen's own results are instructive. After approximately 30 targeted applications across energy, defense, AI consulting, and data science, he reported multiple interview invitations including second-round interviews, one voluntary withdrawal after a clear misalignment — and, candidly, "no job offer yet" at the time of writing. The tool works. It doesn't perform miracles.
What This Says About the 2026 Job Market
The fact that a job application agent hit #1 on GitHub trending — above every AI model, every framework, every developer tool — tells you something about where the pain is. Developers aren't building this because it's technically interesting (the Claude Code plumbing is straightforward). They're building it because applying for jobs in 2026 is genuinely broken.
ai-job-search is one answer: don't fight the noise, but don't add to it either. Use the agent to do the tedious parts (scraping, formatting, ATS optimization) while keeping the human in the loop for the parts that actually matter (fit evaluation, story-telling, relationship-building).
The drafter-reviewer pattern is the architectural insight worth carrying forward. Not just for job applications, but for any agent workflow where the output has to survive adversarial scrutiny. Every agent that writes something a human will judge should have a second agent reading it first.
Getting Started
Fork MadsLorentzen/ai-job-search. Install the prerequisites (Claude Code, Python 3.10+, Bun, LaTeX). Run /setup. Invest the time.
Then /scrape. Then /apply — one posting at a time, reviewing every output. The tool is a force multiplier, not an autopilot.
And if you're building agent systems outside of job search: study the .agents/skills/ directory. The drafter-reviewer separation, the ATS verification gate, the honest-keyword constraint — these patterns generalize. The next wave of useful agents won't be the ones that do everything automatically. They'll be the ones that know when to ask for a second opinion.
Top comments (0)