Can the AI Job Search Framework Handle Job Postings from Different Countries?
Yes, the AI Job Search framework features a country-agnostic core architecture that processes job postings from any market through modular portal skills and location-agnostic evaluation workflows.
The MadsLorentzen/ai-job-search repository is designed to handle job postings from different countries without hard-coding geography or language constraints. According to the source code, the framework treats location fields as generic tokens and discovers portal-specific skills dynamically, making it adaptable to any regional job market.
Country-Agnostic Core Architecture
The framework's central workflow makes no assumptions about language or geography. In README.md (lines 42-44), the documentation explains that the self-profiling, fit evaluation, and application drafting processes treat location data as generic "city/region/country" tokens. The evaluation step specifically uses a location_verdict field that can be populated for any country, ensuring the AI assistant can assess location fit regardless of the market.
This design means the core engine processes job metadata uniformly, whether the posting originates from Denmark, Germany, Japan, or remote-global listings.
Built-in Global Portal CLIs
The repository ships with two country-agnostic portal CLIs that work across any market:
LinkedIn Search Skill
Located at .agents/skills/linkedin-search/SKILL.md, this skill accepts a --location argument that accepts cities, regions, countries, or the keyword "Remote". This flexibility allows the same CLI to search LinkedIn's global database without requiring separate skills for each nation.
# Search LinkedIn for data engineering roles in Berlin
linkedin-search \
--query "data engineer" \
--location "Berlin" \
--format table
Freehire Search Skill
The .agents/skills/freehire-search/SKILL.md implementation offers granular geographic filtering through ISO-3166 alpha-2 country codes. The CLI provides --country and --region flags, enabling multi-country searches from a single command.
# Search Freehire for DevOps roles in Germany and the UK
freehire-search \
--category devops \
--country DE,GB \
--remote \
--format json
Extending to New Markets
Adding support for a new country's job board requires creating a new skill folder under .agents/skills/ that follows the repository's JSON/CLI contract. The add-portal command, documented in .claude/commands/add-portal.md, guides users through scaffolding a new portal skill by prompting for market name, language, and geography details.
# Add a new portal for TechJobs.jp (Japan market)
/add-portal
# Prompts for market name, language, and example URL
# Generates .agents/skills/techjobs-jp/ with SKILL.md, CLI scaffold, and tests
# Edit SKILL.md to set enabled: true
Once created and enabled, the skill integrates automatically into the scraping workflow without modifying the core framework code.
Market-Specific Examples
The repository includes four Danish portal examples—Jobindex, Jobnet, Jobbank, and Jobdanmark—located in .agents/skills/. As noted in SETUP.md (lines 29-31), these are disabled by default (enabled: false), ensuring they do not interfere with searches for other markets. Users targeting the Danish market can enable these skills via the front-matter flag without affecting the global functionality.
This pattern demonstrates how the framework accommodates local portals while maintaining a clean separation between market-specific data sources and the core processing engine.
Running the Scraping Workflow
The /scrape command automatically discovers and executes all enabled portal skills. According to .claude/skills/job-scraper/search-queries.md, the scraper walks the directory .agents/skills/*/SKILL.md and runs each skill's CLI if the front-matter flag enabled: true is set.
# Run the full scrape workflow – auto-discovers all enabled skills
/scrape
# Returns uniform schema: {title, company, location, date, url, ...}
This mechanism works for any portal following the skill pattern, regardless of the country it targets, producing a standardized output schema that the country-agnostic core can process.
Summary
- The AI Job Search framework uses a country-agnostic core that processes location data as generic tokens via the
location_verdictfield. - LinkedIn-search and freehire-search provide out-of-the-box global coverage using flexible location and ISO country code parameters.
- New markets are supported by creating portal skills in
.agents/skills/using the guidedadd-portalcommand. - Market-specific portals (like the Danish examples) remain disabled by default to avoid cluttering searches for other regions.
- The
/scrapecommand automatically includes any skill withenabled: true, making extension to new countries seamless.
Frequently Asked Questions
What countries are supported out of the box?
The framework supports global searches immediately through the LinkedIn-search and freehire-search skills. LinkedIn-search accepts any city, region, or country name via the --location flag, while freehire-search accepts ISO-3166 alpha-2 country codes via the --country flag, covering all markets these platforms index.
How do I add a job portal from a specific country?
Use the /add-portal command to scaffold a new skill in .agents/skills/. The command prompts for market details and generates the necessary SKILL.md, CLI scaffold, and test files. After implementing the portal-specific scraping logic, set enabled: true in the front matter to include it in /scrape runs.
Does the framework support non-English job postings?
Yes. Because the core architecture treats text fields as generic tokens and does not hard-code language assumptions, the framework can process job postings in any language. The LLM-based evaluation and drafting steps handle multilingual content naturally, provided the portal skill extracts the text correctly.
Can I search for remote jobs across multiple countries?
Yes. The LinkedIn-search skill accepts "Remote" as a location value, while freehire-search provides a --remote boolean flag that can be combined with multiple country codes (e.g., --country DE,GB,NL --remote). This allows simultaneous searching for remote positions across several countries using a single command.
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →