Claude Job Search Assistant

# AI Job Search An AI-powered job application framework built on [Claude Code](https://claude.com/claude-code). Fork it, fill in your profile, and let Claude evaluate job postings, tailor your CV, write cover letters, and prepare you for interviews. ## What this is A structured workflow that turns Claude Code into a full-stack job application assistant. The core workflow (self-profiling, fit evaluation, and the drafter-reviewer application pipeline) is **language- and country-agnostic**. The job portal search skills are built for the Danish market (Jobindex, Jobnet, Akademikernes Jobbank, etc.), but the pattern is designed to be swapped for your local job boards. ``` /setup /scrape /apply | | | v v v Fill in Search job Evaluate fit your profile portals Score & recommend | | | v v v Profile Present matches Draft CV + Cover Letter files ready with fit ratings (LaTeX, tailored) | | v v Pick a match Reviewer agent critiques -> /apply -> Revise -> Final output ``` The framework encodes career guidance best practices, including structured evaluation criteria, forward-looking cover letter framing, and optional salary benchmarking. ## Prerequisites - [Claude Code](https://claude.com/claude-code) (CLI) - Python 3.10+ - [Bun](https://bun.sh) (for Danish job search CLI tools) - LaTeX distribution (for compiling CVs and cover letters): [TeX Live](https://tug.org/texlive/) or [MiKTeX](https://miktex.org/) ## Quick start ### 1. Fork and clone ```bash gh repo fork MadsLorentzen/ai-job-search --clone cd ai-job-search ``` ### 2. Install job search tools ```bash cd .agents/skills/jobbank-search/cli && bun install && cd ../../../.. cd .agents/skills/jobdanmark-search/cli && bun install && cd ../../../.. cd .agents/skills/jobindex-search/cli && bun install && cd ../../../.. cd .agents/skills/jobnet-search/cli && bun install && cd ../../../.. ``` ### 3. Set up your profile ```bash claude # Then inside Claude Code: /setup ``` Claude will ask about your background, skills, and career goals, then populate all profile files automatically. You can import from an existing CV or answer questions interactively. The setup also configures your job search queries so `/scrape` works immediately. ### 4. Search for jobs ```bash /scrape ``` This searches multiple job portals for positions matching your profile, deduplicates results, and presents them sorted by fit. Pick a match to run `/apply` on it directly. ### 5. Apply to a job ```bash /apply https://jobindex.dk/job/1234567 ``` If the URL can't be fetched (some job portals block automated access), you can paste the job description directly instead: ```bash /apply ``` This runs the full workflow: evaluate fit, draft CV + cover letter, review with a second agent, revise, and present the final output. ## File structure ``` ai-job-search/ ├── CLAUDE.md # Main candidate profile + workflow rules ├── .claude/ │ ├── commands/ │ │ ├── apply.md # /apply workflow (drafter-reviewer) │ │ └── setup.md # /setup onboarding interview │ ├── skills/ │ │ ├── job-application-assistant/ # Core application skill │ │ │ ├── SKILL.md # Skill definition │ │ │ ├── 01-candidate-profile.md # Your education, experience, skills │ │ │ ├── 02-behavioral-profile.md# PI/DISC/personality assessment │ │ │ ├── 03-writing-style.md # Tone, structure, do's and don'ts │ │ │ ├── 04-job-evaluation.md # Scoring framework for job fit │ │ │ ├── 05-cv-templates.md # LaTeX CV structure + tailoring rules │ │ │ ├── 06-cover-letter-templates.md # LaTeX cover letter templates │ │ │ └── 07-interview-prep.md # STAR examples + interview framework │ │ └── job-scraper/ # Job search orchestration │ └── settings.local.json # Claude Code permissions ├── .agents/skills/ # Job portal CLI tools (Denmark) │ ├── jobbank-search/ # Akademikernes Jobbank │ ├── jobdanmark-search/ # Jobdanmark.dk │ ├── jobindex-search/ # Jobindex.dk │ └── jobnet-search/ # Jobnet.dk (government portal) ├── cv/ │ └── main_example.tex # moderncv LaTeX template ├── cover_letters/ │ ├── cover.cls # Custom cover letter LaTeX class │ └── OpenFonts/ # Lato + Raleway fonts ├── salary_lookup.py # Salary benchmarking tool (BYO data) ├── tools/ │ ├── convert_salary_excel.py # Convert salary Excel to JSON │ └── README_SALARY_TOOL.md # Salary tool setup instructions ├── job_scraper/ # Scraper state (seen jobs, results) ├── job_search_tracker.csv # Application tracking spreadsheet └── SETUP.md # Detailed setup guide ``` ## How `/apply` works The `/apply` command runs a **drafter-reviewer workflow**: 1. **Parse** the job posting (URL or text) 2. **Evaluate fit** against your profile (skills, experience, culture, location, career alignment) 3. **Draft** a tailored CV and cover letter in LaTeX 4. **Spawn a reviewer agent** that researches the company and critiques the drafts 5. **Revise** based on the reviewer's feedback 6. **Present** the final output with a verification checklist All claims in the CV and cover letter are verified against your actual profile. The system never fabricates skills or experience. ## Customization ### Which files to edit manually If you prefer editing files directly instead of using `/setup`: | File | What to change | |------|---------------| | `CLAUDE.md` | Your full profile (name, education, experience, skills, goals) | | `01-candidate-profile.md` | Structured version of your CV data | | `02-behavioral-profile.md` | Your behavioral assessment or self-assessment | | `04-job-evaluation.md` | Skill match areas, career goals, motivation filters | | `05-cv-templates.md` | Profile statement templates for different role types | | `07-interview-prep.md` | Your STAR examples from actual experience | | `search-queries.md` | Job search queries for your skills and location | ### Updating your search queries As your priorities evolve, you can reconfigure just the job search without re-running the full profile setup: ``` /setup --section search ``` This re-runs the search configuration interview: which roles to target, which skills to search for, which locations, and which portals. It also suggests role types you may not have considered based on your profile. ### LaTeX templates The CV uses [moderncv](https://ctan.org/pkg/moderncv) (banking style). The cover letter uses a custom `cover.cls` with Lato/Raleway fonts. You can replace these with your own templates; just update the guidance in `05-cv-templates.md` and `06-cover-letter-templates.md`. ### Job search tools The four CLI tools in `.agents/skills/` are specific to the **Danish job market** (Jobbank, Jobdanmark, Jobindex, Jobnet). They demonstrate the pattern for building job portal integrations. If you're in a different country, you can build equivalent tools for your local job portals using the same structure. ### Salary benchmarking The salary tool works with any salary data you provide (union statistics, Glassdoor exports, personal research, etc.). See `tools/README_SALARY_TOOL.md` for the expected format and setup. If you don't have salary data, the salary step is simply skipped. ## Tips for better results ### Profile depth matters The single biggest factor in output quality is how much detail you put into your profile. A thin profile produces generic applications; a detailed one enables genuinely tailored results. - **Role descriptions:** Don't just list job titles. Describe what you actually did in each position: specific projects, tools used, responsibilities, and measurable achievements. The more material you provide, the more precisely the system can reframe your experience for different roles. - **Skills in context:** Instead of listing "Python" or "project management," describe how and where you applied them. "Built ML pipelines for customer churn prediction in Python using scikit-learn" gives the system far more to work with than "Python, machine learning." - **Either onboarding path works:** Whether you import an existing CV or answer questions interactively via `/setup`, the principle is the same: richer input produces sharper output. ### Career path discovery The framework supports two distinct modes of job searching: - **Explicit targeting:** You know which roles or sectors you want. The system helps refine and prioritize based on fit. - **Latent opportunity discovery:** By analyzing your full history (not just job titles, but the actual work you did), the system can surface career paths you haven't considered. Transferable skills that map to unexpected industries, patterns in what you enjoyed or excelled at, or emerging roles that combine your domain expertise with new technology. To get the most from this, invest time during `/setup` in describing not just your experience, but what energized you, what drained you, and what you'd want more of. This context directly shapes how the system evaluates fit and which roles it surfaces during `/scrape`. ## Acknowledgements - [Mikkel Krogholm](https://github.com/mikkelkrogsholm) ([skills repo](https://github.com/mikkelkrogsholm/skills)) for the job search CLI skills - Built with [Claude Code](https://claude.com/claude-code) by [Anthropic](https://anthropic.com) ## License MIT