mirror of
https://github.com/MadsLorentzen/ai-job-search.git
synced 2026-09-17 08:36:25 +00:00
Follow-up to #20: the linkedin-search CLI landed without being added to the bun install instructions. Included in both lists with a note that the install is optional (zero runtime dependencies, dev types only). Also updated the README file tree and Bun prerequisite wording to reflect that the toolset is no longer Denmark-only. Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
176 lines
5.7 KiB
Markdown
176 lines
5.7 KiB
Markdown
# Setup Guide
|
|
|
|
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 job portal CLIs (four Danish portals plus the country-agnostic LinkedIn tool) 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:
|
|
|
|
- **Windows:** [MiKTeX](https://miktex.org/download)
|
|
- **macOS:** [MacTeX](https://tug.org/mactex/)
|
|
- **Linux:** `sudo apt install texlive-full` or `sudo dnf install texlive-scheme-full`
|
|
|
|
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.
|
|
|
|
## 2. Fork and clone
|
|
|
|
```bash
|
|
gh repo fork MadsLorentzen/ai-job-search --clone
|
|
cd ai-job-search
|
|
```
|
|
|
|
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 linkedin-search; do
|
|
cd .agents/skills/$tool/cli && bun install && cd ../../../..
|
|
done
|
|
```
|
|
|
|
For `linkedin-search` the install is optional: it has zero runtime dependencies and runs with plain `bun`; `bun install` only pulls TypeScript dev types.
|
|
|
|
## 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.
|
|
|
|
### What gets populated
|
|
|
|
| File | Content |
|
|
|------|---------|
|
|
| `CLAUDE.md` | Your full candidate profile |
|
|
| `01-candidate-profile.md` | Structured education, experience, skills |
|
|
| `02-behavioral-profile.md` | Behavioral assessment |
|
|
| `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.
|
|
|
|
## 6. Test the workflow
|
|
|
|
Find a job posting you're interested in, then:
|
|
|
|
```
|
|
/apply https://jobindex.dk/job/1234567
|
|
```
|
|
|
|
Or paste the job description directly:
|
|
|
|
```
|
|
/apply [paste job posting text here]
|
|
```
|
|
|
|
Claude will:
|
|
1. Evaluate the fit against your profile
|
|
2. Ask if you want to proceed
|
|
3. Draft a tailored CV and cover letter
|
|
4. Have a reviewer agent critique the drafts
|
|
5. Revise and present the final output
|
|
|
|
## 7. Compile your documents
|
|
|
|
After `/apply` creates the LaTeX files:
|
|
|
|
```bash
|
|
# Compile CV
|
|
cd cv && lualatex main_<company>.tex && cd ..
|
|
|
|
# Compile cover letter
|
|
cd cover_letters && xelatex cover_<company>_<role>.tex && cd ..
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
### "salary_data.json not found"
|
|
This is expected if you haven't set up salary benchmarking. The `/apply` workflow skips this step automatically.
|
|
|
|
### Job search CLI tools not working
|
|
Make sure Bun is installed and you ran `bun install` in each CLI directory. The tools require network access to fetch job listings.
|
|
|
|
### LaTeX compilation errors
|
|
- CV: uses `lualatex` (pdflatex often fails on modern MiKTeX with `fontawesome5` font-expansion errors; lualatex handles the same sources cleanly)
|
|
- 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):
|
|
|
|
```bash
|
|
rm .claude/settings.local.json
|
|
```
|