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>
166 lines
4.8 KiB
JSON
166 lines
4.8 KiB
JSON
{
|
|
"generatedAt": "2026-05-20T16:49:00.675Z",
|
|
"ready": true,
|
|
"costReady": {
|
|
"dataforseoStage1": true,
|
|
"apifyStage2": true
|
|
},
|
|
"costFile": "data/sources/budgets/source-acquisition-cost-plan.json",
|
|
"currency": "GBP",
|
|
"counts": {
|
|
"checks": 12,
|
|
"passing": 12,
|
|
"blocked": 0
|
|
},
|
|
"estimates": {
|
|
"dataforseoStage1": {
|
|
"estimatedTotal": 0.075,
|
|
"maxSpend": 5,
|
|
"taskCount": 10,
|
|
"reviewDepth": 100,
|
|
"depthUnits": 10
|
|
},
|
|
"apifyStage2": {
|
|
"estimatedTotal": 3,
|
|
"maxSpend": 5,
|
|
"actorRuns": 1,
|
|
"targetCount": 3,
|
|
"maxRequestsPerBrand": 100
|
|
}
|
|
},
|
|
"guardrails": [
|
|
"This file is for local cost planning only; it does not call providers or store credentials.",
|
|
"Use current provider pricing/source URLs when filling unit costs; do not guess pricing in code.",
|
|
"Estimated total must fit the explicit max spend budget before approval/spend gates can unlock.",
|
|
"Full-catalogue scraping is intentionally outside this cost plan."
|
|
],
|
|
"checks": [
|
|
{
|
|
"Provider": "DataForSEO",
|
|
"Stage": "1",
|
|
"Check": "Pricing source recorded",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "https://dataforseo.com/apis/reviews-api/amazon-reviews-api checked 2026-05-19T13:30:32.762667Z"
|
|
},
|
|
{
|
|
"Provider": "DataForSEO",
|
|
"Stage": "1",
|
|
"Check": "Unit cost recorded",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "GBP 0.00075 per task"
|
|
},
|
|
{
|
|
"Provider": "DataForSEO",
|
|
"Stage": "1",
|
|
"Check": "Estimate matches capped task count",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "10 tasks / 10 expected; depth 100 / 100 expected"
|
|
},
|
|
{
|
|
"Provider": "DataForSEO",
|
|
"Stage": "1",
|
|
"Check": "Estimated total is positive",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "GBP 0.075"
|
|
},
|
|
{
|
|
"Provider": "DataForSEO",
|
|
"Stage": "1",
|
|
"Check": "Estimated total fits max spend",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "GBP 0.075 estimated / 5 max spend"
|
|
},
|
|
{
|
|
"Provider": "DataForSEO",
|
|
"Stage": "1",
|
|
"Check": "Hard stop preserved",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "hardStopAfterFirstRun=true"
|
|
},
|
|
{
|
|
"Provider": "Apify",
|
|
"Stage": "2",
|
|
"Check": "Pricing source recorded",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "https://apify.com/pricing checked 2026-05-20T16:41:55.103Z"
|
|
},
|
|
{
|
|
"Provider": "Apify",
|
|
"Stage": "2",
|
|
"Check": "Estimated actor run cost recorded",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "GBP 3 per actor run"
|
|
},
|
|
{
|
|
"Provider": "Apify",
|
|
"Stage": "2",
|
|
"Check": "Estimate matches first-batch caps",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "1 runs / 1; 3 targets / 3; 100 requests per brand / 100"
|
|
},
|
|
{
|
|
"Provider": "Apify",
|
|
"Stage": "2",
|
|
"Check": "Estimated total is positive",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "GBP 3"
|
|
},
|
|
{
|
|
"Provider": "Apify",
|
|
"Stage": "2",
|
|
"Check": "Estimated total fits max spend",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "GBP 3 estimated / 5 max spend"
|
|
},
|
|
{
|
|
"Provider": "Apify",
|
|
"Stage": "2",
|
|
"Check": "Hard stop preserved",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "hardStopAfterFirstDataset=true"
|
|
}
|
|
],
|
|
"nextActions": [],
|
|
"costPlan": {
|
|
"currency": "GBP",
|
|
"owner": "user-approved-top3-expanded-scrape-budget",
|
|
"updatedAt": "2026-05-20T16:48:36.463Z",
|
|
"notes": "Starter paid scrape lane reduced to GBP 3-5 equivalent first. Actual first run should stay under the tighter env caps below.",
|
|
"dataforseoStage1": {
|
|
"pricingSourceUrl": "https://dataforseo.com/apis/reviews-api/amazon-reviews-api",
|
|
"pricingCheckedAt": "2026-05-19T13:30:32.762667Z",
|
|
"unitCostPerTask": 0.00075,
|
|
"taskCount": 10,
|
|
"reviewDepth": 100,
|
|
"estimatedTotal": 0.075,
|
|
"maxSpendRef": 5,
|
|
"hardStopAfterFirstRun": true,
|
|
"notes": "Uses 100 review depth by default; scripts support DATAFORSEO_REVIEWS_DEPTH up to 1000 only with explicit env override."
|
|
},
|
|
"apifyStage2": {
|
|
"pricingSourceUrl": "https://apify.com/pricing",
|
|
"pricingCheckedAt": "2026-05-20T16:41:55.103Z",
|
|
"estimatedActorRunCost": 3,
|
|
"actorRuns": 1,
|
|
"targetCount": 3,
|
|
"maxRequestsPerBrand": 100,
|
|
"estimatedTotal": 3,
|
|
"maxSpendRef": 5,
|
|
"hardStopAfterFirstDataset": true,
|
|
"notes": "First expanded budget allows 100 requests per brand/source; scripts support APIFY_REQUESTS_PER_BRAND up to 1000 only with explicit env override."
|
|
}
|
|
}
|
|
}
|