explainx.ainewsletter3.5k
TrendingNewsPathwaysSkills
Pricing
explainx.ai

Upskill in AI — 16 free pathways, live workshops & bootcamps, and 50+ courses from practitioners. Plus the skills, tools, and MCP servers to practice on.

follow us

custom AI agents

[email protected]

get started

Find your pathTake Free Evaluation

learn

pathways — start freeworkshopsbootcampscoursescertificationsmock testsexplainx universitycorporate traininglearn skills & mcp

discover

skillsmcp serversexplainx mcptoolsagentsllmsdesignsagi trackerranks

company

aboutvisionmissionteaminstructorscommunityhackathonscareers

content

daily AI newsstate of AI — live resultsblogreleasespromptsgeneratorsresource librarydemofor LLMs

solutions

all solutionsdeveloper upskillingmarketing upskillingproduct manager upskillingleadership upskilling

More from us

InfloqInfluencer marketingBgBlurPrivacy-first blurOlly SocialSocial AI copilotCeptoryVideo intelligenceBgRemoverBackground removal

newsletter · weekly

Get AI news, tools, and insights in your inbox.

supportprivacytermsdata rightssubmission guidelines

© 2026 AISOLO Technologies Pvt Ltd

On this page

  • TL;DR: What People Are Asking
  • What It Actually Does
  • Quick Start (Fork → Apply)
  • Command Reference: Beyond the Core Trio
  • What Makes /apply Different
  • Job Search Tools: Denmark Shipped, Everywhere Extensible
  • Profile Depth = Output Quality
  • Custom Templates and Salary Benchmarking
  • Limitations and Risks
  • How It Fits the Claude Code Ecosystem
  • The Bottom Line
  • Related on explainx.ai
← Back to blog

explainx / blog

AI Job Search: Claude Code Framework for CVs, Cover Letters, and ATS Checks

MadsLorentzen/ai-job-search (12.9k GitHub stars) turns Claude Code into a full job-application assistant — /setup, /scrape, /apply with drafter-reviewer agents, LaTeX PDF verification, and ATS keyword parsing. Setup guide for 2026.

Jul 8, 2026·8 min read·Yash Thakker
Claude CodeAgent SkillsCareerOpen SourceLaTeXJob Search
go deep
AI Job Search: Claude Code Framework for CVs, Cover Letters, and ATS Checks

MadsLorentzen/ai-job-search is one of the fastest-growing Claude Code workflow repos in mid-2026: roughly 12.9k stars, 4.1k forks, MIT license. It is not an Anthropic product — the README states clearly it is independent — but it is a polished example of what custom slash commands and agent skills look like when aimed at a real-life outcome: getting hired.

Fork it, run /setup on your profile, /scrape job boards, /apply on a posting — and Claude evaluates fit, tailors a LaTeX CV and cover letter, spawns a reviewer agent, compiles PDFs, and ATS-checks the text layer before you submit.

TL;DR: What People Are Asking

QuestionAnswer
Free?Framework is MIT; you pay Claude Code/API usage
Core commands?/setup → /scrape → /apply (+ /rank to triage)
What's special?Drafter-reviewer split + mandatory PDF compile loop + ATS keyword pass
Denmark only?Portal CLIs are Danish; LinkedIn search + /add-portal for other markets
Prerequisites?Claude Code, Python 3.10+, Bun, LaTeX (lualatex + xelatex)
Recent updates?/outcome tracking, ATS keyword verification, hex HTML entity fix in Jobindex CLI
Stars / forks?~12.9k / ~4.1k (July 2026)
Weekly digest3.5k readers

Catch up on AI

Curated AI updates on agents, skills, and MCP — delivered to your inbox. Unsubscribe anytime.

What It Actually Does

Most "AI resume" tools generate a Markdown blob and call it done. ai-job-search encodes a multi-step agent workflow with verification gates:

snippet
/setup          /scrape              /apply <url>
  |                |                     |
  v                v                     v
Profile files    Search portals       Evaluate fit (5 dimensions)
ready            Dedupe + sort        Draft CV + cover letter (LaTeX)
                 by fit               Reviewer agent critiques
                   |                     |
                   v                     v
               /rank (optional)      Compile PDFs → inspect layout
               batch shortlist       ATS text extract → keyword score
                                     Present checklist → you submit

The design borrows from loop engineering thinking: structured phases, explicit handoffs, and a second agent that catches what the first pass misses — except the output is a job application, not a pull request.

Quick Start (Fork → Apply)

From the official README:

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

# Install Danish portal CLI tools (Bun)
cd .agents/skills/jobbank-search/cli && bun install && cd ../../../..
cd .agents/skills/jobdanmark-search/cli && bun install && cd ../../../..
cd .agents/skills/jobindex-search/cli && bun install && cd ../../../..
cd .agents/skills/jobnet-search/cli && bun install && cd ../../../..
cd .agents/skills/linkedin-search/cli && bun install && cd ../../../..

Then inside Claude Code:

text
/setup
/scrape
/apply https://jobindex.dk/job/1234567

If a portal blocks fetch, paste the full job description:

text
/apply <paste the full job description here>

Prerequisites worth calling out:

DependencyWhy
Claude Code CLIRuns slash commands and spawns reviewer agents
Python 3.10+Salary lookup and tooling
BunTypeScript CLIs for job portal search
LaTeX (lualatex, xelatex)CV compiles with lualatex; cover letter needs xelatex + fontspec
pdftotext (optional)ATS text-layer extraction — brew install poppler on macOS

The CV template is moderncv (banking style). Cover letters use a custom cover.cls with Lato/Raleway fonts bundled under cover_letters/OpenFonts/.

Command Reference: Beyond the Core Trio

CommandPurpose
/setupOnboard profile — documents folder, CV paste, or interview
/scrapeMulti-portal search, dedupe, fit-sorted results
/rankBatch-score scraped jobs in parallel; ranked shortlist with deal-breaker vetoes
/applyFull drafter-reviewer pipeline + PDF + ATS
/outcomeRecord interview stages, offers, rejections; archive to documents/applications/
/expandPull competencies from GitHub, portfolio, Kaggle, course syllabi
/upskillSkill-gap heatmap + learning plan vs tracked postings
/add-templateRegister your own LaTeX CV/cover template with test compile
/add-portalScaffold a job-board CLI skill for your local market
/resetWipe profile or documents (requires typing RESET)

/outcome closes the feedback loop: after a few resolved applications, it points you back to /setup to calibrate the fit framework from what actually got interviews — rare in hobby agent repos, valuable for forward-deployed career moves where targeting matters.

What Makes /apply Different

1. Drafter-reviewer separation

The drafter writes CV and cover letter. A second Claude agent — fresh context — researches the company and critiques drafts. The drafter revises. This mirrors production multi-agent patterns and catches generic framing single-pass tools miss.

Honesty rule: skills and experience are verified against your profile. The system does not fabricate credentials.

2. PDF verification loop

LaTeX resumes often look fine in source and break in PDF — orphaned job titles, cover letters spilling to page 2, icon fonts garbling contact fields. /apply compiles and visually inspects every PDF:

  • CV: exactly 2 pages, no orphaned entry titles
  • Cover letter: exactly 1 page, signature visible, consistent fonts
  • Fixes use \needspace, \enlargethispage, font-matching list wrappers

This is the difference between "AI wrote me a resume" and "AI wrote me a resume I can send."

3. ATS verification on the text layer

Applicant tracking systems read embedded PDF text, not the rendered page. LaTeX can produce beautiful PDFs that extract as garbage — icon glyphs where your email should be, scrambled multi-column order.

/apply runs pdftotext on the compiled CV and checks:

  • Contact details present as literal text
  • Sane reading order
  • Posting keyword coverage against the extraction

Keyword honesty: terms your profile genuinely supports get added; genuine gaps stay visible — never keyword-stuffed.

Recent commit fix(jobindex-search): decode hex HTML entities in CLI output (#56) shows the portal layer getting the same "what parsers actually see" treatment.

4. Relevance-weighted CV cutting

When a CV overflows two pages, the workflow does not cut mechanically from the oldest section. Each line is scored by:

  1. Relevance to the target posting
  2. Uniqueness in the document
  3. Whether the cover letter depends on it

Lowest total score gets cut first — an older bullet that hits posting keywords survives ahead of a recent bullet that does not.

Job Search Tools: Denmark Shipped, Everywhere Extensible

Shipped portal skills under .agents/skills/:

SkillPortal
jobindex-searchJobindex.dk
jobnet-searchJobnet.dk (government)
jobbank-searchAkademikernes Jobbank
jobdanmark-searchJobdanmark.dk
linkedin-searchLinkedIn public guest endpoints (any location flag)

linkedin-search is the portable starting point: -l "Berlin, Germany", -l "Mumbai, Maharashtra, India", -l "Remote". Zero runtime deps beyond Bun. README warns: personal use only — LinkedIn ToS restricts automated access.

For other boards, run /add-portal with a URL. The command investigates search URL patterns, result structure, and robots.txt, scaffolds a CLI matching the shipped skill contract, and test-runs a live query before registering. Auth-walled portals are declined.

Profile Depth = Output Quality

The README is explicit: thin profile → generic applications. Rich profile → genuinely tailored output.

Best practices from the repo:

  • Describe what you actually did per role — projects, tools, measurable outcomes
  • Put skills in context ("built ML pipelines for churn prediction in Python/scikit-learn" beats "Python, ML")
  • Use /setup documents mode: drop CV PDF, LinkedIn export, diplomas, references into documents/ (see documents/README.md)
  • Re-run /setup --section search when priorities shift without redoing the full profile

/expand can enrich after setup by scanning GitHub repos, portfolio sites, Kaggle, Google Scholar, and course syllabi — competencies added with source tags.

Custom Templates and Salary Benchmarking

text
/add-template

Interviews you for compile engine, fonts, style rules, page limits; stores templates under templates/ with [PLACEHOLDER] tokens (safe to commit); runs mandatory test compile; wires into /apply.

/add-template --list / --use <name> / --use default switch between custom and stock moderncv templates.

salary_lookup.py accepts your own salary data (union stats, Glassdoor exports). No data → salary step skipped. See tools/README_SALARY_TOOL.md.

Limitations and Risks

IssueDetail
Claude cost/apply + reviewer + /rank parallel agents consume tokens
LaTeX fragilitymoderncv + fontawesome5 breaks on wrong engine; README mandates lualatex
Portal blockingSome URLs need pasted descriptions
LinkedIn ToSAutomated search is against terms at volume
No releasesRepo has no published GitHub Releases — track main
2 open issuesCheck GitHub Issues before depending on edge cases

This is a personal workflow framework, not HR-compliant hiring software. You remain responsible for factual accuracy in submitted materials.

How It Fits the Claude Code Ecosystem

ai-job-search demonstrates patterns worth stealing for any agent skill project:

  1. Slash commands as product surface — /apply is the UX; SKILL.md files are the engine
  2. Verification gates — compile, inspect, extract, score — not "here's text, good luck"
  3. Subagent critique — reviewer with fresh context, not self-review
  4. Market plugins — portal CLIs as swappable .agents/skills/ modules
  5. Feedback loop — /outcome calibrates fit scoring from real results

If you already use Claude Code for coding, forking ai-job-search is a low-friction way to test the same toolchain on a non-code outcome — with LaTeX and ATS constraints that force rigor.

The Bottom Line

ai-job-search is the most complete open-source Claude Code job application framework available in July 2026: structured commands, drafter-reviewer agents, LaTeX PDF verification, and ATS keyword honesty — not another ChatGPT "write my resume" prompt.

Fork github.com/MadsLorentzen/ai-job-search, invest time in /setup, and treat /apply as a pipeline you iterate — not a one-shot generator. Use /rank when /scrape returns too many matches. Use /outcome so the system learns what actually worked.

Related on explainx.ai

  • Claude Code Commands: Complete Reference — built-in slash commands + custom skills
  • Top 10 AI Agent Skills Directories — where SKILL.md packages live
  • Loop Engineering with Claude Code — structured agent phases
  • What Are AI Agents? Complete Guide — drafter-reviewer pattern explained
  • Forward Deployed Roles and the Future of Work — targeting non-obvious career paths
  • Claude Code MCP Servers — extending the toolchain
  • npx skills Install Guide — installing skills from registries
  • AI and the Law: Contracts and Liability — accuracy obligations in applications

Source: MadsLorentzen/ai-job-search on GitHub (MIT, README and SETUP.md as of July 8, 2026).

Star counts, command set, and dependencies reflect the public repository at publication time. Verify README before installing portal CLIs or running /apply against live postings.

Yash Thakker

Written by

Yash Thakker

Yash is an AI expert with over 300K learners. Join his workshops →

Related posts

Jun 5, 2026

/last30days Skill: AI Agent Search Across Reddit, X, YouTube, GitHub, and Polymarket

mvanhorn/last30days-skill turns an AI coding agent into a recency-focused research system that searches Reddit, X, YouTube, Hacker News, GitHub, Polymarket, TikTok, Instagram, Threads, Bluesky, Perplexity, and the web, then synthesizes a brief scored by engagement instead of SEO rank.

Jul 25, 2026

Claude 5 Context Engineering: Stop Over-Constraining the Model

Claude Code’s Thariq explains why Claude 5 models need less prompting theatre: delete conflicting rules, design tool interfaces, progressive disclosure, and run /doctor to rightsize CLAUDE.md and skills.

Jul 23, 2026

Peter Yang Open-Sources /no-ai-slop, a Claude Skill for De-Sloppifying Writing

Peter Yang released /no-ai-slop on July 22, 2026 — an open-source skill for Claude and similar tools that targets over 20 repetitive AI writing patterns (fake-profound closers, binary contrasts, throat-clearing openers) while explaining every edit and preserving your voice. It hit nearly 1,000 GitHub stars within a day. Here's how the skill works and how to install it.