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>
100 lines
3.2 KiB
JSON
100 lines
3.2 KiB
JSON
{
|
|
"generatedAt": "2026-05-20T02:31:32.595Z",
|
|
"ready": false,
|
|
"command": "bun run apify:task-preflight",
|
|
"paidRunCommand": "Set APIFY_TOKEN, JV_SOURCE_ALLOW_PAID=apify-stage2, confirm the chosen actor in Apify UI/API, paste only the generated first-batch input template, then stop after one dataset inspection.",
|
|
"counts": {
|
|
"checks": 8,
|
|
"passing": 2,
|
|
"blocked": 6,
|
|
"firstBatchTargets": 3,
|
|
"holdTargets": 4,
|
|
"startUrls": 3
|
|
},
|
|
"files": {
|
|
"actorInputTemplate": "content_population_exports/apify_competitor_pdp_input_template.json",
|
|
"gapfillManifest": "content_population_exports/apify_gapfill_manifest.json",
|
|
"preflightMd": "content_population_exports/apify_task_preflight.md",
|
|
"preflightCsv": "content_population_exports/apify_task_preflight.csv",
|
|
"preflightJson": "content_population_exports/apify_task_preflight.json"
|
|
},
|
|
"checks": [
|
|
{
|
|
"Check": "Explicit paid-run flag set",
|
|
"Status": "blocked",
|
|
"Blocking": "yes",
|
|
"Evidence": "set JV_SOURCE_ALLOW_PAID=apify-stage2 only when intentionally running Apify Stage 2"
|
|
},
|
|
{
|
|
"Check": "Apify token present in environment",
|
|
"Status": "blocked",
|
|
"Blocking": "yes",
|
|
"Evidence": "APIFY_TOKEN=missing"
|
|
},
|
|
{
|
|
"Check": "Spend gate allows Apify Stage 2",
|
|
"Status": "blocked",
|
|
"Blocking": "yes",
|
|
"Evidence": "4/14 spend checks passing"
|
|
},
|
|
{
|
|
"Check": "Budget gate allows Apify Stage 2",
|
|
"Status": "blocked",
|
|
"Blocking": "yes",
|
|
"Evidence": "6/9 budget checks passing"
|
|
},
|
|
{
|
|
"Check": "DataForSEO review explicitly selected Apify",
|
|
"Status": "blocked",
|
|
"Blocking": "yes",
|
|
"Evidence": "decision=pending"
|
|
},
|
|
{
|
|
"Check": "Named Apify gap documented",
|
|
"Status": "blocked",
|
|
"Blocking": "yes",
|
|
"Evidence": "no named gap from DataForSEO pilot review"
|
|
},
|
|
{
|
|
"Check": "First batch stays inside caps",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "3 first-batch targets, 4 held, maxActorRuns=1, maxTargets=3, maxRequestsPerBrand=3"
|
|
},
|
|
{
|
|
"Check": "Actor input matches first batch only",
|
|
"Status": "pass",
|
|
"Blocking": "yes",
|
|
"Evidence": "3 start URLs / 3 first-batch targets, maxRequestsPerCrawl=9, maxCrawlDepth=1"
|
|
}
|
|
],
|
|
"blockers": [
|
|
"Explicit paid-run flag set: set JV_SOURCE_ALLOW_PAID=apify-stage2 only when intentionally running Apify Stage 2",
|
|
"Apify token present in environment: APIFY_TOKEN=missing",
|
|
"Spend gate allows Apify Stage 2: 4/14 spend checks passing",
|
|
"Budget gate allows Apify Stage 2: 6/9 budget checks passing",
|
|
"DataForSEO review explicitly selected Apify: decision=pending",
|
|
"Named Apify gap documented: no named gap from DataForSEO pilot review"
|
|
],
|
|
"targetPreview": [
|
|
{
|
|
"brand": "Feel",
|
|
"url": "https://wearefeel.com/",
|
|
"maxRequestsPerBrand": 3,
|
|
"maxDepth": 1
|
|
},
|
|
{
|
|
"brand": "Ancient & Brave",
|
|
"url": "https://ancientandbrave.earth/",
|
|
"maxRequestsPerBrand": 3,
|
|
"maxDepth": 1
|
|
},
|
|
{
|
|
"brand": "Heights",
|
|
"url": "https://www.heights.com/",
|
|
"maxRequestsPerBrand": 3,
|
|
"maxDepth": 1
|
|
}
|
|
]
|
|
}
|