MadsLorentzen/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. Fork it and own it.

AI Job Search – an AI‑powered job‑application assistant

What it is – A command‑line framework that lets you run the whole job‑search funnel on your own machine, using Claude Code (Anthropic’s code‑assistant model) as the reasoning engine. After you feed it a personal profile, the tool can:

  1. Scrape a set of job boards (currently Danish portals plus LinkedIn and freehire.me) and rank the postings against a fit‑scoring rubric.
  2. Apply to a chosen posting: the model evaluates fit, drafts a LaTeX CV and cover letter, spawns a reviewer agent to critique the drafts, iterates until the PDFs meet strict layout rules, and runs an ATS‑readability check.
  3. Prepare for interviews with a mock‑interview flow that pulls company info, maps likely questions to your STAR examples, and generates a prep pack.
  4. Track outcomes – record interview stages, offers, rejections, and automatically draft polite follow‑ups.
  5. Sync the pipeline to Notion or Gmail, generate an offline HTML dashboard, and even suggest up‑skilling plans based on identified skill gaps.

Why it matters – Most AI‑assisted résumé tools are one‑off generators. This project bundles the entire end‑to‑end workflow (search → fit evaluation → drafting → review → ATS verification → outcome tracking) into reproducible CLI commands, and it does so with a strong emphasis on verifiable output (PDF compilation checks, no fabricated claims).


Quick‑start overview (from the README)

  1. Fork & clone the repo – keep a private fork if you don’t want your personal data in a public repo.
  2. Install the job‑search tools (Bun‑based CLI scrapers) for each portal you care about.
  3. Run /setup inside Claude Code to import your CV, LinkedIn export, diplomas, etc., or answer an interview‑style questionnaire. This creates the structured CLAUDE.md profile used by all later commands.
  4. Search with /scrape. The command queries the bundled portals, de‑duplicates results, and returns a list sorted by the fit score.
  5. Apply with /apply <job‑url> (or paste the full description). The system:
    • parses the posting,
    • scores fit,
    • drafts LaTeX CV + cover letter,
    • runs a reviewer agent,
    • iterates until the PDFs are clean (2‑page CV, 1‑page cover letter),
    • runs an ATS‑text extraction check, and
    • presents the final documents and a checklist.
  6. Optional extras/interview for mock interviews, /outcome to log results, /rank to batch‑score scraped jobs, /upskill for learning‑plan suggestions, /html-report for a local dashboard, /notion-sync and /gmail-sync for live views.

Core components (file‑tree highlights)

  • .claude/commands/ – Markdown definitions of each CLI command (apply.md, setup.md, interview.md, …) that Claude Code reads to execute the workflow.
  • .claude/skills/ – Prompt libraries:
    • job-application-assistant/ holds the candidate‑profile schema, writing‑style guide, scoring rubric, and LaTeX template specs.
    • job-scraper/ orchestrates portal queries.
    • upskill/ performs skill‑gap analysis.
  • .agents/skills/ – Small Bun‑based scrapers for each supported job board (e.g., jobindex-search). They are installed with bun install.
  • cv/ & cover_letters/ – LaTeX source files (moderncv template, custom cover.cls). The framework compiles them on‑the‑fly for each application.
  • documents/ – Your personal source material (PDF CV, LinkedIn export, diplomas, past applications). /setup reads this folder automatically.
  • job_search_tracker.csv – A simple spreadsheet that records every application, its status, and fit scores; used by /html-report and the sync commands.
  • Utility scripts (salary_lookup.py, various tools/*.py) – Helpers for salary benchmarking, CI linting, PDF verification, and security checks.

Prerequisites (as listed)

  • Claude Code CLI (the only supported LLM tool; other agents possible via AGENTS.md).
  • Python 3.10+.
  • Bun (for the portal‑scraper CLIs).
  • A full LaTeX distribution with lualatex (CV) and xelatex (cover letter). TinyTeX works if you add the extra packages noted in SETUP.md.
  • Optional: pypdf (or system poppler utilities) for the ATS‑text extraction step.

Who might use it

  • Job seekers who already use Claude Code and want a reproducible, locally‑run pipeline rather than a web service.
  • Developers comfortable with CLI tools who want to customise the scraping skills or LaTeX templates.
  • Anyone looking for a transparent, audit‑friendly AI assistant that never fabricates experience.

Limitations & cautions (from the README)

  • The workflow does not sandbox scraped job pages; you should skim the fetched content before sending any application.
  • Profile data is written to tracked files; keep your fork private if you don’t want that information public.
  • The current portal scrapers are tuned for the Danish market; swapping in a new board requires creating a new skill via /add-portal.
  • The system relies on Claude Code; usage costs and rate limits are governed by your Anthropic account.

Bottom line

ai-job-search is a genuine open‑source project that combines LLM prompting, web scraping, LaTeX document generation, and workflow automation to give you a self‑hosted AI job‑application assistant. All features described above are taken directly from the repository’s README; no additional capabilities have been inferred.

Written about in

Related

  • Project
  • Project
  • Project
  • Project
  • Project