Scan strategies

Scan strategies #

portals.example.yml documents a 4-level strategy for job discovery beyond default tiers. This page maps each level to what Raven runs automatically today.


Four levels (from portals.example.yml) #

Level 0. local_parser  → custom script per company
Level 1. Playwright    → browser scrape of careers_url
Level 2. HTTP JSON     → public ATS/board APIs (providers)
Level 3. WebSearch     → site: filtered search queries

Default raven discover uses HTTP JSON at scale (ATS reverse scan + board feeds) — not levels 0–1 per company, and not level 3.


Implementation status #

StrategyConfigAuto in discover?Notes
HTTP providersprovider:, api:Yes (ATS + boards)Primary path
local_parserparser: blockNoscan.mjs only
Playwrightscan_method: playwrightNo--verify / --liveness only
search_queriesYAML arrayNoNot read by any module
scan_method: websearchper companyNoHandoff log at end of scan
ATS reverse scanCLIYesThousands of companies
Local indexsync-jobsYesSQLite query

WebSearch (not automated) #

search_queries #

search_queries:
  - name: Greenhouse — AI Engineer
    query: 'site:job-boards.greenhouse.io "AI Engineer" remote'
    enabled: true

Documented for broad site: discovery. No jobs/*.mjs module reads this today.

scan_method: websearch #

When scan.mjs cannot match an HTTP provider:

Agent/WebSearch handoff: N companies not handled by zero-token providers
  • Company (websearch) — site:example.com "engineer"

No search API is called. No offers added.


Which command when? #

GoalCommand
Broad automated searchraven discover
ATS onlyraven scan-ats
Boards onlyraven discover --sources boards
Offline indexraven sync-jobs + raven discover --sources index