The 15k-star ai-job-search repo is a drafter-reviewer pattern worth stealing

Mads Lorentzen's ai-job-search turns Claude Code into a local-first job application assistant. The insight is not auto-apply spam. It is two agents with separated context windows.

SaifullahSaifullah
4 min read
The 15k-star ai-job-search repo is a drafter-reviewer pattern worth stealing

Someone open-sourced their job hunt, and GitHub noticed.

ai-job-search by Mads Lorentzen crossed 15,000 stars in July 2026, with more than 5,000 arriving in a single day. The headline says "auto-apply." The implementation is closer to auto-prepare: evaluate fit, tailor LaTeX CVs, draft cover letters, compile PDFs, and prep interviews, all running locally inside Claude Code .

I build agent workflows for clients. The star count is noise. The drafter-reviewer split is the lesson.

What you actually get

ai-job-search is not a SaaS dashboard. It is a fork-and-own repo:

CommandWhat it does
/setupBuilds your profile from documents or interview questions
/scrapeSearches configured job portals, dedupes, sorts by fit
/rankBatch-scores scraped jobs on five fit dimensions
/apply <url>Full application workflow for one posting
/interviewPrep talking points from role requirements
/add-portalExtend scraping to a new job board

The core workflow is language- and country-agnostic. Default portal skills target Denmark (Jobindex, Jobnet, Akademikernes Jobbank). The pattern is designed to swap for your local boards.

Everything lives on your machine. No telemetry. No vendor lock-in beyond the CLI you already pay for.

Why the drafter-reviewer pattern works

The /apply command does not one-shot a cover letter. It runs separated roles:

  1. Parse the posting (URL or pasted text)
  2. Evaluate fit against your profile (skills, experience, culture)
  3. Draft targeted CV (cv/main_<company>.tex) and cover letter in LaTeX
  4. Spawn a reviewer agent with fresh context that researches the company and critiques the draft
  5. Revise from reviewer notes
  6. Compile PDFs and present final output

The critic with a clean context window catches what the author is blind to: missed keywords, generic phrasing, claims that do not match the posting.

That is the same pattern I recommend for client document pipelines, code review bots, and compliance checks. One agent optimizes for completion. Another optimizes for finding holes. Sharing one bloated context window between them defeats the purpose.

Flowchart of ai-job-search drafter-reviewer workflow from job URL to revised CV and cover letter PDFs

What it is not (and why that matters)

Mass auto-apply bots have existed for years. They spray applications and hope for ATS keyword matches. Recruiters notice. Standing erodes.

career-ops , another local-first job search project, states the same philosophy explicitly: prepare everything up to the click, then you send it.

ai-job-search follows that line. MIT license. Plain-text skills you can read and edit under .claude/skills/ and .agents/skills/. LaTeX templates you own.

If you are building hiring tech or internal mobility tools, copy the workflow shape, not the spam optics.

Getting started without the hype

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

Requirements:

  • Claude Code CLI (or compatible agent per AGENTS.md)
  • Anthropic API key or Claude Pro subscription
  • Python 3.10+ for some portal skills
  • LaTeX toolchain for PDF compilation

Run /setup, point /scrape at your configured portals or paste a posting into /apply, and inspect the fit score before you spend tokens on a full draft.

Skills and portals as plug-in surfaces

The repo treats job boards as skills, not hardcoded integrations. /add-portal scaffolds a new portal skill. Community discussions document forks for other regions.

That mirrors how I structure client agent repos: core orchestration in slash commands, domain adapters in skills folders, profile data in versioned files the human owns.

Honest limitations

I have not run this repo for my own hiring (I am on the builder side of the table). From reading the source and coverage:

  • Portal scraping breaks when sites block automated access (paste-the-JD fallback exists)
  • LaTeX CV quality depends on your templates and profile depth
  • Reviewer quality is still model-dependent; two-agent is better than one, not perfect
  • Danish-default portals need work for other markets unless you add skills

Treat it as a reference implementation for local-first career agents, not a magic offer machine.

Pattern you can port to non-hiring work

Strip the job domain and the skeleton still ships:

Hiring stepGeneric agent step
Evaluate fitScore inbound request against rubric
Draft CV/letterGenerate customer-facing doc from template
Reviewer agentSecond pass for compliance / tone / gaps
PDF compileExport to signed deliverable format
/outcome trackingClose the loop for fine-tuning prompts

I use this shape for proposal drafts, SOW reviews, and support macros. The domain changes. The separated critic does not.

If you want help designing a drafter-reviewer agent for ops or sales docs (not job spam), book a free discovery call.

Share this post

Related posts