RepoDaily · 2026-07-10 · AI model / Agent framework

Fork Claude Code into a structured job-application pipeline with ai-job-search

#1 AI model / Agent framework TypeScript +3,728 MadsLorentzen/ai-job-search Open repository

Mads Lorentzen's TypeScript template turns Claude Code into a full-stack job-hunting assistant that scores job fit, drafts LaTeX CVs, and runs a reviewer agent on every application.

Repo typeAI model / Agent framework
Best forIndividual job seekers who already use Claude Code and want a fork-and-adapt pipeline that handles profiling, fit scoring, CV/cover-letter drafting, and interview prep in one structured loop.
Risk levelMedium — depends on Claude Code CLI access, a LaTeX toolchain, and Bun, plus ongoing maintenance of your personal fork.
Time to evaluate1–2 hours to fork, install the six portal-skill CLIs, set up LaTeX, and run /setup.

Primary question: Does Claude Code's CLI fit your job-search routine, and can you maintain a LaTeX distribution plus Bun toolchain on your machine?

91/100

RepoDaily adoption score

RepoDaily rates this as 91/100 (strong) for adoption: evidence, installation path, production risk, differentiation, license clarity, and AI/agent fit are scored from the article sources and adoption notes.

Directional score from RepoDaily sources and adoption notes, not a benchmark.Risk: Medium
96Evidence quality

4 source(s) across 3 source category/categories, plus a RepoDaily-specific evidence module when available.

100Installability

6 workflow step(s), 5 next-action step(s), and 3 command/install signal(s) were detected.

79Maintenance confidence

Trending momentum is +3,728 stars, with maintenance/release/issue signals counted when present.

87Production readiness

Risk is marked medium, with 5 security note(s) and 4 explicit skip condition(s).

100Differentiation

3 opportunity lens item(s), 4 alternative(s), and 4 type-specific section(s) support differentiation.

82License clarity

License source or license wording is present.

84Agent / AI fit

4 AI/agent-related signal(s) were detected in the article text and metadata.

Project overview

MadsLorentzen/ai-job-search is an AI-powered job-application framework built on Claude Code. The README frames it as a structured workflow: you fork the repo, fill in your profile, and Claude evaluates job postings, tailors your CV in LaTeX, writes cover letters, and prepares you for interviews. It is an independent project with no affiliation with Anthropic, which the README states explicitly.

The core lifecycle is feature-complete: /setup → /scrape → /rank → /apply → /interview → /outcome, with calibration feeding back into /setup. Supporting commands include /expand, /upskill, /add-template, /add-portal, and /reset. The README describes this as covering every stage of a real job hunt, with each stage having an owner command.

The project ships as a universal template. The core workflow (self-profiling, fit evaluation, and the drafter-reviewer application pipeline) is language- and country-agnostic. The bundled job-portal search skills target the Danish market — Jobindex, Jobnet, Akademikernes Jobbank, and others — but the pattern is designed so you can swap in your own local boards via /add-portal.

Problem it solves

  • Writing tailored cover letters for each application is repetitive and time-consuming, and generic templates rarely fit individual postings.
  • Manual job-fit evaluation is inconsistent — different applicants apply different criteria, and structured rubrics are rarely enforced.
  • LaTeX-based CVs look professional but are hard to maintain: font packages break across TeX distributions, and pdflatex often fails on modern MiKTeX with fontawesome5 errors.
  • Career-guidance best practices (structured evaluation, forward-looking cover-letter framing, salary benchmarking) exist in theory but are rarely operationalized in a repeatable loop.

How it works

  1. Fork and clone the repo: `gh repo fork MadsLorentzen/ai-job-search --clone`, then cd in.
  2. Run /setup to fill in your profile. The README notes that profile files are generated locally in your fork; CI enforces that upstream stays placeholder-only.
  3. Run /scrape to search job portals. Six CLI tools are bundled under .agents/skills/ — jobbank-search, jobdanmark-search, jobindex-search, jobnet-search, linkedin-search, and freehire-search — each installed via `bun install`.
  4. Run /rank to evaluate fit. The framework encodes structured evaluation criteria and produces fit ratings on matched jobs.
  5. Run /apply <url> on a chosen match. Claude drafts a tailored CV (compiled with lualatex) and cover letter (compiled with xelatex), then a reviewer agent critiques the draft and triggers a revise cycle.
  6. Run /interview for interview preparation, then /outcome to record results and calibrate future /setup cycles.

Product demo and interface preview

AI Job Search Assistant
AI Job Search Assistant — Official README visual asset that helps readers understand the project interface, architecture, workflow, or output. README.md image

Architecture: markdown specs are the implementation

The most unusual design choice is stated bluntly in CONTRIBUTING.md: 'The markdown specs ARE the implementation.' There is no parallel codebase that mirrors the agent workflow. A second copy — whether another agent CLI, an orchestration layer, or a wrapper command — would drift from the spec the moment either changes.

This is why alternative-harness ports and duplicate workflow sources are declined (precedents: #44, #49, #66). The contributor guidance argues that maintaining two sources of truth for the same workflow is unsustainable for a single-maintainer project.

The portal-search CLIs are the exception: each lives under .agents/skills/<name>/cli as a Bun-based TypeScript tool with its own tests under .agents/skills/<name>/cli/tests/. Python tooling sits under tests/ and is linted by tools/lint_skills.py.

Try-it path: concrete commands and prerequisites

  • Prerequisites: Claude Code CLI, Python 3.10+, Bun, and a LaTeX distribution with lualatex and xelatex (TeX Live, MacTeX, TinyTeX, or MiKTeX).
  • Fork: `gh repo fork MadsLorentzen/ai-job-search --clone` then `cd ai-job-search`.
  • Install each portal tool: `cd .agents/skills/jobindex-search/cli && bun install && cd ../../../..` (repeat for all six tools).
  • CV compiles with lualatex; cover letter compiles with xelatex because cover.cls requires fontspec.
  • Optional: install poppler (`brew install poppler` on macOS, `apt install poppler-utils` on Debian/Ubuntu, `choco install poppler` on Windows) for the ATS parseability check via pdftotext. If absent, the check degrades to a visual keyword review.
  • Minimal TeX installs (TinyTeX, BasicTeX) need extra packages listed in SETUP.md.

Maintenance risk: a narrow contribution philosophy

The project has a deliberately narrow scope, and CONTRIBUTING.md warns that most declined PRs are well-executed work that simply did not fit the philosophy. The one governing rule: 'This repo is a universal template.' Upstream stays market-agnostic, person-agnostic, and Claude Code-native.

Country-specific portal skills are consistently declined: #31 (India), #39 (France), #67 (China). The Danish portals in-tree are the maintainer's own demonstration instance. The stopping principle is that one country's portal opens the door to every country's portal.

Personal profile data is rejected: CI enforces placeholder-integrity (precedents #17, #72). The template ships placeholders; your populated profile lives only in your fork.

New commands face a high bar because the core lifecycle is feature-complete. The admission test: does a proposal operationalize something error-prone that already exists in the framework? 'Useful' and 'possible' alone are not sufficient.

Command surface: the full lifecycle

  • /setup — fill in your profile, generate profile files locally.
  • /scrape — search job portals and present matches with fit ratings.
  • /rank — evaluate fit against structured criteria and score/recommend.
  • /apply <url> — draft CV (lualatex) and cover letter (xelatex), then run reviewer-agent critique and revise cycle.
  • /interview — prepare for interviews based on the evaluated job.
  • /outcome — record results and calibrate back into /setup.
  • /expand, /upskill, /add-template, /add-portal, /reset — supporting commands around the core lifecycle.

Who should pay attention?

Good fit if

  • You already use Claude Code's CLI and are comfortable in a terminal.
  • You maintain (or are willing to install) a LaTeX distribution and Bun on your machine.
  • You want a fork-and-own model where your profile data never leaves your local repository.
  • You are job hunting in Denmark (bundled portal skills) or willing to adapt portal skills to your local market via /add-portal.

Skip for now if

  • You do not have a Claude Code subscription or CLI access.
  • You want a hosted SaaS with a web UI and no local setup.
  • You cannot install a LaTeX distribution or Bun runtime on your target machine.
  • You expect upstream to accept your country-specific portal or personal profile data as a PR.

Risks and cautions

Medium

The framework is well-structured and MIT-licensed, but adoption requires Claude Code CLI access, a working LaTeX toolchain with specific compilers, and Bun — a non-trivial local setup. Ongoing use means maintaining your own fork.

  • Claude Code CLI is a hard prerequisite; without it, none of the slash commands function.
  • LaTeX compilation requires lualatex for the CV and xelatex for the cover letter; minimal TeX installs need extra packages from SETUP.md.
  • Bun must be installed and each of six portal-skill CLIs must be individually set up via `bun install`.
  • The maintainer explicitly declines country-specific and profile-data contributions, so users outside Denmark must maintain their own portal forks indefinitely.
  • The markdown-specs-as-implementation design means there is no fallback runtime; if Claude Code's behavior changes, the specs may need manual updates.
  • MIT License (Copyright (c) 2026 Mads Lorentzen) — permissive for personal and commercial use.
  • Profile data stays in your fork; CI enforces placeholder-integrity on upstream so no personal data leaks via merged PRs.
  • The project is independent and not affiliated with, endorsed by, or maintained by Anthropic, per the README's explicit disclaimer.
  • Portal-search CLIs run locally via Bun; no data is sent to any backend beyond what Claude Code itself transmits to Anthropic.
  • The optional ATS check uses pdftotext from poppler on the compiled CV; if poppler is absent, it degrades gracefully rather than failing.

Alternatives to compare

ApproachWhen to useTrade-off
Awesome-CV
You want a polished LaTeX CV template without an agent-driven application pipeline.Free / open-source (LaTeX).
Plain Claude.ai or ChatGPT chat
You want ad-hoc help with a single cover letter or CV tweak without committing to a full framework.Subscription or free tier.
Jobscan or similar ATS scanners
Your primary need is keyword-optimization against a specific job posting, not end-to-end drafting.Subscription.
Manual LaTeX CV with a personal template
You already have a CV system and only want Claude Code's chat help for individual sections.Free.

What this trend reveals

Localize portal skills for non-Danish markets

The maintainer declines country-specific portals upstream (#31 India, #39 France, #67 China), but the /add-portal command and the .agents/skills/<name>/cli pattern make it straightforward to build a personal fork for your local job boards.

CONTRIBUTING.md names /add-portal (#37) as a precedent for universal customization features, and the existing Danish portals demonstrate the skill structure to follow.

Extend the reviewer-agent loop with custom rubrics

The drafter-reviewer pipeline is the core of /apply. Because the markdown specs are the implementation, you can edit the reviewer criteria in your fork to match your industry's expectations (e.g., quantified achievements, domain-specific keywords).

The README states the reviewer agent critiques drafts and triggers a revise cycle; CONTRIBUTING.md confirms specs are editable markdown, not compiled code.

Wire the ATS check into a pre-submit gate

The /apply command's pdftotext-based ATS parseability check can be extended in a fork to flag missing keywords from the job posting before you submit, creating a local quality gate.

README documents that /apply uses pdftotext from poppler for the ATS check on the compiled CV and degrades gracefully if poppler is absent.

Best next action

Fork, install prerequisites, and run /setup with a test profile

The fastest way to evaluate this framework is to fork it, install Claude Code + Python 3.10+ + Bun + LaTeX, set up the portal CLIs, and run /setup with placeholder data. Then run /scrape and /apply on a real job posting to see the drafter-reviewer loop in action.

  1. Run `gh repo fork MadsLorentzen/ai-job-search --clone` and `cd ai-job-search`.
  2. Install Claude Code CLI, Python 3.10+, Bun, and a LaTeX distribution with lualatex and xelatex.
  3. Install each portal-skill CLI: `cd .agents/skills/jobindex-search/cli && bun install && cd ../../../..` (repeat for all six).
  4. Run `python3 tools/lint_skills.py` and `bun run typecheck` to confirm the setup matches CI.
  5. Run /setup with test profile data, then /scrape and /apply <url> on a real posting to exercise the full pipeline.

RepoDaily verdict

ai-job-search is a thoughtfully scoped Claude Code framework that turns job hunting into a structured, fork-and-own loop. The markdown-specs-as-implementation design is unusual and keeps the project maintainable, but adoption hinges on having Claude Code CLI, a LaTeX toolchain, and Bun ready to go. For individual job seekers already in the Claude ecosystem — especially in Denmark or willing to adapt portal skills — it is a strong, privacy-respecting starting point.

Sources