Listen to this Post

Introduction:
The job market has always been a numbers game, but a Danish geophysicist just turned it into an automated intelligence operation. Mads Lorentzen, a PhD researcher who got tired of sending CVs into the void, built an open-source framework on Claude Code that runs the entire job search from the command line — and it actually landed him the job. This isn’t another resume-builder gimmick; it’s a multi-agent AI pipeline that reads job postings, scores your fit, tailors a LaTeX CV, drafts a role-specific cover letter, runs a second AI agent to critique and revise the first draft, and compiles a clean, ready-to-send PDF — all without ever opening a browser. Released under an MIT license, the repository has already surpassed 6,600 stars on GitHub.
Learning Objectives:
- Understand how to deploy Claude Code as a full-stack job application assistant using the ai-job-search framework
- Master the three-command core workflow:
/setup,/scrape, and `/apply`
– Learn to customize LaTeX CV templates, add new job portals, and run skill-gap analysis with `/upskill`
- The Architecture: How a CLI Became a Job-Hunting Command Center
The framework turns Claude Code into what its creator calls a “full-stack job application assistant”. At its core, it’s a structured workflow that is language- and country-agnostic — while the included job portal search skills are built for the Danish market (Jobindex, Jobnet, Akademikernes Jobbank, etc.), the pattern is designed to be swapped for any local job boards.
The workflow visualised:
/setup → /scrape → /apply ↓ ↓ ↓ Fill in Search job Evaluate fit your profile portals Score & recommend ↓ ↓ ↓ Profile files Present matches Draft CV + Cover Letter ready with fit ratings (LaTeX, tailored) ↓ Pick a match ↓ Reviewer agent critiques ↓ Revise → Final output
What makes this different from generic AI resume generators:
The framework encodes career guidance best practices, including structured evaluation criteria, forward-looking cover letter framing, and optional salary benchmarking. It doesn’t just generate text — it reasons about fit. The job evaluation skill scores how well you match a posting using a structured rubric, not keyword matching. The second AI agent acts as a reviewer, critiquing the first draft and forcing revisions before anything gets compiled.
2. Prerequisites: What You Need Before You Start
Before you can turn Claude Code into your personal job-hunting assistant, you’ll need the following installed:
| Requirement | Purpose |
|-||
| Claude Code CLI | The AI agent that powers the entire workflow |
| Python 3.10+ | Runtime for various framework components |
| Bun | JavaScript runtime for the job portal CLI tools |
| LaTeX distribution (TeX Live or MiKTeX) | Compiles CV and cover letter PDFs |
LaTeX note: The CV compiles with `lualatex` (pdflatex often fails on modern MiKTeX installs with `fontawesome5` font-expansion errors); the cover letter compiles with `xelatex` because `cover.cls` requires fontspec.
Windows users: Claude Code runs through Git Bash on Windows, so all commands should be executed in that environment.
3. Installation and First-Time Setup
Step 1: Fork and clone the repository
gh repo fork MadsLorentzen/ai-job-search --clone cd ai-job-search
Step 2: Install job portal search tools
The framework includes CLI tools for multiple Danish job portals. Install each one:
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 ../../../..
For linkedin-search, the install is optional — it has zero runtime dependencies and runs with plain bun.
Step 3: Set up your profile
Launch Claude Code in the project directory and run the setup command:
claude Then inside Claude Code: /setup
The `/setup` command offers three onboarding paths:
- Documents folder mode — reads your `documents/` folder if populated (CV PDF, LinkedIn export, diplomas, reference letters, past applications)
- Single CV import — paste a single CV in chat
- Interview walkthrough — Claude interviews you to build your profile
The documents-folder mode is idempotent and safe to re-run as you add more material.
4. The Core Commands: Your Job-Hunting Arsenal
Beyond the three core commands (/setup, /scrape, /apply), the framework includes four additional commands that extend its capabilities once your profile is in place:
| Command | What It Does |
||–|
| `/expand` | Enriches your profile by scanning public sources you’ve linked (GitHub repos, portfolio, Kaggle, Google Scholar) and looking up syllabi for named courses and certifications |
| `/upskill` | Analyzes the gap between your profile and tracked job postings, producing a prioritized heatmap of skill gaps with web-searched study resources and time estimates |
| `/add-template` | Registers your own LaTeX CV or cover letter template, captures compile instructions, runs a test compile, and wires it into `/apply` |
| `/add-portal` | Generates a job-portal search skill for any job board in your market — it investigates the portal, scaffolds the CLI skill, and test-runs a live query |
Running a Job Search
/scrape
This searches multiple job portals for positions matching your profile, deduplicates results, and presents them sorted by fit.
Applying to a Job
/apply https://jobindex.dk/job/1234567
If the URL can’t be fetched (some job portals block automated access), you can paste the job description directly:
/apply <paste full job description here>
This runs the full workflow: evaluate fit, draft CV + cover letter, review with a second agent, revise, and present the final output.
5. File Structure Deep Dive: Where Everything Lives
Understanding the file structure is crucial for customization:
ai-job-search/ ├── CLAUDE.md Main candidate profile + workflow rules ├── .claude/ │ ├── commands/ │ │ ├── apply.md /apply workflow (drafter-reviewer) │ │ ├── setup.md /setup onboarding │ │ ├── expand.md /expand competency enrichment │ │ ├── add-template.md /add-template register custom LaTeX │ │ ├── add-portal.md /add-portal generate portal skill │ │ └── reset.md /reset wipe profile data │ ├── skills/ │ │ ├── job-application-assistant/ Core application skill │ │ │ ├── SKILL.md │ │ │ ├── 01-candidate-profile.md Education, experience, skills │ │ │ ├── 02-behavioral-profile.md PI/DISC/personality assessment │ │ │ ├── 03-writing-style.md Tone, structure, do's and don'ts │ │ │ ├── 04-job-evaluation.md Scoring framework for job fit │ │ │ ├── 05-cv-templates.md LaTeX CV structure + tailoring │ │ │ ├── 06-cover-letter-templates.md │ │ │ └── 07-interview-prep.md STAR examples + interview framework │ │ ├── job-scraper/ Job search orchestration │ │ └── upskill/ /upskill skill gap analysis │ └── settings.json Claude Code permissions ├── .agents/skills/ Job portal CLI tools │ ├── jobbank-search/ Akademikernes Jobbank (Denmark) │ ├── jobdanmark-search/ Jobdanmark.dk │ ├── jobindex-search/ Jobindex.dk │ ├── jobnet-search/ Jobnet.dk (government portal) │ └── linkedin-search/ LinkedIn public job listings └── cv/ └── main_example.tex moderncv LaTeX template
The `job-application-assistant` skill folder contains the intellectual property of the framework — the evaluation rubrics, profile structures, and template rules that make the AI reason about your fit rather than just keyword-match.
6. Security, Privacy, and Risk Considerations
This is a local-first framework. Your profile data, CV, and application materials never leave your machine unless you explicitly push them. The framework doesn’t phone home to a central server.
However, there are risks to understand:
| Risk | Mitigation |
|||
| Job portal scraping | Some portals block automated access. The framework handles this by allowing direct job description pasting when URLs fail |
| API key exposure | Claude Code requires an Anthropic API key. Never commit it to version control |
| Hallucinated content | The reviewer agent catches most issues, but always review final outputs before sending |
| ATS parsing | LaTeX-generated PDFs are generally ATS-friendly, but test your output with an ATS simulator |
Linux/Windows command for securing your API key:
Linux/macOS export ANTHROPIC_API_KEY="your-key-here" Or add to ~/.bashrc for persistence Windows (Git Bash) export ANTHROPIC_API_KEY="your-key-here" Or set in System Environment Variables
7. Customizing for Your Market: The `/add-portal` Command
One of the most powerful features is the ability to add any job portal to the framework:
/add-portal
This command:
- Investigates the portal (search URL pattern, result structure, access rules)
- Scaffolds a CLI skill using the same structure as the shipped ones
3. Test-runs a live query before registering
The pattern is designed to be swapped for your local job boards — whether that’s SEEK in Australia (already adapted), Indeed in the US, or any other regional job site.
What Undercode Say:
- AI job hunting isn’t cheating — it’s leveling the playing field. Recruiters use AI to filter candidates; candidates can now use AI to craft better applications. The framework doesn’t lie — it just presents your experience in the most relevant way possible.
-
The reviewer agent is the secret sauce. Most AI resume tools generate one draft and stop. This framework runs a second AI agent to critique and revise, mirroring how human editors work. That dual-agent loop dramatically improves output quality.
-
Profile depth determines output quality. The framework emphasises that “profile depth determines output quality”. The more you invest in `/setup` and
/expand, the better your tailored applications become. Garbage in, garbage out — even with AI.
Analysis: What Mads Lorentzen built is essentially a reasoning engine for job applications, not a text generator. The framework doesn’t just swap keywords — it evaluates, scores, drafts, critiques, and revises. This mirrors how a human recruiter thinks: “Does this candidate actually fit? Let me check each requirement against their experience.” The 6,600+ GitHub stars and the fact that it landed its creator a job suggest this isn’t a toy — it’s a new category of AI tool that treats job hunting as an engineering problem.
The broader implication: We’re moving toward a world where AI agents handle the entire job search lifecycle — from discovery to application to interview prep. The `/upskill` command already identifies skill gaps and generates learning plans. The next logical step is AI that negotiates offers and schedules interviews. The framework’s MIT license means this capability is now available to anyone with a terminal and an API key.
Prediction:
- +1 The commoditisation of AI job-hunting tools will force HR tech to evolve — ATS systems will need to become more sophisticated to evaluate candidates beyond keyword matching, driving innovation in recruitment technology.
-
+1 Open-source frameworks like this will accelerate the adoption of AI agents in personal productivity, creating a new category of “agentic workflows” that handle multi-step, decision-intensive tasks previously done manually.
-
-1 The barrier to entry for job applications drops to zero, potentially flooding recruiters with AI-generated applications that all look similar — creating a new arms race between application automation and detection systems.
-
-1 Candidates who don’t adopt these tools will find themselves at a significant disadvantage, potentially widening the digital divide in the job market.
-
+1 The `/upskill` command’s ability to identify skill gaps and generate learning plans represents a shift toward AI that doesn’t just automate tasks but actively guides career development — a positive step toward lifelong learning.
Repository: github.com/MadsLorentzen/ai-job-search
▶️ Related Video (78% Match):
🎯Let’s Practice For Free:
🎓 Live Courses & Certifications:
Join Undercode Academy for Verified Certifications
🚀 Request a Custom Project:
Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands
IT/Security Reporter URL:
Reported By: Charlywargnier A – Hackers Feeds
Extra Hub: Undercode MoN
Basic Verification: Pass ✅


