Just Vitamins · Content Engine

How every PDP gets built — end to end

The same process produces every product page, section by section, with every factual claim traced to a source and adversarially checked before it reaches you. This is the workflow, the content formula, and how each section’s variations are chosen.

75 SKUs in scope
4 PDP sections each
69 evidence packs on file
0 unverifiable claims shipped
See the live Turmeric (D2) page →
The one rule that governs everything

Nothing reaches you unless it’s traceable and survives a challenge

Every factual claim must trace to a record we hold — product-truth, an authorised claim, a PubMed study, or a captured customer review — and an adversarial pass must try and fail to refute it before it can be exported or sent.

This is the direct fix for the June QA failures. The engine physically blocks any draft that breaks this rule — content cannot leave the system until it’s clean.

Part 1 · The workflow, per SKU

From a product name to a finished, verified page

Each SKU runs the same path. Every step below carries an honest status: ✓ running = a command you can run live today · ◐ pilot = built and proven on the 5 pilot SKUs, being generalised · ○ next = designed, build in progress.

1

Sync product truth

Pull this SKU’s facts from the JV legacy DB. bun run db:build (ingest + doses + links).

2

Match claims

Attach verbatim GB/EU authorised wording. 41 claims in the library; linked per-SKU.

3

Link evidence

PubMed RCT/meta-analysis by PMID. bun run db:fetch-evidence — 69 packs on file.

4

Mine reviews

Compute satisfaction stats from the SKU’s own reviews. bun run review-stats <SKU>.

5

Assemble sections

bun run assemble builds a section from the fact stores (scientific V7 live; other sections being added).

6

Verify gate

bun run verify <draft> — checks every claim resolves to a held source. Runs today.

7

Refuter pass

The gate emits a refuter-packet.json of claims to challenge. Auto-agent loop is the next build; today it’s a reviewed packet.

8→9

Review → ship

You approve; export to Matrixify/Shopify. Proven on the pilot batch.

Layer 1Facts ledger
✓ running Product truth · 41 claims · 69 evidence packs · review corpus, all in a real SQLite DB. Nothing is written from memory.
Layer 2Dossier
✓ running Per-SKU assembly — queried live from the DB.
Layer 3Generation
◐ pilot 5 SKUs fully drafted; assemble generalises it section-by-section.
Layer 4The gate
✓ running bun run verify — deterministic checks live today; adversarial refuter packet emitted, auto-loop next. Returns three verdicts:
BLOCKED

A claim can’t be traced to a real source. Do not send. This is real and runs — it caught 2 unverifiable citations in Turmeric and forced the fix.

NEEDS REFUTER PASS

Deterministically clean, but the refuter packet must still be worked. Today that pass is reviewed by hand; the auto-agent is the next build.

DETERMINISTIC PASS

Clean — every claim resolves to a held source. Turmeric is here today, verified.

Part 2 · The formula for producing content

Every piece of copy is built the same way

No section is free-written. Each one is assembled from a fixed formula: a benefit/positioning line the customer reads in <1 second, a proof element drawn from the strongest source we hold, and a citation that substantiates it.

BENEFIT / POSITIONING + PROOF (strongest source) + CITATION
benefit = what the customer gets  ·  proof priority: authorised claim → study count → product spec  ·  raw stats live in the footnote, never the headline

The proof slot auto-selects per SKU: vitamins/minerals use their authorised EU claim (compliant by default); botanicals like turmeric use a study count or formulation spec. That single rule keeps all 75 SKUs consistent and compliant.

Part 3 · Per section, per variation

Each section has graded variations — you choose the positioning, we hold the line

Every section can be expressed at different levels of boldness. Bolder = more persuasive but more compliance sign-off; safer = lower risk, scales faster. The layout never changes — only the wording.

SectionVariationsWhat changesRisk spectrum
Above the fold
title · pills · ticks
A1 → A2 → A3 Positioning intensity: outcome promise → category positioning → pure formulation fact A1 promise A3 fact
Scientific studies
3 stat cards
V1 → V7 (7 options) What the cards measure: invented % (banned) → real cited figures → mechanism → review-derived % in Umar’s exact format V1 invented V7 review %
Results timeline
Month 1–4+
T1 → T2 → T3 Voice: real customer quotes → usage guidance → benefit-narrative T1 quotes T2 usage
How we compare
Umar’s fixed rows
C1 → C2 → C3 Row values only (rows are fixed, incl. Cost per Day): efficacy claims → provable facts → binary product facts C1 efficacy C2 facts
FAQ
7 questions
Fixed framework Rows 1–3 product-specific · rows 4–7 brand-wide (template-fixed wording) structurally safe
Part 4 · How the right variation is chosen

The same compliance logic decides every slot

🟢 Always safe

  • Formulation facts (dose, ratio, % active, format)
  • Commercial facts (cost/day, guarantee)
  • Verbatim authorised claims
  • Review-derived satisfaction %
  • Usage guidance over time

🟠 Needs sign-off

  • Outcome/benefit promises on a botanical
  • “Studied for [benefit]” framing
  • Real customer quotes that are medicinal-adjacent
  • Benefit-narrative timeline copy

🔴 Never ship

  • Invented percentages
  • “Treats / cures / reduces [disease]”
  • Efficacy ✓ vs competitor ✗
  • Unsubstantiated “500+ studies”
  • Any claim with no held source
Built on the live JV Content Engine. Every figure on this page is real and reproducible: 69 evidence packs on file, Turmeric verified DETERMINISTIC_PASS, and the 91/74/41% stat cards computed by bun run review-stats JV-TURMERIC500 over 2,195 verified reviews. Status today: facts ledger, evidence ingest, review stats, and the verify gate run live; section assembly is proven on 5 pilot SKUs and being generalised to the full catalogue; the automated refuter loop is the next build. We commit timelines for the remaining SKUs once the SKU list is confirmed.
See the live Turmeric (D2) page →