056c47581f
Ships the second dashboard surface — a Pattern Library + Preview Theatre — that presents the 4-section PDP pilot batch back to Umar, compliance, and the board in an editorial format. Adds the full data layer that drives it: 5 source-backed per-SKU drafts at QA 100/100, 15 competitor PDP semantic extracts, PubMed evidence packs, EFSA claims library extension, JV brand voice guide, hand-curated product FAQs, and the Matrixify-ready CSV exports for Lewis. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
136 lines
4.8 KiB
JSON
136 lines
4.8 KiB
JSON
{
|
|
"generatedAt": "2026-05-20T16:41:07.121Z",
|
|
"ready": false,
|
|
"recommendation": "Top-3 scraping budget raised for hundreds of items. Run capped first-batch targets, inspect the dataset, then decide whether to scale toward 1000 items per product/source.",
|
|
"counts": {
|
|
"targets": 7,
|
|
"firstBatchTargets": 3,
|
|
"holdTargets": 4,
|
|
"existingPdpProbes": 7
|
|
},
|
|
"guardrails": {
|
|
"runOrder": "DataForSEO Stage 1 first; Apify Stage 2 only for named gaps.",
|
|
"hardCap": "One actor lane, first 3 brands, max 100 requests per brand, max depth 1, then stop for dataset inspection.",
|
|
"rejectIf": [
|
|
"blocked pages",
|
|
"duplicate content",
|
|
"no source URLs",
|
|
"no useful PDP/review/claim text",
|
|
"cost unclear before scaling"
|
|
]
|
|
},
|
|
"files": {
|
|
"targetsCsv": "content_population_exports/apify_gapfill_targets.csv",
|
|
"runbook": "content_population_exports/apify_gapfill_runbook.md",
|
|
"actorInputTemplate": "content_population_exports/apify_competitor_pdp_input_template.json",
|
|
"rawOutputTemplate": "data/sources/apify/raw/_apify-output-template.json"
|
|
},
|
|
"targets": [
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "pilot_gapfill",
|
|
"Brand": "Feel",
|
|
"Domain": "wearefeel.com",
|
|
"StartUrl": "https://wearefeel.com/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "yes",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/feel.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/feel.json",
|
|
"Reason": "Competitor PDP/domain: wearefeel.com"
|
|
},
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "pilot_gapfill",
|
|
"Brand": "Ancient & Brave",
|
|
"Domain": "ancientandbrave.earth",
|
|
"StartUrl": "https://ancientandbrave.earth/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "yes",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/ancient-and-brave.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/ancient-and-brave.json",
|
|
"Reason": "Competitor PDP/domain: ancientandbrave.earth"
|
|
},
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "pilot_gapfill",
|
|
"Brand": "Heights",
|
|
"Domain": "heights.com",
|
|
"StartUrl": "https://www.heights.com/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "yes",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/heights.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/heights.json",
|
|
"Reason": "Competitor PDP/domain: heights.com"
|
|
},
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "hold_until_pilot_review",
|
|
"Brand": "Wild Nutrition",
|
|
"Domain": "wildnutrition.com",
|
|
"StartUrl": "https://www.wildnutrition.com/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "no",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/wild-nutrition.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/wild-nutrition.json",
|
|
"Reason": "Competitor PDP/domain: wildnutrition.com"
|
|
},
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "hold_until_pilot_review",
|
|
"Brand": "Dirtea",
|
|
"Domain": "dirteaworld.com",
|
|
"StartUrl": "https://www.dirteaworld.com/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "no",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/dirtea.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/dirtea.json",
|
|
"Reason": "Competitor PDP/domain: dirteaworld.com"
|
|
},
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "hold_until_pilot_review",
|
|
"Brand": "Ethical Nutrition",
|
|
"Domain": "ethical-nutrition.com",
|
|
"StartUrl": "https://ethical-nutrition.com/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "no",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/ethical-nutrition.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/ethical-nutrition.json",
|
|
"Reason": "Competitor PDP/domain: ethical-nutrition.com"
|
|
},
|
|
{
|
|
"Stage": "2",
|
|
"Provider": "Apify selective",
|
|
"Priority": "hold_until_pilot_review",
|
|
"Brand": "Puro Labs",
|
|
"Domain": "purolabs.com",
|
|
"StartUrl": "https://purolabs.com/",
|
|
"ExistingPdpProbe": "yes",
|
|
"RunNow": "no",
|
|
"MaxRequestsPerBrand": 100,
|
|
"MaxDepth": 1,
|
|
"TargetRawPath": "data/sources/apify/raw/puro-labs.json",
|
|
"IntendedOutputPath": "data/sources/competitor-pdps/puro-labs.json",
|
|
"Reason": "Competitor PDP/domain: purolabs.com"
|
|
}
|
|
]
|
|
}
|