01-research.md
Scout Leadership Intel — Research + Technical Context
Created: 2026-05-05
Sources
- Scout skill/command file:
~/.claude/commands/scout.md - Scout API source:
/Users/arijitchowdhury/AI-Development/Scout/scout/core/types.py - Scout project memory:
~/.claude/projects/-Users-arijitchowdhury-AI-Development-PIP/memory/project_scout_crawler.md - Scout eval data:
~/.claude/scout-skill-workspace/iteration-2/eval-1-exec-team/
Scout Platform — What It CAN Do
Scout exposes 5 POST endpoints at http://localhost:8421, all authenticated via X-API-Key: dev-key:
| Endpoint | Use in this feature | Timeout |
|---|---|---|
/health |
Pre-flight check (no auth required) | fast |
/map |
Discover all URLs on a company domain | 60s |
/scrape |
Fetch a single page as markdown or raw HTML | 45s |
/crawl |
Multi-page deep crawl of a section | 120s |
/extract |
Structured extraction via CSS schema or LLM | 60s |
/screenshot |
Visual capture | 30s |
Core integration pattern (Map → Filter → Scrape):
1. POST /map {"url": "https://company.com", "max_pages": 200} → discover all URLs
2. Filter urls[] for leadership patterns
3. POST /scrape {"url": "<best_match>", "use_js": true} → markdown content
4. If sparse: retry with {"formats": ["raw_html"]} → parse HTML card patterns
ScrapeRequest shape:
{
"url": "https://apple.com/leadership",
"formats": ["markdown"],
"use_js": true,
"wait_for": ".team-grid",
"timeout_ms": 30000
}
ScrapeResponse fields relevant to this feature:
- markdown: str — primary extraction target
- raw_html: str — fallback for JS-card pages
- links: list[str] — for LinkedIn URL harvesting
- metadata.crawled_at: str — source timestamp for attribution
- success: bool + error: str — for failure reporting
- duration_ms: int — for latency tracking
ExtractRequest shape (LLM or CSS):
{
"url": "https://apple.com/leadership",
"css_schema": {
"baseSelector": ".leadership-card",
"fields": [
{"name": "name", "selector": "h3", "type": "text"},
{"name": "title", "selector": ".role", "type": "text"}
]
}
}
Scout Platform — What It CANNOT Do
- Not a general-purpose scraper — optimised for 5 specific intel types only
- No parallel crawls — single-instance; sequential only
- No access to authenticated or login-gated pages
- ATS SPA job boards (Workday, Greenhouse React): JS XHR interception gap
/extractwith LLM requiresLLM_API_KEYin Scout.env; CSS fallback works without it- localhost URLs cannot be fetched via WebFetch (sandbox restriction — use curl/bash)
Real-World Performance (Eval Data)
From eval-1-exec-team on algolia.com (iteration 2):
- 75% pass rate on exec extraction (3/4 assertions passed)
- Map-first is mandatory — standard leadership URL paths can 404
- formats: ["raw_html"] is the reliable path for JS-heavy card layouts
- Exec data from press releases (fallback) may be stale vs. current leadership page
- Leadership URL patterns vary: /about/leadership, /about/team, /company/management — no single correct path
Scout Status
- Feature complete as of 2026-05-04
- 78/78 unit tests passing
- Source:
/Users/arijitchowdhury/AI-Development/Scout/ - Start command:
cd /Users/arijitchowdhury/AI-Development/Scout && python3 -m uvicorn scout.api.main:app --host 0.0.0.0 --port 8421 - Built on Crawl4AI (Apache 2.0) + Playwright