AI Job Search
The job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews.
- Source repo
- MadsLorentzen/ai-job-search
- Stars
- ★ 54k
- Last updated
- today
- License
- MIT
- Primary language
- Python
- FA score
- 63/100 · Some gaps
At a glance
- How it runs
- Works with
- Platform-specificClaude Code
- Cost
- Free software; you pay for model usage
- Setup effort
- Medium · a few setup steps
- You'll need
- Typical use
- A job seeker who wants to automate the application process while retaining control over each application.
- Not a fit if
- Users who don't want Claude Code or a paid Anthropic subscription
- Job seekers outside Denmark unwilling to add their own portal skills
- Anyone not prepared to install Python, Bun, and a LaTeX distribution
- Source review
- 63/100 · Some gaps
What does this agent do, and when should you use it?
This is an AI-powered job application framework built on Claude Code, transforming it into a full-stack job application assistant. It provides a structured workflow including self-profiling, fit evaluation, a drafter-reviewer application pipeline, and PDF and ATS verification. The core workflow is language- and country-agnostic, but shipped job portal search skills target the Danish market, extensible via /add-portal. The author, a geophysicist by training, built this framework to run his own job search after his position was cut in late 2025, successfully landing a role as an AI engineer, proving its effectiveness. The framework features a mandatory PDF compilation loop and ATS check to ensure each CV and cover letter is tailored, ATS-friendly, and within page limits. Additional features include interview prep, skill gap analysis, HTML reports, and Gmail/Notion sync. The project is MIT-licensed and designed to be forked and personalized.
The framework runs around three core commands: /setup, /scrape, and /apply. It reads career materials from the user's profile, scrapes job portals (Jobindex, Jobnet, LinkedIn, etc.) for postings, evaluates fit, and drafts tailored CVs and cover letters in LaTeX. The /apply command runs a drafter-reviewer workflow that includes a PDF compilation loop and ATS verification, ensuring output is correctly formatted and keyword coverage is honest. It also provides ten additional commands: /interview generates stage-specific interview prep packs, /outcome records application results and archives materials, /gmail-sync detects application status from Gmail, /rank batch-scores scraped jobs, /expand enriches your profile from linked public sources, /upskill analyzes skill gaps and suggests learning plans, /html-report generates a self-contained HTML dashboard, /add-template registers custom document templates, /add-portal generates new portal search skills, and /reset wipes profile data. The framework also includes salary benchmarking via a provided tool that uses your own data.
- A job seeker who wants to automate the application process while retaining control over each application.
- A user who wants to leverage their profile for fit evaluation and tailor CV and cover letter for each specific job posting.
- A candidate preparing for an interview who needs a job-specific prep pack.
- A user who wants to track applications and sync status updates from Gmail or Notion.
- A developer who wants to adapt the framework to a new country or job board by generating custom portal skills via /add-portal.
How do you install or deploy this agent?
- Fork and clone the repository: gh repo fork MadsLorentzen/ai-job-search --clone, then cd ai-job-search. 2. Install job search tools using Bun: In PowerShell, run a loop or bash script that runs bun install for each tool (jobbank-search, jobdanmark-search, jobindex-search, jobnet-search, linkedin-search, freehire-search) in its cli directory. 3. Ensure you have Claude Code, Python 3.10+, Bun, and a LaTeX distribution like TeX Live or MacTeX installed. 4. Run claude, then inside Claude Code run /setup to set up your profile.
How do you use this agent?
First run /setup to configure your profile. Then run /scrape to search for jobs and present matches sorted by fit. To apply, use /apply <URL> to run the full workflow: evaluate fit, draft CV and cover letter, review with a second agent, revise, compile PDFs, and ATS-check. Use /rank to batch-score jobs, /interview for interview prep, /outcome to record application results, /gmail-sync to sync Gmail status. Use /setup --section search to update search queries, /add-template to add custom templates, and /add-portal to add a new job portal skill.
What are this agent's strengths and limitations?
- End-to-end job search workflow: from scraping to applying, interview prep, and outcome tracking.
- Mandatory PDF compilation and visual inspection ensure CV and cover letter layouts are clean and within page limits.
- ATS verification: Extracts the PDF text layer to verify it parses correctly and checks keyword coverage honestly without stuffing.
- Extensible: /add-portal and /add-template allow adding custom job boards and document templates.
- Works out of the box without API keys (LinkedIn search uses public endpoints).
- Core workflow is tightly coupled to Claude Code; using other agent tools requires adaptation.
- Built-in portal search skills target the Danish market; other markets need customization.
- Requires a stack of tools (Claude Code, Python, Bun, LaTeX), raising the barrier to entry.
- Postings are treated as untrusted input, but agentic defenses are instruction-level, not a sandbox, so caution is needed on unfamiliar sites.
How does this agent compare with similar options?
Key facts side by side with the most closely related agents.
| Agent | Source review | Form / cost | Stars | Updated | Language | Full support on |
|---|---|---|---|---|---|---|
| AI Job Search This agent | 63 · Some gaps | CLIFree + model costs | ★ 54k | today | Python | Claude Code |
| career-ops: AI Job Search Command Center | 58 · Major gaps | CLIFree + model costs | ★ 76k | today | JavaScript | Codex · Claude Code · OpenAI API · Claude API |
| AI Agents from Zero: Practical Bootcamp to Enterprise Deployment | 34 · Major gaps | CLIFree + model costs | ★ 5.4k | 5d ago | Python | OpenAI API · Claude API |
| AI System Design Guide | 27 · Major gaps | Web appFree | ★ 3.6k | 10d ago | — | — |
How does FollowAgents rate this agent?
Why each dimension lost points
Evidence shows permission allowlist and CI security guards, but specific permissions not listed, so 2. User confirmation exists (e.g., /gmail-sync batch approval) but not comprehensive, 2. Data flow transparency: docs describe data flow but no detailed logs, 2. Sensitive data handling: personal data gitignored but no encryption mentioned, 2. Dependency security: dependency-review present but no dependency list, 2. External effects: explicitly no email sending but not all external calls, 2. Rollback: /reset exists but no version rollback, 1. Source attribution: clearly not Anthropic official but no author verification, 2.
Self-consistency: docs and code structure consistent but not all commands verified, 2. Dependency availability: dependencies like LaTeX, Bun common but no version pinning, 2. Failure messages: CLI tests cover error codes but not all scenarios, 2.
Audience and scenarios: clearly for job seekers but no multi-language support, 2. Capability boundaries: language-agnostic but no detailed boundaries, 2. Trigger precision: commands clearly defined but no parameter validation details, 2. Environment fit: multi-platform but no Windows specifics, 2.
Information architecture: clear file structure but no full documentation, 2. Install notes: detailed steps but no troubleshooting, 2. Naming stability: consistent command names but no version history, 1. Examples and FAQ: examples provided but no FAQ, 2. Known limitations: SECURITY.md threat model but not all limitations, 2. License: MIT clear, 2. Versioning/changelog: no CHANGELOG, 1. Maintenance responsibility: author maintains but no contribution guide, 2.
Output usability: outputs PDFs and reports but no format specs, 2. Marginal value: automation but no comparison data, 2. Cost-benefit: token efficiency mentioned but no concrete costs, 2.
Claim traceability: README claims personal success but no evidence, 2. Cross-source corroboration: no third-party verification, 1. Fact/inference separation: clearly separates facts and inferences, 2.
- Specific permissions not listed; review settings.json.
- No dependency list; check package.json etc.
- No CHANGELOG; version history unclear.
- Personal success claims lack evidence; treat cautiously.
Recent releases
Latest entries from the project's GitHub Releases. Notes are quoted from upstream as written, not rewritten or tested by FollowAgents.
-
v1.7.2 v1.7.2 - Measured PDFs, CLIs that stop trusting the digits, tools that survive non-ASCII
Release notes excerpt
A patch release with one theme: the checks the workflow documented now actually run, and the tools stop breaking on anything that is not ASCII. Compiled PDFs get measured instead of eyeballed, the portal CLIs stop trusting the digits in a URL, and every Python tool survives a Cyrillic posting or a Turkish robots.txt on Windows. Thirty-two entries, twenty-four of them fixes, most reported and fixed by contributors within days of each other. Highlights /apply measures the PDF instead of looking at it (#378, #476, #458, #498, #465) …View on GitHub ↗ -
v1.7.1 v1.7.1 - Cheaper ranking, portals that fail loudly, forks that stop fighting CI
Release notes excerpt
A patch release with one theme: the workflow stops paying for work it does not need and stops hiding work it failed to do. /rank no longer drags your whole job history through the conversation on every run, the portal CLIs now refuse bad input instead of silently returning the wrong thing, and forks get a clean CI and a complete /setup. Seventeen entries, fourteen of them fixes, most of them reported and fixed by contributors within a day of each other. Highlights /rank is bounded and keeps its state on disk (#395, #424, #425, #390) …View on GitHub ↗ -
v1.7.0 v1.7.0 - Trackers that stay private, postings that admit they're closed
Release notes excerpt
Two themes this release: your job search stays yours, and stored state tells the truth about what it holds. The headline fix closes a real privacy leak reported and fixed by the community within a day, and stored jobs now know when their posting has died. Highlights Fork clones no longer file your private tracker on the upstream repo (#389, #392) …View on GitHub ↗