← All Reviews
SOLID

AI Job Search — Multi-Country, Multi-Agent Job Application Framework

Claim tested

A Claude-Code-native job search framework that genuinely holds its "never fabricates skills" claim under real pressure — including business-logic cases (contract-vs-sponsorship visa mechanics, employer-billing ATS metadata, country-specific labor law) that are harder to fake than a simple skills-gap test. Free to self-host and test; no paid API keys required.

Criteria Scorecard

CriterionScore
max25
docs4
runs5
total23
gotcha4
install5
claim_verified5

Display this badge

RepoVerifier: SOLID
[![RepoVerifier: SOLID](https://repoverifier.dev/badges/solid.svg)](https://repoverifier.dev/reviews/madslorentzen-ai-job-search)
<a href="https://repoverifier.dev/reviews/madslorentzen-ai-job-search"><img src="https://repoverifier.dev/badges/solid.svg" alt="RepoVerifier: SOLID" height="20"></a>

Paste this in your repo’s README. Links back to the full review.

Environment

osmacOS
modelclaude-sonnet-5
tex_distroTinyTeX (user-level, no sudo)
bun_version1.3.13
test_mac_userbalajiloganathan
gh_cli_version2.81.0
python_version3.14.0
claude_code_version2.1.243

Full Review

AI Job Search (MadsLorentzen/ai-job-search)



One-liner: A Claude-Code-native job search framework that genuinely holds its "never fabricates skills" claim under real pressure — including a business-logic case (contract-vs-sponsorship, employer-billing metadata) that's harder to fake than a simple skills-gap test.

docs — PASS, with one real gap


README, SETUP.md, AGENTS.md, and documents/README.md are internally consistent and accurate wherever checked against actual behavior. Gap found: the .docx-not-supported restriction is buried in documents/README.md's file-format table — never mentioned in the main README or SETUP.md prerequisites. A first-time user following the top-level
docs would hit this by surprise. The multi-country/portable-search design is well-documented (linkedin-search -l flag, freehire-search --region/--country/--remote facets, /add-portal for scaffolding new boards) and matched real behavior exactly when tested.

install — PASS


Clean TinyTeX (user-level, no sudo) + tlmgr package list from SETUP.md installed with zero errors. poppler/pdftotext, pypdf, all six portal CLIs' bun install — all matched documented package counts exactly, including the "zero runtime deps" claim for linkedin-search/freehire-search (5 packages each vs. 122 for the Danish portals). No paid dependencies, no Docker, no external API key required. One real friction point: forking is public by default and both docs are explicit that GitHub can't privatize a fork after the fact; the documented fix (SETUP.md §8, new private repo + upstream
remote) worked exactly as written.

runs — PASS


/setup (Path A, resume-only): correctly extracted identity, cross-referenced against global ~/.claude/CLAUDE.md, caught an email mismatch between resume and git identity, and correctly suppressed a privacy warning after checking that git remote origin was private — not just displaying a static warning regardless of context. Self-healed a real bug: freshly-enabled Danish portal CLIs crashed on missing @bunli/runtime deps; it diagnosed, ran bun install itself, and reported precisely which 3 of 4 recovered vs. which remained blocked (Cloudflare on jobbank-search) — no overclaiming. Idempotent re-run of /setup after changing work-eligibility from US/H1B to a 5-country model: explicit diff of exactly which files changed, no silent overwrite, and it proactively flagged that the prior /scrape results were now stale against the new gate — unprompted.

gotcha — real, documented findings


1. .docx resumes are silently unsupported — must pre-convert to PDF; not mentioned outside documents/README.md.
2. No model is pinned anywhere in the repo; quality will vary with whatever model the user has active (this review was run on Claude Sonnet 5 throughout).
3. linkedin-search's own "remote" tag is unreliable — the tool itself flagged this ("the LinkedIn remote filter is leaky... several results tagged remote are verified hybrid") and fell back to manual/per-posting verification rather than trusting the
label.
4. jobdanmark-search has no server-side recency filter; the tool compensates with a client-side 14-day filter, but this is undocumented behavior, not a documented flag.
5. GITHUB_TOKEN env var silently overriding gh's keyring auth is an environment gotcha, not the repo's fault, but tripped up the private-fork step and is worth flagging for anyone in a similar shell setup.

claim_verified — PASS, the headline finding


The README's explicit claim — "never fabricates skills or experience... gaps get honest bridge answers, never invented experience" — held up across three independent real-world tests, each harder than the last:

1. Modus Create (US remote / consultancy): refused to draft entirely. Pulled the actual posting from Greenhouse's own metadata (not the JS-shell LinkedIn view), found Billable: True / Organization: Customer, correctly inferred this as a client-staffing seat rather than internal product work, and flagged the Mexico requisition tag against a US-based H1B holder as a probable blocker — a business-logic inference well beyond simple keyword/skill matching.
2. Kanini (contract role): independently derived that H1B holders can't take 1099/contract work unless specifically run as sponsored W-2 — a fairly non-obvious visa mechanic — and used it to correctly veto an otherwise skills-matched posting. Also caught the posting was ~11 months stale by reading the actual Date opened field from Kanini's Zoho ATS JSON.
3. Multi-country re-test (Canada/Australia/Germany/UAE/Denmark): generalized "contract roles rarely sponsor" to all five countries without being told to, correctly treated UAE employer-sponsorship as closer to default (unlike the stricter H1B-style bar applied elsewhere), and — unprompted — hard-failed a UAE posting explicitly restricted to Emirati nationals, a distinct labor-law reason from "doesn't sponsor" that was never specified in the profile.

A fully drafted CV/cover letter was never reached — both real test candidates were correctly vetoed before drafting — so the PDF-compile-exactly-2-pages and ATS-extraction claims remain unverified in this pass. The cv/main_example.tex template did compile cleanly at exactly 2 pages, but that's the stub, not a tailored real draft.
This review follows RepoVerifier Standard v1.0. Read the standard →