Brand Scout
Capture evidence before strategy. Your job is not to be creative yet; it is to prevent hallucinated creative direction.
Output Contract
Produce scout.json with:
url, title, meta_description, og_title, og_description
h1[], image_urls[]
- visible product/category/tone clues
- structured extraction fields:
product_name, brand_name, product_type, product_category, price,
variants, claims_benefits, ingredients_materials_specs,
visible_packaging_text_candidates, image_evidence, field_confidence,
extraction_warnings
degraded_mode and note
scrape_provenance (object) recording which adapter ran:
{scraper, scraper_version, scraped_at, request_url, fixture_used, forced_by, firecrawl_meta?}.
Executable module owner path:
scripts/modules/brand_scout.py --url <product-url> --packet <packet-dir> -> scout.json
scripts/scout-structured.py --in <scout.json> --out <scout.json> for structured enrichment only.
Scraper selection on the module:
--scraper {auto,curl,firecrawl} (default auto).
auto follows env precedence: BSK_FORCE_SCRAPER (used by ./evals/run.py) → FIRECRAWL_API_KEY → curl default.
- Firecrawl failures exit code 2 with a one-line
--scraper curl recovery hint.
Rules
- Evidence first, inference second.
- Mark confidence. Do not launder guesses into facts.
- If fetch fails, ask for PDP copy plus 3-5 product image URLs/uploads.
- Never scrape gated/private pages.
- Never drift into ad intelligence.
Quality Bar
A downstream agent should be able to cite where each product, tone, visual, and preservation clue came from.
1---2name: brand-scout3description: Extract brand/product evidence from an ecommerce product URL before any Brand Shoot Kit planning or generation. Use for PDP scouting, source evidence capture, product image URL collection, degraded-mode notes, and scout.json creation. Do not use for ad spying or competitor ad research.4---56# Brand Scout78Capture evidence before strategy. Your job is not to be creative yet; it is to prevent hallucinated creative direction.910## Output Contract1112Produce `scout.json` with:13- `url`, `title`, `meta_description`, `og_title`, `og_description`14- `h1[]`, `image_urls[]`15- visible product/category/tone clues16- structured extraction fields:17 `product_name`, `brand_name`, `product_type`, `product_category`, `price`,18 `variants`, `claims_benefits`, `ingredients_materials_specs`,19 `visible_packaging_text_candidates`, `image_evidence`, `field_confidence`,20 `extraction_warnings`21- `degraded_mode` and `note`22- `scrape_provenance` (object) recording which adapter ran:23 `{scraper, scraper_version, scraped_at, request_url, fixture_used, forced_by, firecrawl_meta?}`.2425Executable module owner path:26- `scripts/modules/brand_scout.py --url <product-url> --packet <packet-dir>` -> `scout.json`27- `scripts/scout-structured.py --in <scout.json> --out <scout.json>` for structured enrichment only.2829Scraper selection on the module:30- `--scraper {auto,curl,firecrawl}` (default `auto`).31- `auto` follows env precedence: `BSK_FORCE_SCRAPER` (used by `./evals/run.py`) → `FIRECRAWL_API_KEY` → curl default.32- Firecrawl failures exit code 2 with a one-line `--scraper curl` recovery hint.3334## Rules3536- Evidence first, inference second.37- Mark confidence. Do not launder guesses into facts.38- If fetch fails, ask for PDP copy plus 3-5 product image URLs/uploads.39- Never scrape gated/private pages.40- Never drift into ad intelligence.4142## Quality Bar4344A downstream agent should be able to cite where each product, tone, visual, and preservation clue came from.