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.
/scrape searches multiple job portals using the queries configured during /setup, deduplicates results against jobs you’ve already seen or applied to, and presents new matches sorted by fit. The built-in portal skills cover the Danish job market — Jobindex, Akademikernes Jobbank, Jobdanmark, and Jobnet — plus LinkedIn, which works for any country. If your market isn’t covered, the /add-portal command can generate a custom portal integration from any job board URL.
Running a Scrape
/scrape runs the top three priority query categories from your search-queries.md file. You can narrow or widen the search with optional arguments:
- Executes parallel
WebSearchqueries across all configured portals. - Fetches each promising result to extract the job title, company, location, posting date, key requirements, application deadline, and URL.
- Deduplicates against
job_scraper/seen_jobs.json(jobs you’ve already seen) andjob_search_tracker.csv(jobs you’ve already applied to or tracked). - Assigns a quick fit rating — High, Medium, or Low — based on how well the role matches your core skills.
- Presents new matches in a table sorted by fit, with 2–3 highlight bullets for high-match roles.
seen_jobs.json so the next scrape never shows you the same posting twice.
Supported Portals
| Portal | Coverage | Notes |
|---|---|---|
| Jobindex | Denmark | The largest Danish job board; covers roles across all industries and experience levels |
| Akademikernes Jobbank | Denmark | The Danish academic unions’ job portal; strong coverage of graduate, science, and professional roles |
| Jobdanmark | Denmark | Major Danish generalist job board with broad industry coverage |
| Jobnet | Denmark | The Danish government’s official job portal; includes public sector and regulated roles |
| Country-agnostic | Built on LinkedIn’s public jobs-guest endpoints; takes location as an explicit flag so it works for any market. Zero runtime dependencies — runs with just bun. Intended for personal use only; keep query volume low |
.agents/skills/. The skills share the same output contract so /scrape can aggregate results from all of them uniformly.
After Scraping
Once results are presented, you have two options: Apply directly. Pick any job by number and/scrape will hand it off to the full /apply workflow — fit evaluation, CV drafting, reviewer agent, PDF compilation, and ATS check.
Batch-rank first. When a scrape returns many results, eyeballing a long table is less reliable than a systematic score. Run /rank to batch-score all newly scraped postings against the full fit framework and get a ranked shortlist with honest per-job strengths, gaps, and deal-breaker flags before deciding where to invest /apply effort.
How search-queries.md Powers the Scraper
Your search configuration lives in.claude/skills/job-scraper/search-queries.md. This file is generated by /setup (Section 9 in interview mode, or the equivalent follow-up questions in documents and CV-import modes) and is what /scrape reads to know which queries to run.
The file organises queries into four priority tiers so the scraper can run the most targeted searches by default and fall back to a wider net when you ask for it: