# Installing and Running the AI Job Search Framework: Complete Requirements Guide

> Discover the essential requirements for the AI Job Search framework. Learn what you need to install and run this powerful tool for your job search.

- Repository: [Mads Lorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search)
- Tags: how-to-guide
- Published: 2026-08-30

---

**To install and run the AI Job Search framework, you need Claude Code CLI, Python 3.10+, Bun, a LaTeX distribution with `lualatex`/`xelatex`, and optional tools for PDF text extraction and salary benchmarking.**

The AI Job Search framework is a self-contained job application assistant built on top of Claude Code. This guide covers the complete set of AI Job Search requirements derived from the [MadsLorentzen/ai-job-search](https://github.com/MadsLorentzen/ai-job-search) source code, including mandatory dependencies, optional enhancements, and the exact installation commands.

## Core Requirements for AI Job Search

### Claude Code CLI

**Claude Code CLI** serves as the agent runtime that executes commands like `/setup`, `/scrape`, `/apply`, and others. Without this, the framework cannot function.

Install globally via npm:

```bash
npm install -g @anthropic-ai/claude-code

```

After installation, launch with `claude` to enter the interactive REPL where you run framework commands.

### Python 3.10 or Higher

Python powers two key components:

- **[`salary_lookup.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/salary_lookup.py)** — runtime salary benchmarking script
- **`pypdf`** — optional PDF text extraction for ATS compatibility checks

Verify your version:

```bash
python3 --version   # Must show 3.10 or higher

```

### Bun Runtime

**Bun** executes the TypeScript-based job portal CLIs located under `.agents/skills/*/cli`. These tools handle scraping from Jobindex, Jobnet, LinkedIn, and other portals.

Install Bun:

```bash

# macOS/Linux

curl -fsSL https://bun.sh/install | bash

# Windows PowerShell

powershell -ExecutionPolicy Bypass -c "irm https://bun.sh/install.ps1 | iex"

```

Once installed, install dependencies for each portal CLI:

```bash
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
  (cd .agents/skills/$tool/cli && bun install)
done

```

### LaTeX Distribution with lualatex and xelatex

The framework generates professional PDF documents from templates. You need:

- **`lualatex`** — compiles the CV template (`cv/main_example.tex`)
- **`xelatex`** — compiles cover letters (`cover_letters/cover.cls`)

Install by platform:

```bash

# Ubuntu/Debian

sudo apt install texlive-full

# macOS (Homebrew)

brew install --cask mactex

# Windows (Chocolatey)

choco install miktex

```

## Optional AI Job Search Requirements

### ATS Text Extraction Stack

The `/apply` command checks PDF ATS compatibility by extracting and analyzing text. Two options exist:

**Option 1: pypdf (pure Python, no system dependencies)**

```bash
pip install pypdf

```

**Option 2: poppler-utils (native, often faster)**

```bash

# macOS

brew install poppler

# Ubuntu/Debian

sudo apt install poppler-utils

# Windows (Chocolatey)

choco install poppler

```

Configuration details are documented in [`SETUP.md#optional-ats-text-extraction-pypdf-then-pdftotext`](https://github.com/MadsLorentzen/ai-job-search/blob/master/SETUP.md#optional-ats-text-extraction-pypdf-then-pdftotext).

### Salary Benchmarking Data

To enable market-rate recommendations during `/apply`, generate [`salary_data.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/salary_data.json) from your Excel data:

```bash
pip install openpyxl
python3 tools/convert_salary_excel.py path/to/salary.xlsx --source "My Salary Data"

```

The conversion script is at [[`tools/convert_salary_excel.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/tools/convert_salary_excel.py)](https://github.com/MadsLorentzen/ai-job-search/blob/master/tools/convert_salary_excel.py), and runtime lookup uses [[`salary_lookup.py`](https://github.com/MadsLorentzen/ai-job-search/blob/main/salary_lookup.py)](https://github.com/MadsLorentzen/ai-job-search/blob/master/salary_lookup.py).

### GitHub Fork

The framework expects you to maintain a personal fork (public or private) containing:

- Your candidate profile ([`CLAUDE.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/CLAUDE.md), [`01-candidate-profile.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/01-candidate-profile.md))
- Custom commands and settings
- Upstream sync capability for framework updates

Fork instructions: [`README.md#1-fork-and-clone`](https://github.com/MadsLorentzen/ai-job-search/blob/master/README.md#1-fork-and-clone).

### Claude Code Permissions

Claude Code requires explicit whitelisting of tools in [`.claude/settings.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/.claude/settings.json). This security model ensures Bun tools and Python scripts run only with user consent. Reference the permissions structure in [[`AGENTS.md`](https://github.com/MadsLorentzen/ai-job-search/blob/main/AGENTS.md)](https://github.com/MadsLorentzen/ai-job-search/blob/master/AGENTS.md).

## Architecture Overview

The AI Job Search framework follows a **thin-pointer design**. All "single source of truth" data lives in two locations:

| Directory | Contents |
|-----------|----------|
| `.claude/` | Personal profile, commands, settings |
| `.agents/skills/` | Portal-specific TypeScript CLIs |

The runtime environment satisfies only the dependencies above. No databases, containers, or cloud services are required—Claude Code agents orchestrate the entire workflow.

## Complete Installation Checklist

Run these commands in sequence on a fresh system:

```bash

# 1. Claude Code CLI

npm install -g @anthropic-ai/claude-code

# 2. Verify Python version

python3 --version

# 3. Install Bun

curl -fsSL https://bun.sh/install | bash

# 4. Install LaTeX (platform-specific commands above)

# 5. Optional: ATS text extraction

pip install pypdf

# 6. Optional: salary benchmarking setup

pip install openpyxl

# 7. Install portal CLI dependencies

for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
  (cd .agents/skills/$tool/cli && bun install)
done

# 8. Launch and configure

claude
/setup

```

## Summary

- **Claude Code CLI** is mandatory—the framework cannot run without it
- **Python 3.10+**, **Bun**, and **LaTeX** form the core runtime stack
- **`pypdf`** or **Poppler** enable ATS PDF analysis (optional but recommended)
- **[`salary_data.json`](https://github.com/MadsLorentzen/ai-job-search/blob/main/salary_data.json)** powers salary recommendations (optional)
- All configuration resides in `.claude/` and `.agents/skills/` with no external services needed

## Frequently Asked Questions

### Can I run the AI Job Search framework without Claude Code?

No. The framework is architected specifically around Claude Code's agent runtime. The `/setup`, `/scrape`, `/apply`, and other commands are Claude Code primitives, not standalone scripts. Alternative LLM interfaces are not supported in the current implementation.

### What if my LaTeX installation is missing lualatex or xelatex?

PDF generation will fail. The CV template at `cv/main_example.tex` requires `lualatex`, and the cover letter class at `cover_letters/cover.cls` requires `xelatex`. Install a full TeX Live distribution rather than minimal packages to ensure both engines are present.

### Is Windows fully supported for all AI Job Search requirements?

Yes, with equivalent commands. The repository documentation includes PowerShell equivalents for Bun installation and Chocolatey commands for LaTeX (MiKTeX) and Poppler. The TypeScript CLIs in `.agents/skills/*/cli` run identically under Bun on Windows, Linux, and macOS.