Step-by-step instructions for getting the AI Job Search framework running.
## 1. Prerequisites
### Claude Code
Install Claude Code (Anthropic's CLI for Claude):
```bash
npm install -g @anthropic-ai/claude-code
```
You'll need an Anthropic API key or a Claude Pro/Team subscription. See the [Claude Code docs](https://docs.anthropic.com/en/docs/claude-code) for details.
### Python
Python 3.10+ is required for the salary lookup tool. Check with:
```bash
python --version
```
### Bun (for job search tools)
The Danish job portal CLIs are written in TypeScript and run with Bun:
```bash
curl -fsSL https://bun.sh/install | bash
```
### LaTeX (for compiling CVs and cover letters)
Install a LaTeX distribution to compile the generated `.tex` files to PDF:
The CV compiles with `lualatex` (pdflatex often fails on modern MiKTeX installs with `fontawesome5` font-expansion errors). The cover letter compiles with `xelatex` because `cover.cls` requires `fontspec` for its custom Lato/Raleway fonts.
Or manually: fork on GitHub, then clone your fork.
## 3. Install job search CLI dependencies
```bash
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search;do
cd .agents/skills/$tool/cli && bun install &&cd ../../../..
done
```
## 4. Run the setup interview
Start Claude Code in the repository:
```bash
claude
```
Then run the onboarding:
```
/setup
```
Claude will offer two paths:
- **Path A (recommended):** Share your existing CV (mention the file with `@` or paste the text). Claude extracts your information and asks follow-up questions for anything missing.
- **Path B:** Answer structured interview questions section by section.
Both paths produce the same result: fully populated profile files.
| `04-job-evaluation.md` | Personalized skill match areas and career goals |
| `05-cv-templates.md` | Profile statement templates for your background |
| `07-interview-prep.md` | STAR examples from your experience |
| `cv/main_example.tex` | Your LaTeX CV with actual details |
| `search-queries.md` | Job search queries for `/scrape` |
### Re-running setup
You can update specific sections later:
```
/setup --section skills
/setup --section experience
/setup --section search
```
The `--section search` option is especially useful as your priorities evolve. It re-runs the search configuration interview and suggests role types you may not have considered based on your full profile.
## 5. Optional: Set up salary benchmarking
If you have salary data (from a union, salary survey, Glassdoor, or personal research):
1.**Option A:** Create `salary_data.json` manually in the repo root (see `tools/README_SALARY_TOOL.md` for the format)
2.**Option B:** Convert from Excel:
```bash
pip install openpyxl
python tools/convert_salary_excel.py path/to/salary-data.xlsx --source "My Salary Data 2025"
```
This creates `salary_data.json` which the `/apply` workflow uses for salary benchmarking. If you skip this step, salary lookup is simply omitted.
- Cover letter: uses `xelatex` (for custom fonts in `OpenFonts/fonts/`)
- Make sure your LaTeX distribution includes the `moderncv` package
### Fonts not found in cover letter
The cover letter template expects fonts in `cover_letters/OpenFonts/fonts/`. Make sure this directory exists and contains the Lato and Raleway font files.
### Stale `.claude/settings.local.json` from an older clone
Shared Claude Code permissions now live in `.claude/settings.json` (scoped to `bun run` and `python salary_lookup.py`). Earlier versions of this repo committed a broader `.claude/settings.local.json` that pre-approved `Bash(curl:*)`, `Bash(python:*)` and `Bash(bun:*)`. If you cloned before that change, git leaves the old file behind in your working copy, and its permissions still apply on top of `settings.json`. Delete it (or trim it to your own personal overrides):