StewardAI

Eunice · StewardAI

· 7 min read

ai-job-search: An Indie Hacker Job Search App on Claude Code

After a layoff, a Danish geophysicist built ai-job-search, an indie hacker job search app on Claude Code — now 57k GitHub stars and nearly 700 issues/PRs filed.

GitHub avatar of Mads Lorentzen, Danish geophysicist behind the indie hacker job search app ai-job-search, with Claude Code

A geophysicist in Denmark lost his job in late 2025. Instead of just applying to postings by hand, he spent his search building a Claude Code framework to do it for him — and then open-sourced it. Ten months later, that repo, ai-job-search, is sitting at 57,165 stars and 18.2k forks, gaining 3,856 stars in a single day on GitHub's trending page.

It's a clean example of what this series keeps coming back to: an indie hacker job search app with a real build log, real numbers, and a maintainer willing to publish both the wins and the rough edges — the same overnight-trending pattern we've covered before with ECC, another solo-maintained project built with Claude Code that shot up GitHub's leaderboard.

What this indie hacker job search app actually does

The project's own GitHub description puts it plainly: "The job search that runs on your machine." It's not a SaaS — it's an MIT-licensed set of Claude Code commands you run yourself, against your own job search.

The core loop is three slash commands, per the README:

  • /setup builds a candidate profile from your documents, a pasted CV, or a short interview.
  • /scrape searches job portals, deduplicates listings, and ranks matches by fit.
  • /apply <url or text> evaluates fit against your profile, drafts a tailored LaTeX CV and cover letter, then hands them to a second step for review before compiling the PDFs.

That review step isn't cosmetic. The README describes an explicit two-agent pattern: "The drafter writes; a second Claude agent, spawned with a fresh context, researches the company and critiques the drafts." A fresh-context critic checking a drafter's work, rather than one agent grading its own homework, is the kind of detail that's easy to assert and hard to actually build — and it's documented in the repo you can read yourself.

Beyond the core loop there's /interview prep, /outcome tracking, Gmail status sync, batch /rank-ing, a skill-gap /upskill command, an HTML dashboard, and Notion sync — a fuller application pipeline than "write me a cover letter."

The numbers behind the story

The maintainer's own account, in the README, is specific rather than vague: "Sixty-nine tailored applications, twenty first interviews, and one signed contract later," he writes, "I started as an AI engineer in June 2026." Those figures are self-reported and not independently audited — there's no third-party tracker confirming 69 applications or 20 interviews — but they're attached to a real name, a real GitHub profile, and a LinkedIn profile linked from the README, not an anonymous testimonial.

That profile describes Mads Lorentzen as a geophysicist with a PhD, based in the Greater Copenhagen Area, with 1.2k followers and nine other, much smaller repos — mostly PhD-era seismic and rock-physics visualization tools with single-digit-to-low-double-digit star counts. ai-job-search is by a wide margin the only project on his profile that has broken out.

From one tagged release to nearly 700 filed issues and PRs in under three months

The CHANGELOG and releases page date v1.0.0 — labeled "First tagged release" — to July 22, 2026. From there the project shipped roughly every one to three weeks: Typst template support and fuller job-description scraping for the freehire-search portal in v1.1.0 (July 30), a language gate and ATS-safe date formatting in v1.3.0 (August 3), draft-tracking and robots.txt-gated retries in v1.4.0 (August 7), closed-posting detection in v1.7.0 (August 29), and PDF layout verification in v1.7.2 (September 29). The latest tagged release, v1.7.3 on October 19, 2026 — the day before this post — added a cross-platform installer script for every portal CLI and retry logic for postings that fail to fetch.

The commit history shows the most recent commit landing October 19 as well, with Mads Lorentzen on nearly every commit alongside an AI-assisted co-author credit and occasional named outside contributors. The issues page shows only 4 open issues against 22 open pull requests — but GitHub numbers issues and PRs from one shared sequence, and the newest items sit around #669–#686, meaning close to 700 issues and PRs have been filed against this repo since July. That's a lot of inbound traffic for one geophysicist-turned-maintainer to triage — not unlike the triage load we saw on i-have-adhd after it hit GitHub's daily leaderboard.

The part that's actually a smart idea, not just a popular repo

What separates ai-job-search from a generic "AI does my job hunt" pitch is a governance choice spelled out in CONTRIBUTING.md: the project refuses to merge country- or market-specific job portal integrations into the main repo at all. The maintainer's reasoning, in his own words: "One country's portal opens the door to every country's portal; there is no principled stopping point," so the in-tree portal skills stay either country-agnostic (a generic LinkedIn search) or his own Danish demonstration instances.

Instead, anyone who wants a portal for their own country's job boards uses a bundled /add-portal command to scaffold one in their own fork, matching a shipped contract so /scrape picks it up automatically — and then announces that fork in a pinned "Community forks" discussion rather than filing a PR upstream. It's a deliberate trade: slower feature growth in the canonical repo, in exchange for a template that doesn't fragment under 190-plus countries' worth of scraper-maintenance burden landing on one maintainer.

The same document sets an unusually strict bar for bug-fix PRs: a test that fails on master and passes on the fix is "necessary but not sufficient" — the failing input also has to be one the workflow actually produces, not one the test hand-builds. Reproduction required, not just a passing test.

What it costs, and what it doesn't protect you from

ai-job-search itself is free and MIT-licensed, with an optional Ko-fi donation link — there's no paid tier. But it isn't free to run: the README states directly that "Claude Code has no free tier: you need a Claude Pro/Max/Team subscription or Anthropic API credits." The tool is the framework; the AI usage underneath it is a recurring cost you bring yourself.

The README is also candid about a real limitation: job postings are treated as untrusted input, but its defenses against a malicious or malformed posting are "instruction-level," not a sandbox — and it tells users on an unfamiliar job board to skim what was fetched and written before you hit send. That's an honest admission that an agent reading the open web and then drafting documents on your behalf is not a fully contained process.

There's also a direct anti-scam disclaimer worth repeating verbatim, because projects at this star count attract impersonators: "This is an independent open-source project and is not affiliated with, endorsed by, sponsored by, or maintained by Anthropic," with no affiliated cryptocurrency or token, and Ko-fi plus GitHub as the only legitimate support channels.

What doesn't fit the highlight reel

The open issues are a useful reality check against the trending-page star count. Recent reports include job_key dropping Danish Æ/Ø/Å characters so Danish names collapse into colliding keys, workflow specs that hardcode python3 and can fail silently on a standard Windows install, and search-query strings that don't actually work against the portal CLIs they're meant to feed. None of these are fatal, but they're the kind of rough edges you'd expect from a project that went from zero to 57,000 stars faster than one person can comprehensively test every path.

And the maintainer's own outcome — 69 applications, 20 interviews, one contract, self-reported — is useful context for the tool's premise, but it's a sample size of one and not something every user should expect to replicate.

What this generalizes to

ai-job-search isn't a story about a side project turning into a company — there's no revenue, no pricing page, just an MIT license and a Ko-fi link, closer to how openGym stays deliberately free than to a funded SaaS. What it demonstrates instead is a specific, legible pattern for scaling a solo-maintained AI-agent project past the point where one person can personally review every contribution: write down, in a committed file, exactly which categories of contribution you will never merge — and build an escape hatch (here, /add-portal plus forks) so that refusal doesn't just block people, it redirects them somewhere that still works. Combined with a drafter/critic two-agent pattern instead of a single agent self-grading its own output, it's a build log worth reading even if you never touch a job board with it.

Sources

Every link below was fetched and checked before publishing.

  1. 1.GitHub — MadsLorentzen/ai-job-search (repo: stars, forks, About description, topics, license) · checked
  2. 2.GitHub — ai-job-search README (raw): tagline, cost/no-free-tier line, Anthropic disclaimer, drafter/reviewer agent line, self-reported outcome · checked
  3. 3.GitHub — MadsLorentzen profile (bio, location, followers, pinned repos) · checked
  4. 4.GitHub — ai-job-search LICENSE (raw): MIT, copyright line · checked
  5. 5.GitHub — ai-job-search CHANGELOG.md (raw): version history and dates · checked
  6. 6.GitHub — ai-job-search releases, page 1 (v1.7.3 through v1.1.0, with dates) · checked
  7. 7.GitHub — ai-job-search releases, page 2 (v1.0.0, 'First tagged release', 22 Jul) · checked
  8. 8.GitHub — ai-job-search commit history (master branch): authorship pattern, latest commit · checked
  9. 9.GitHub — ai-job-search issues (open count, highest issue number, recent bug reports) · checked
  10. 10.GitHub — ai-job-search CONTRIBUTING.md (raw): fork-and-adapt policy, what gets declined, review process · checked
  11. 11.GitHub Trending — daily (ai-job-search's rank, total stars, stars gained today) · checked

한국어 버전 읽기 →