feat(discovery): blocked countries filter and smoke subprocess fixes
CI / Linting (Biome) (push) Failing after 41s
CI / Tests (push) Successful in 5m27s
CI / Type Check (adzuna-extractor) (push) Successful in 1m9s
CI / Type Check (gradcracker-extractor) (push) Successful in 1m13s
CI / Type Check (hiringcafe-extractor) (push) Successful in 1m9s
CI / Type Check (orchestrator) (push) Successful in 1m24s
CI / Type Check (startupjobs-extractor) (push) Successful in 1m8s
CI / Type Check (ukvisajobs-extractor) (push) Successful in 1m9s
CI / Documentation (push) Successful in 1m59s

Add blockedCountries in Settings so pipeline discovery drops jobs whose
location mentions listed countries (existing discovered rows are kept).
Document the feature, fix smoke tsconfig inheritance for nested extractors,
and run smoke via an absolute-tsconfig wrapper.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-16 11:41:29 -04:00
co-authored by Cursor
parent c840f289e1
commit f5179304c1
27 changed files with 470 additions and 23 deletions
@@ -0,0 +1,56 @@
---
id: blocked-countries
title: Blocked countries
description: Drop jobs during discovery when the listing location mentions a blocked country.
sidebar_position: 7
---
## What it is
**Blocked countries** is the **Blocked countries (location filter)** field in **Settings → Scoring Settings**. Any job whose **location** string mentions a supported country you listed (for example `India`, `UK`, `Poland`) is **dropped during discovery** and is never imported.
Country tokens are normalized to canonical keys (for example `India` → `india`, `UK` → `united kingdom`).
## Why it exists
Global and remote boards often return roles tagged to countries you do not want (for example India-remote QA listings while you target Canada). This filter applies at import time so those rows never enter your **Discovered** queue.
## How to use it
1. Open **Settings** and expand **Scoring Settings**.
2. Find **Blocked countries (location filter)**.
3. Add country names or aliases one at a time, or paste a comma- or newline-separated list.
4. Click **Save Changes**.
5. Run the pipeline again — blocked countries apply to **new discovery only**; they do **not** delete jobs already in the database.
### Tips
- Use country names as they appear on listings: `India`, `Poland`, `United Kingdom`, or aliases `UK`, `USA`.
- Listings with **no recognizable country** in the location field (for example `Remote` only) are **kept**, not blocked.
- The list is capped in Settings validation (max 50 entries, each up to 100 characters).
- Pair with **Search cities** / **country** settings to narrow what extractors query; blocked countries filter what still comes back from broad boards.
### Maintenance
- **Add** countries when you see unwanted geography on new runs.
- **Remove** a country if you blocked too aggressively — save, then run discovery again.
- **Existing jobs** are unchanged; use Jobs filters or **Danger Zone** only if you want to clear old rows.
## Common problems
### Blocked countries still appear
- Confirm you clicked **Save Changes**.
- Only **new** pipeline runs apply the filter. Jobs already imported stay in **Discovered** until you skip or delete them.
- If the listing location does not mention the country (for example only `Remote`), the job is intentionally kept.
### Too many jobs disappeared
- Check whether a broad alias matched unexpectedly. Remove or narrow the token.
## Related pages
- [Company skip list](./company-skip-list)
- [Settings](/docs/features/settings)
- [Pipeline Run](/docs/features/pipeline-run)
- [Orchestrator](/docs/features/orchestrator)
@@ -48,6 +48,7 @@ You may want to avoid certain agencies, staffing brands, or employers without ha
## Related pages
- [Blocked countries](./blocked-countries)
- [Settings](/docs/features/settings)
- [Pipeline Run](/docs/features/pipeline-run)
- [Orchestrator](/docs/features/orchestrator)
+5 -1
View File
@@ -105,7 +105,10 @@ When new listings are imported, JobOps does not create a second database row if
Existing jobs keep their stored URL; new imports use the canonical form so the same role is not added again under a slightly different link.
To drop companies before import, configure a **company skip list** (blocked company keywords) in **Settings → Scoring Settings**. See [Company skip list](./company-skip-list).
To drop listings before import, use **Settings → Scoring Settings**:
- [Company skip list](./company-skip-list) — blocked **employer** keywords
- [Blocked countries](./blocked-countries) — drop jobs whose **location** mentions a country you list (for example India)
## Common problems
@@ -140,6 +143,7 @@ To drop companies before import, configure a **company skip list** (blocked comp
## Related pages
- [Company skip list](./company-skip-list)
- [Blocked countries](./blocked-countries)
- [Find Jobs and Apply Workflow](/docs/next/workflows/find-jobs-and-apply-workflow)
- [Manual Import Extractor](/docs/next/extractors/manual)
- [Orchestrator](/docs/next/features/orchestrator)
+2
View File
@@ -170,6 +170,7 @@ Readiness requires:
- Set penalty amount
- Optional auto-skip threshold for low-score jobs
- **Company skip list** (blocked company keywords): drop listings during discovery when the employer name contains a token — see [Company skip list](./company-skip-list)
- **Blocked countries** (location filter): drop listings when the job location mentions a listed country — see [Blocked countries](./blocked-countries)
- Add custom scoring instructions to tell the AI what to weigh more or less
### Danger Zone
@@ -262,6 +263,7 @@ curl -X POST "http://localhost:3001/api/backups"
## Related pages
- [Company skip list](./company-skip-list)
- [Blocked countries](./blocked-countries)
- [Reactive Resume](/docs/next/features/reactive-resume)
- [Database Backups](/docs/next/getting-started/database-backups)
- [Overview](/docs/next/features/overview)