wiki/requirements.md
Scout - Requirements
Last Updated: 2026-05-14
Product Requirement
Scout must convert web-accessible content into structured, provenance-backed records for downstream use cases such as Algolia indexing, company intelligence, investor intelligence, career/job discovery, and research workflows.
Core Requirements
R1 - Provider-Agnostic Fetch Input
Scout must accept content from multiple providers:
- Hosted WebFetch/WebSearch in skill mode.
- Crawl4AI in standalone mode.
- Browser/session DOM or HTML.
- CDP/profile browser attachment.
- Saved HTML/DOM files.
- PDF/document parser.
- ATS and social providers where relevant.
Acceptance criteria:
- Extractors do not depend directly on Crawl4AI response objects.
- Every fetched page records provider name, source URL, final URL, fetched timestamp, and failure/block status.
- A provider can fail without killing the whole run when another provider can be attempted.
R2 - Domain Record Schemas
Scout must define versioned record schemas for each supported domain.
Initial record types:
ProductRecordExecutiveRecordCompanyPageRecordInvestorDocumentRecordFinancialMetricRecordJobPostingRecordNewsArticleRecordSocialSignalRecordDocumentationPageRecordLocationRecordGenericPageFactRecord
Acceptance criteria:
- Each record includes
objectIDor equivalent stable ID. - Each record includes source provenance.
- Each record includes confidence/completeness metadata.
- Records can be written as JSON and JSONL.
R3 - Discovery Strategies
Scout must discover URLs using the best available route for the use case.
Discovery routes:
- Explicit URLs.
- Known site seed configs.
- WebSearch.
- Sitemap/map.
- Crawl.
- Provider-specific APIs.
- Page-internal links.
Acceptance criteria:
- User can provide explicit URLs to skip discovery.
- Known seed config can override generic guessing.
- Discovery outputs are persisted in
source_pages.jsonor equivalent. - Failed discovery is reported with a reason, not as empty success.
R4 - Extraction And Enrichment
Scout must support both first-pass extraction and enrichment.
Examples:
- Product listing card + PDP enrichment.
- Company about page + leadership page + LinkedIn/provider enrichment.
- Investor index page + PDF report extraction.
- Career landing page + ATS job detail enrichment.
Acceptance criteria:
- A record can be merged from multiple source pages.
- Merge logic prefers higher-confidence fields.
- Field provenance can identify which page supplied a field when useful.
R5 - Artifact Discipline
Every run should write predictable artifacts.
Required artifacts:
records.jsonrecords.jsonlmanifest.jsonsource_pages.jsonblocked_pages.jsonextraction_report.md
Acceptance criteria:
- User can choose output directory.
- Non-interactive mode has a deterministic default output directory.
- Blocked pages and partial results are visible.
- Artifacts are stable enough to test with snapshots.
R6 - Standalone And Skill Distribution
Scout must work as:
- Python package.
- CLI.
- Importable library.
- Local API service.
- Claude/Codex skill.
Acceptance criteria:
- Skill mode can use host tools like WebSearch/WebFetch/browser when available.
- CLI mode can run without host tools using Crawl4AI, saved HTML, CDP/profile, or other standalone providers.
- Documentation clearly marks provider availability by environment.
R7 - Evaluation Harness
Each use case must have tests.
Test layers:
- Unit tests for parsers, normalizers, merge logic.
- Fixture tests from saved HTML/markdown/DOM/PDF samples.
- Contract tests for schemas and artifacts.
- Live smoke tests for selected sites, marked separately from deterministic tests.
Acceptance criteria:
- No use case is "supported" without at least one fixture test and one documented live smoke scenario.
- Hard-site failures produce expected blocked/provider-required artifacts.
Non-Goals For V1
- Fully automated login or authenticated scraping.
- Applying to jobs.
- Bypassing platform controls as a primary design goal.
- Replacing official APIs where official APIs are available and appropriate.
- Full social scraping of LinkedIn/X with raw Crawl4AI.
- Final strategic synthesis without source-backed evidence.