Skip to main content

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
By default, /scrape runs the top three priority query categories from your search-queries.md file. You can narrow or widen the search with optional arguments:
# Focus on a specific area
/scrape data science

# Run all query categories (wider net)
/scrape broad
When a scrape runs, the framework:
  1. Executes parallel WebSearch queries across all configured portals.
  2. Fetches each promising result to extract the job title, company, location, posting date, key requirements, application deadline, and URL.
  3. Deduplicates against job_scraper/seen_jobs.json (jobs you’ve already seen) and job_search_tracker.csv (jobs you’ve already applied to or tracked).
  4. Assigns a quick fit rating — High, Medium, or Low — based on how well the role matches your core skills.
  5. Presents new matches in a table sorted by fit, with 2–3 highlight bullets for high-match roles.
All results are stored in seen_jobs.json so the next scrape never shows you the same posting twice.

Supported Portals

PortalCoverageNotes
JobindexDenmarkThe largest Danish job board; covers roles across all industries and experience levels
Akademikernes JobbankDenmarkThe Danish academic unions’ job portal; strong coverage of graduate, science, and professional roles
JobdanmarkDenmarkMajor Danish generalist job board with broad industry coverage
JobnetDenmarkThe Danish government’s official job portal; includes public sector and regulated roles
LinkedInCountry-agnosticBuilt 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
Each portal has its own CLI skill in .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:
### Priority 1: [YOUR_PRIMARY_ROLE_TYPE]
# Your strongest and most desired career direction
site:jobindex.dk "[YOUR_PRIMARY_JOB_TITLE]" [YOUR_CITY]
site:jobindex.dk "[YOUR_KEY_SKILL]" [YOUR_CITY]
site:linkedin.com/jobs "[YOUR_PRIMARY_JOB_TITLE]" [YOUR_COUNTRY]

### Priority 2: [YOUR_DOMAIN_EXPERTISE]
# Your domain expertise
site:jobindex.dk [YOUR_DOMAIN_KEYWORD_1] [YOUR_CITY] OR [YOUR_REGION]
site:jobindex.dk [YOUR_DOMAIN_KEYWORD_2] [YOUR_COUNTRY]

### Priority 3: [YOUR_ADJACENT_ROLE_TYPE]
# Adjacent roles you could pivot into
site:jobindex.dk "[YOUR_ADJACENT_TITLE_1]" [YOUR_KEY_SKILL] [YOUR_CITY]

### Priority 4: Broader Technical / Consulting
# Wider net
site:jobindex.dk [YOUR_KEY_SKILL] developer [YOUR_CITY]
site:linkedin.com/jobs "[YOUR_KEY_SKILL] developer" [YOUR_CITY]
Each query is also paired with a location filter that defines which cities and regions are acceptable, borderline, or too far for your commute. To reconfigure your search queries after your priorities change — without re-running the full profile setup — use:
/setup --section search
When a scrape returns more than roughly 8 new postings, run /rank before picking which ones to apply to. /rank batch-scores every new posting against your full fit framework using parallel agents, applies deal-breaker vetoes, and flags urgent deadlines — so you invest /apply effort where the signal is strongest, not just where the title looks appealing.
For more on batch scoring, see the /rank command guide. To add a portal for your local job market, see the /add-portal command.

Build docs developers (and LLMs) love