How to Update Only the Search Configuration in the AI Job Search Framework

Edit the search-queries.md file in .claude/skills/job-scraper/ to modify search queries without changing any scraping logic, and toggle portal enabled flags in individual SKILL.md files to disable specific sources.

The AI Job Search framework by MadsLorentzen/ai-job-search separates query definitions from execution logic, allowing you to update only the search configuration without touching Python or TypeScript code. This modular design means you can refine job board targets, adjust query strings, and enable or disable specific portals by editing markdown configuration files that the scraper reads at runtime.

Locate the Central Search Configuration

All customizable search queries reside in .claude/skills/job-scraper/search-queries.md. According to the framework's skill definition in .claude/skills/job-scraper/SKILL.md, the scraper reads this file during step 0-3 of its execution workflow. This file drives the entire job-scraping process by providing the query strings used for portal CLIs and fallback WebSearch queries.

Modify Query Templates and Categories

Inside search-queries.md, queries are organized under structured markdown headings. The scraper parses these sections to determine which sites to query and what search terms to use.

Update Site-Specific Queries

Each query is a plain-text line defined under the "## Search Sites" and "### Query Categories" sections. These lines are passed directly to portal CLIs or used as fallback WebSearch queries when specific integrations fail. To customize your search:

  1. Replace placeholder values like [YOUR_JOB_BOARD] with actual board URLs.
  2. Insert your specific city, region, or role requirements.
  3. Adjust the priority order to favor certain sources.

## Search Sites

### Primary (your market's job boards)

- **https://www.examplejobs.com** - largest general board
- **linkedin.com/jobs** - LinkedIn listings (filter: Denmark / Copenhagen)
- **https://techcareers.io** - niche tech board

Add or Remove Search Terms

You can append new queries dynamically using standard shell commands. These additions take effect on the next scrape cycle:


# Add a priority-1 query for a senior data-engineer role

echo 'site:https://www.examplejobs.com "Senior Data Engineer" Copenhagen' >> .claude/skills/job-scraper/search-queries.md

Disable Individual Portals via Frontmatter

To temporarily stop querying a specific portal without deleting its configuration, modify the individual portal skill files located under .agents/skills/*. Each portal maintains a SKILL.md file that respects an enabled frontmatter flag. If this flag is omitted, the portal defaults to enabled.

To disable a portal, set enabled: false in the YAML frontmatter:

---
name: freehire-search
description: Search Freehire job portal
enabled: false   # <-- set to false to skip this portal

---

This change requires no code modifications—the scraper checks this flag before executing portal-specific logic.

Apply Changes Without Rebuilding

Because the framework reads search-queries.md fresh during each run (specifically at Step 0-3), no restart or rebuild is required. The CLI discovery, result parsing, deduplication, and ranking logic remain completely untouched when you update only the search configuration. Simply save your changes to the markdown file.

Verify Your Configuration Updates

Run the scrape command to validate your changes:

/ai-job-search $ /scrape

Inspect the output job table to confirm that new queries appear and disabled portals are skipped. The system files job_scraper/seen_jobs.json (deduplication state) and job_search_tracker.csv (application history) remain unchanged by configuration updates, preserving your existing workflow data.

Summary

  • The search configuration lives exclusively in .claude/skills/job-scraper/search-queries.md, separate from scraping logic.

  • Edit query templates under "## Search Sites" and "### Query Categories" to redefine search targets.

  • Toggle portal participation by setting enabled: false in individual .agents/skills/*/SKILL.md frontmatter.

  • Changes take effect immediately on the next /scrape invocation without restarting the framework.

  • Core processing files like seen_jobs.json and job_search_tracker.csv remain unaffected by configuration updates.

Frequently Asked Questions

Where is the search configuration stored in the AI Job Search framework?

The primary search configuration is stored in .claude/skills/job-scraper/search-queries.md. This file contains all site-specific query templates and categories that the scraper reads at runtime during Step 0-3 of its execution cycle.

Do I need to restart the application after editing search-queries.md?

No. The framework reads the configuration file fresh on every /scrape invocation. Because the scraper loads queries dynamically during Step 0-3, changes apply immediately without rebuilding or restarting the service.

How do I temporarily disable a specific job board?

Navigate to the portal's skill directory under .agents/skills/ (for example, .agents/skills/freehire-search/) and edit its SKILL.md file. Set enabled: false in the YAML frontmatter. The scraper checks this flag before querying the portal, allowing you to disable sources without modifying any search queries.

Will updating the search configuration affect my existing job application tracking data?

No. Files like job_scraper/seen_jobs.json (which stores deduplication state) and job_search_tracker.csv (which tracks applied positions) remain completely untouched when you update only the search configuration. These data files are decoupled from the query definition system.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →