Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/MadsLorentzen/ai-job-search/llms.txt

Use this file to discover all available pages before exploring further.

Before running any commands in AI Job Search you need four tools installed on your machine: Claude Code (the CLI that drives the entire framework), Python 3.10+ (for salary benchmarking), Bun (the JavaScript runtime for the job portal CLI tools), and a LaTeX distribution with both lualatex and xelatex (for compiling CVs and cover letters to PDF). A fifth tool, pdftotext from poppler, is optional — it powers the ATS parseability check inside /apply but the workflow degrades gracefully without it.

Claude Code (Required)

Claude Code is Anthropic’s CLI for Claude. Every framework command (/apply, /setup, /scrape, and so on) runs inside a Claude Code session started from the repository root. Install:
npm install -g @anthropic-ai/claude-code
Authentication: Claude Code requires either an Anthropic API key or a Claude Pro/Team subscription. Follow the prompts on first launch to authenticate. Verify:
claude --version
See the Claude Code documentation for full setup details, including API key configuration and subscription options.

Python 3.10+ (Required)

Python is needed to run salary_lookup.py (the salary benchmarking script) and tools/convert_salary_excel.py (which converts Excel salary data to JSON). If you skip salary benchmarking entirely, Python is still required for the dependency to resolve cleanly. Verify:
python --version
On Windows, python may not be on your PATH. Use py --version instead, which invokes the Python Launcher for Windows and is the most reliable check.

Bun (Required)

Bun is a fast JavaScript runtime used to execute the five job portal CLI tools in .agents/skills/. Each tool is a TypeScript application and is invoked by Claude Code via bun run. Without Bun, /scrape and all portal-specific search commands will fail. Install:
curl -fsSL https://bun.sh/install | bash
Verify:
bun --version
After installing Bun, install the dependencies for each job portal CLI tool from the repository root:
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search; do
  cd .agents/skills/$tool/cli && bun install && cd ../../../..
done
For linkedin-search, bun install is optional — it has zero runtime dependencies and runs with plain bun. The install step only pulls TypeScript development types.

LaTeX Distribution (Required)

A LaTeX distribution provides the lualatex and xelatex engines used to compile the generated .tex files into PDFs. The /apply workflow mandates successful compilation and visually inspects the rendered PDFs before presenting output — so this is not optional. Install by operating system:
Install MiKTeX from miktex.org. MiKTeX can install missing packages on-the-fly, which is convenient for the first compile.After installation, verify both engines are available:
lualatex --version
xelatex --version
The CV must be compiled with lualatex. Using pdflatex will often fail on modern MiKTeX installs with fontawesome5 font-expansion errors. The cover letter must be compiled with xelatex because cover.cls requires fontspec for the custom Lato and Raleway fonts. Make sure your distribution includes the moderncv package.

pdftotext (Optional)

pdftotext is part of the poppler utilities and is used by /apply’s ATS parseability check. After compiling the CV to PDF, /apply extracts the text layer with pdftotext and verifies that contact details appear as literal text, the reading order is sane, and the posting’s keywords are covered — exactly as an applicant-tracking system would see them. Install:
brew install poppler
Verify:
pdftotext -v
If pdftotext is not installed, /apply skips the mechanical ATS check with a warning and falls back to a visual keyword review. Everything else in the workflow continues normally — you can always add poppler later without re-running setup.

Quick Verification

Run all of these at once to confirm your environment is ready:
claude --version
python --version
bun --version
lualatex --version
xelatex --version
pdftotext -v  # optional
All required tools should print a version string without errors before you proceed to /setup.

Claude Code Permissions

The repository ships with .claude/settings.json, which scopes Claude Code’s Bash permissions to the specific commands the framework needs:
{
  "permissions": {
    "allow": [
      "Skill(job-application-assistant)",
      "Bash(bun run:*)",
      "Bash(python salary_lookup.py:*)",
      "Bash(python3 salary_lookup.py:*)",
      "Bash(pdftotext:*)"
    ]
  }
}
This means Claude Code will only be allowed to run bun run, python salary_lookup.py, and pdftotext as Bash commands — it cannot run arbitrary shell commands without prompting you first.
If you cloned the repository before the shared settings.json was introduced, your working copy may contain a stale .claude/settings.local.json from an older version that pre-approved broader permissions (Bash(curl:*), Bash(python:*), Bash(bun:*)). Those permissions still apply on top of settings.json. Remove the stale file to restore the scoped defaults:
rm .claude/settings.local.json

Build docs developers (and LLMs) love