feat: editorial review dashboard + elite-grade pilot batch (5 SKUs)

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>
This commit is contained in:
Omair Saleh
2026-06-02 18:20:17 +08:00
parent e470e113ee
commit 056c47581f
3302 changed files with 391779 additions and 854 deletions
@@ -0,0 +1,146 @@
# Source acquisition next actions
Generated: 2026-05-20T02:31:33.790Z
Recommendation: Use DataForSEO first for a tightly capped structured pilot; use Apify only as a targeted gap-filler after inspecting pilot output.
Current instruction: Do not broaden spend. 6 DataForSEO payload rows are ready from live-confirmed ASINs; 4 ASINs remain unresolved and must stay out of the payload unless exact evidence is found.
## Immediate no/low-spend actions
- [blocked] 1. Fill and verify Stage 1 ASIN map — 6 ASINs present / 4 missing; 4 web lookup aids; 2 rejected not-target leads; 575 DataForSEO product-result items saved; 4 unresolved targets have no exact DataForSEO candidate and stay out of the paid payload. Use: `bun run dataforseo:products-live with explicit allow flag, then bun run dataforseo:live-asin-evidence && bun run dataforseo:unresolved-asins; data/sources/dataforseo/asin-map.csv`
- [blocked] 2. Promote only Amazon-confirmed high-confidence ASIN candidates — 0 promotion confirmations ready; 0 candidates promoted / 4 candidate rows. Use: `bun run dataforseo:asin-confirmations && bun run dataforseo:promote-asins`
- [ready] 3. Regenerate capped Amazon Reviews task payload — 6 ready task rows / 10 capped targets; 4 unresolved ASINs remain outside the payload. Use: `bun run dataforseo:pilot`
- [blocked] 4. Record an explicit Stage 1 budget cap before approval — 6/9 budget checks passing. Use: `data/sources/budgets/source-acquisition-budget.json`
- [blocked] 5. Record current pricing and estimated cost for the capped pilot — 0.00675 estimated / 1 max spend; 5 pricing refs and 5 scenarios available. Use: `content_population_exports/source_acquisition_cost_scenarios.md + data/sources/budgets/source-acquisition-cost-plan.json && bun run source:cost-plan`
## Stage sequence
### 1. No paid provider / Stage 0: Fill and verify Stage 1 ASIN map
- Status: blocked
- Spend: no spend required
- Owner: Research / project owner
- Evidence: 6 ASINs present / 4 missing; 4 web lookup aids; 2 rejected not-target leads; 575 DataForSEO product-result items saved; 4 unresolved targets have no exact DataForSEO candidate and stay out of the paid payload
- Command/file: `bun run dataforseo:products-live with explicit allow flag, then bun run dataforseo:live-asin-evidence && bun run dataforseo:unresolved-asins; data/sources/dataforseo/asin-map.csv`
- Stop rule: Only accept exact Just Vitamins Amazon UK product matches; leave blank if uncertain.
- Why this order: This remains useful no-spend research, but the capped pilot payload already uses only the live-confirmed ASINs.
### 2. No paid provider / Stage 0: Promote only Amazon-confirmed high-confidence ASIN candidates
- Status: blocked
- Spend: no spend required
- Owner: Research
- Evidence: 0 promotion confirmations ready; 0 candidates promoted / 4 candidate rows
- Command/file: `bun run dataforseo:asin-confirmations && bun run dataforseo:promote-asins`
- Stop rule: Only rows marked ready in the confirmation report plus amazon_confirmed_exact_match and Confidence=high can be copied into asin-map.csv; existing ASINs are not overwritten.
- Why this order: This closes confirmed ASINs safely while keeping uncertain third-party candidate evidence out of paid task payloads.
### 3. DataForSEO / Stage 1: Regenerate capped Amazon Reviews task payload
- Status: ready
- Spend: no spend required
- Owner: Research
- Evidence: 6 ready task rows / 10 capped targets; 4 unresolved ASINs remain outside the payload
- Command/file: `bun run dataforseo:pilot`
- Stop rule: Payload must stay within Stage 1 cap before any provider call.
- Why this order: Turns the verified ASINs into a reviewable paid-call payload without calling DataForSEO.
### 4. DataForSEO / Stage 1: Record an explicit Stage 1 budget cap before approval
- Status: blocked
- Spend: blocked
- Owner: Project owner
- Evidence: 6/9 budget checks passing
- Command/file: `data/sources/budgets/source-acquisition-budget.json`
- Stop rule: Budget must include max spend, max tasks, review depth, and hard stop after the first run. Do not put credentials here.
- Why this order: A subscription is only safe after the hard cap is written down locally and can be checked by the spend gate.
### 5. DataForSEO / Stage 1: Record current pricing and estimated cost for the capped pilot
- Status: blocked
- Spend: blocked
- Owner: Project owner / research
- Evidence: 0.00675 estimated / 1 max spend; 5 pricing refs and 5 scenarios available
- Command/file: `content_population_exports/source_acquisition_cost_scenarios.md + data/sources/budgets/source-acquisition-cost-plan.json && bun run source:cost-plan`
- Stop rule: Do not enable budget or approval from guessed pricing; record current provider pricing source and keep estimate within max spend.
- Why this order: This is the anti-credit-burn step before subscription: it turns pricing into an explicit capped first-run estimate.
### 6. DataForSEO / Stage 1: Record human spend approval for one capped pilot run
- Status: blocked
- Spend: blocked
- Owner: Project owner
- Evidence: 4/14 spend-gate checks passing; approval valid=false
- Command/file: `bun run dataforseo:approval-request && bun run source:approvals && data/sources/approvals/dataforseo-stage1-approval.json`
- Stop rule: Approval should name the cap, provider, marketplace, target count, and expected max spend before credentials are used.
- Why this order: Prevents accidental credit burn; approval is deliberately local and explicit.
### 7. DataForSEO / Stage 1: Run only the approved DataForSEO pilot and save raw task_get JSON
- Status: blocked
- Spend: blocked
- Owner: Research
- Evidence: 0 review tasks posted / 0 reviews returned; 0 raw files / 0 converted reviews
- Command/file: `bun run dataforseo:reviews-live then data/sources/dataforseo/raw/`
- Stop rule: Do not run a second batch until raw output, useful fields, and actual credit cost are reviewed.
- Why this order: This is the first paid step and should be a single controlled proof of data quality and cost.
### 8. DataForSEO / Stage 1 support: Send provider support escalation if Reviews endpoint remains 50304
- Status: ready
- Spend: no spend required
- Owner: Project owner / support
- Evidence: 50304: This function temporarily unavailable. Please contact support for more information.; official docs unavailable=true
- Command/file: `bun run dataforseo:reviews-docs-status && bun run dataforseo:support-escalation then content_population_exports/dataforseo_support_escalation.md; when support replies, fill data/sources/provider-responses/dataforseo-reviews-endpoint-response.json and run bun run dataforseo:support-response`
- Stop rule: Escalation packet must contain no credentials and should include endpoint, status code, tiny payload shape, and proof that Products endpoint works.
- Why this order: This turns the provider-side blocker into an actionable support request instead of more retries or guessing.
### 9. Manual capture / Stage 1 fallback: Capture Amazon reviews manually if DataForSEO support remains blocked
- Status: ready
- Spend: no provider spend
- Owner: Research
- Evidence: 6 manual capture targets; 0/6 files present; 0/6 files valid; 0 reviews captured
- Command/file: `bun run amazon:manual-capture && bun run amazon:manual-capture-validate then content_population_exports/manual_amazon_review_capture_validation.md`
- Stop rule: Capture only the listed Stage 1 ASINs; do not broaden to catalogue scraping.
- Why this order: This gives a no-spend fallback source path while the DataForSEO Reviews endpoint is unavailable.
### 10. DataForSEO / Stage 1: Normalize raw provider output into the standard Amazon source-drop path
- Status: blocked
- Spend: no additional spend
- Owner: Research / dashboard
- Evidence: 0 converted files / 0 ingest issues
- Command/file: `bun run dataforseo:ingest && bun run validate:sources`
- Stop rule: Converted source files must preserve review text, rating, date, source URL, SKU, and provider provenance.
- Why this order: Keeps DataForSEO evidence on the same validation path as manual Amazon drops.
### 11. DataForSEO / Stage 1 review: Review quality, fields, and cost; decide scale vs Apify vs stop
- Status: blocked
- Spend: blocks all scale-up spend
- Owner: Project owner / research
- Evidence: 1/7 review checks passing; decision=pending
- Command/file: `data/sources/reviews/dataforseo-stage1-review.json`
- Stop rule: Decision must be one of scale_dataforseo, run_apify_gapfill, or stop_adjust_source_map.
- Why this order: Prevents the pilot from silently turning into full-catalogue scraping.
### 12. Apify selective / Stage 2: Run Apify only for named gaps after DataForSEO review
- Status: blocked
- Spend: blocked
- Owner: Research
- Evidence: 3 first-batch targets / 4 held; Apify preflight 2/8; Apify budget allowed=false; cost ready=false; approval valid=false; Apify spend allowed=false
- Command/file: `bun run apify:task-preflight then content_population_exports/apify_competitor_pdp_input_template.json`
- Stop rule: One actor, first batch only, inspect raw dataset quality/cost before any further run.
- Why this order: Apify is useful for PDP/social/browser gaps, but only after the cheaper structured pilot proves what is missing.
### 13. All source packet lanes / Stage control: Refresh source packet and delivery index after every change
- Status: ready
- Spend: no spend required
- Owner: Dashboard
- Evidence: 27/27 required source packet files present
- Command/file: `bun run source:refresh-packet && bun run delivery:index`
- Stop rule: Packet freshness does not mean final handoff readiness; verify:handoff remains the final gate.
- Why this order: Keeps the Export Console and handoff packet aligned with the latest source-acquisition state.
## ASIN lookup targets
- JV-D1000 (Vitamin D Effervescent Tablets - 1000iu)
- JV-D4000 (Super Strength Vitamin D3 4000iu)
- JV-TURMERIC500 (Turmeric with BioPerine (Black Pepper Extract))
- JV-VISISOFT (Visisoft Original Tablets - 10mg)
- JV-STAR1000 (High Strength Starflower Oil 1000mg)
- JV-COQ10100 (Co-Enzyme Q10 120mg)
- JV-B12 (Methylcobalamin Vitamin B12)
- JV-ROSEHIP5000 (Rosehip 5000mg)
- JV-MVITMINAZ50 (Multivitamins One-a-Day)
## Guardrail
DataForSEO is the default first paid lane. Apify stays blocked until DataForSEO raw output is inspected and a named gap is recorded.