BRAINZYME® · GOOGLE ADS · ACCOUNT 619-544-3501

v4.0 Audit & Architecture Dashboard

MCC 269-741-1682 · 4 markets · 43 campaigns (18 Search + 21 PMax + 4 DG Awareness) · Updated 18 April 2026
Brainzyme Apps · cross-linked dashboards on apps.nutritionalproducts.org
Creative & Ads
→ Creative Review → Video Creative Audit → UGC Explorer → Campaign LP Strategy
SEO & Content
→ On-Page Audit → SEO Content Engine → Hreflang Audit → Email Strategy
Build & Engineering
→ Shopify Build (Action Centre) → Claude OS Reference → IT SOP Handbook → Backend Access Registry
Quiz & LP / Other
→ Dopamine Quiz → Quiz Prototypes (Brain Fog A/B/C) → Honeypot Outreach → BNS Cashflow
Today's deploys: LP Deploy 2026-05-03 (this dashboard ↓) · Overnight 2026-04-30 (this dashboard ↓) · LP-Q2 review (16 NEW + 11 OLD tabs)
Monthly Budget
£41,670
£1,389/day: Search £275 + PMax £1,076 + DG £38
Search Campaigns
18
13 paused · 4 LP-blocked · 1 not created
PMax Campaigns
21
4 legacy live · 17 paused (max conv value)
Landing Page Types
7
PREC · GUIDE · COMP · QUIZ · PERI · GUT · ADHD
Markets
4
UK · DE · FR · US

Matching Principle

Google Ads = Keyword-matching. The user declares intent via search query. We match it with the right campaign, copy, and landing page. Each campaign owns a single intent cluster and a single market — never mix.

Build Queue Status
34
Deployed (paused)
9
Pending LP
4
Legacy ENABLED
6
LPs to Build
Decision Log
DateDecision
18 AprSession 28 absorbed into Session 32 (active). Rogue v4.0 folder archived. Co-work full migration to F:/Claude Root/ (20 folders, 114 path rewrites).
17 AprDaily Audit tab shipped — dynamic manifest-driven snapshot viewer. Windows Task Scheduler template for daily snapshot.
14–15 AprCreative library locked: PIL v5 single source of truth, v3b three-format unified, canonical library auto-ingest, scale-anchor ref pack (kills oversized-bottle at source).
13 AprADHD SERP pivot — LP swap via adhd-supplements-guide.html (blog, editorial framing) replaces full rebuild. Wave 8.1 retired, 8.2 becomes primary path.
12 Apr14 orphan v4.0-named AGs removed from 3 legacy brand PMax. Brand exclusions on 18 PMax (25 ops). Neg-keyword sets on 13 Search + 4 DG (43 ops). Purchaser exclusions on 18 PMax. YT Awareness (4 DG campaigns) deployed PAUSED. Wave 8 audit adds 15 items to tracker.
11 AprUS Brain Fog (23750480107) + US Gut-brain (23750480365) PMax deployed PAUSED. MC feeds linked, listing groups, custom audience signals wired.
9 AprROAS targets removed from all PMax — switched to max conv value. Audience signals applied to 13 Search (923 criteria, observation-only). “No retargeting layer” concern closed — PMax already retargets.
6–7 AprWave 0 blitz: logos, MC feeds, listing groups, sitelinks/callouts (104 each), UTMs on 28 campaigns. Wave 0.5 rapid-onset copy fixes across 11 RSAs.
5 AprCreative formats extracted to creative dashboard. Matching principle defined — Google = keyword-matching, Meta = person-matching.
4 Aprv4.0b PMax split 4→16 campaigns. GABA prioritised over Dopamine. Never merge campaigns for low volume. Precursor Education page = Priority #1.
Search Campaigns (18) — £275/day
#CampaignMarketIntentBudget/dayLanding PageStatus
1UK Problem-AwareUK88–95% transactional£20QUIZPAUSED
2DE Ritalin ADHSDE59–74% commercial£15COMP to buildPAUSED
3DE KonzentrationDEmixed transactional£15CATPAUSED
4FR Anti-FatigueFR88%+ transactional£20PROD (Pro)PAUSED
5FR TDAH & RitalineFR59–74% commercial£10COMP to buildPAUSED
6UK Dopamine & Smart FocusUK34–66% informational£25GUIDE EN livePAUSED
7UK GABAUK92–98% transactional£15PREC EN livePAUSED
8DE DopaminDE73% informational£10GUIDE DE to buildPending LP
9DE GABADE92%+ transactional£10PREC DE to buildPending LP
10FR DopamineFR34–89% mixed£10GUIDE FR to buildPending LP
11FR GABAFR98% transactional£10PREC FR to buildPending LP
12US DopamineUS34–37% transactional£25GUIDE EN livePAUSED
13US GABAUS92%+ transactional£20PREC EN livePAUSED
14US Brain FogUS88–95% transactional£8QUIZPAUSED
15UK PerimenopauseUKProblem-aware£15PERI to buildPAUSED
16DE Gut-HirnDEProblem-aware£13GUT to buildPAUSED
17US PerimenopauseUSProblem-aware£14PERI to buildPAUSED
18US Gut-brainUSProblem-aware£15GUT to buildNot created
Total£275
PMax Campaigns (21) — £1,076/day (ROAS targets removed 9 Apr — max conv value)
CampaignMarketIntent ClusterBudget/dayBiddingComplianceStatus
PMax UK Brand (legacy)UKNavigational£200Max conv valueGREENENABLED
PMax DE Brand (legacy)DENavigational£300Max conv valueGREENENABLED
PMax FR Brand (legacy)FRNavigational£100Max conv valueGREENENABLED
PMax US Brand (legacy)USNavigational£80Max conv valueGREENENABLED
PMax UK GABA PrecursorUKTransactional£40Max conv valueGREENPAUSED
PMax UK DopamineUKEducational£30Max conv valueAMBERPAUSED
PMax UK Brain FogUKProblem-aware£25Max conv valueGREENPAUSED
PMax UK Attention & FocusUKTransactional£25Max conv valueGREENPAUSED
PMax UK PerimenopauseUKProblem-aware£27Max conv valueAMBERPAUSED
PMax DE GABADETransactional£30Max conv valueGREENPAUSED
PMax DE DopaminDEEducational£20Max conv valueGREENPAUSED
PMax DE Ritalin/ADHSDEMedication alt.£40Max conv valueREDPAUSED
PMax DE Gut-HirnDEProblem-aware£22Max conv valueGREENPAUSED
PMax FR GABAFRTransactional£20Max conv valueGREENPAUSED
PMax FR DopamineFREducational£15Max conv valueGREENPAUSED
PMax FR Anti-FatigueFRUnique£20Max conv valueGREENPAUSED
PMax US GABAUSTransactional£25Max conv valueGREENPAUSED
PMax US DopamineUSEducational£15Max conv valueAMBERPAUSED
PMax US PerimenopauseUSProblem-aware£22Max conv valueAMBERPAUSED
PMax US Brain Fog (11 Apr)USProblem-aware£25Max conv valueGREENPAUSED
PMax US Gut-brain (11 Apr)USProblem-aware£20Max conv valueGREENPAUSED
Total£1,076
Demand Gen — YouTube Awareness (4) — £38/day Deployed 12 Apr, manual unpause pending Wave 0.11b
CampaignMarketCampaign IDBudget/dayAd GroupsStatus
YT Awareness UKUK23747058437£1214 AGs · 26 DG video adsPAUSED
YT Awareness DEDE23751692320£10(shared seed — 7 new UGC Shorts + 16 historical)PAUSED
YT Awareness FRFR23747062952£8PAUSED
YT Awareness USUS23741770995£8PAUSED
Total£38
DG unpause blocked by Wave 0.11b: Purchaser exclusions must be applied via Google Ads UI (API blocks user_list exclusions on DG campaigns). Per-ad-group, 14 AGs total.
3 critical, 5 high, 5 medium, 4 low — carried forward from v3.0 audit (1 April 2026). Wave 8 post-audit (12 Apr) adds 15 more items — see v4.0/go-live-rundown.md.
Done since v3.0 audit: Wave 0 blitz (logos, MC feeds, listing groups, sitelinks, callouts, UTMs) · Wave 0.5 creative refresh (11 RSAs) · L2 shared neg lists (43 ops) · L4 audience signals (923 criteria) · Wave 0.9 PMax signal parity (14 orphan AGs removed) · Wave 0.10 brand exclusions (25 ops on 18 PMax) · Wave 0.11a DG neg-set attach (8 ops) · YT Awareness deploy (4 DG campaigns) · PMax purchaser exclusions (18 ops).
Critical (3)
C1
Conversion double-counting CRITICAL
5 primary purchase actions configured plus a duplicate catch-all. Every purchase is counted multiple times, inflating reported ROAS and deflating reported CPA. Must consolidate to a single primary conversion action.
C2
YouTube follow-on views counted as conversions CRITICAL
YouTube video views are tracked as conversion events, polluting purchase data. These must be moved to secondary/observation-only status immediately.
C3
USA Brand tracking broken CRITICAL
£344/mo spend, 88% impression share, but only 5.1 conversions. Brand campaign in a known market should convert far higher. Likely a tracking or attribution issue specific to the US storefront.
High (5)
H1
PMax UK 24-month stale creative HIGH
ROAS collapsed from 3.53x to 1.46x. Creative assets have not been refreshed in 24 months. Audience fatigue is the primary driver of declining performance.
H2
Seasonal assets still running HIGH PARTIAL 12 Apr
“New Year Sale | code FOCUS10” creative still active in April. 12 Apr orphan AG cleanup removed 14 v4.0-named AGs from 3 legacy brand PMax. Legacy seasonal AGs (Christmas/NY) inside legacy brand campaigns still present — review before next seasonal cycle.
H3
SERP UK ADHD structurally broken HIGH PIVOTED 13 Apr
15.3% impression share and 0.97x ROAS. Strategy updated 13 Apr: instead of full rebuild, swap LP to new editorial blog adhd-supplements-guide.html (built, content-fixed 14 Apr). Wave 8.2b awaiting Calum compliance review; Wave 8.2c = URL swap on campaign 11666978147. Wave 8.1 retired.
H4
PMax DE Ritalin stuck at £0.01/day HIGH
Best historical performance (2.43x ROAS) but budget set to £0.01/day effectively pausing it. This is the highest-potential DE campaign and needs budget restored.
H5
RecoverUp conversion pollution HIGH
RecoverUp (separate brand) conversions are mixed into the Brainzyme® conversion data, distorting campaign-level metrics for all Brainzyme® campaigns.
Medium (5)
M1
CTV waste MEDIUM
Connected TV placements delivering impressions with no measurable conversion path. Review PMax placement reports and exclude CTV if ROAS remains below target.
M2
DE Brand 54% impression share MEDIUM
Brand campaign losing nearly half of eligible impressions. Budget or bid cap may be too restrictive for branded queries in Germany.
M3
80+ paused campaigns MEDIUM
Account clutter from legacy campaigns. These should be removed (not just paused) to simplify the account and improve manageability.
M4
No ad schedule MEDIUM
Campaigns run 24/7 with no dayparting. Analyse hourly conversion data to identify low-performing windows and implement bid adjustments or schedules.
M5
No device bid adjustments MEDIUM
All devices treated equally despite likely performance variance between mobile, desktop, and tablet. Review device-level ROAS and apply adjustments.
Low (4)
L1
Naming conventions inconsistent LOW
Campaign names mix formats, making filtering and reporting difficult. Standardise to: [Type] [Market] [Intent] format.
L2
No shared negative keyword lists DONE 12 Apr
Shared negative sets attached: brand list (11004385546, 137 terms) + general list (7843897972, 43 terms) + market-specific lists. 35 ops on 13 v4.0 Search campaigns, 8 ops on 4 DG campaigns. Session 32 residual: brand list 11004385546 still unattached to any ENABLED campaign — remediation tracked as Wave 0.12i (137-term audit first, per feedback_negative_keyword_rules.md: "review"/"amazon"/"alternative to ritalin" are NOT negatives).
L3
FR ad strength below average LOW
French RSA ad strength ratings are below target. Add more headline and description variants to improve Google’s combinatorial optimisation.
L4
No audience signals on Search campaigns DONE 9 Apr
923 observation-mode criteria applied to all 13 new Search campaigns: 39 remarketing lists (GA4 All Users + CPC Interactors + Customer Match per market) + 68 universal in-market audiences. bid_modifier=1.0 (data collection only, no bid impact).
Landing pages serve BOTH channels. Google Ads traffic arrives via keyword match. Meta traffic arrives via UTM parameters from creative. Each page type maps to an intent stage, not a channel.
Build Queue (by priority)
#1 Precursor Education (PREC) EN LIVE DE / FR pending
“Why Most GABA Supplements Don’t Work”
EN live: apps.nutritionalproducts.org/landing-pages/precursor-education.html Serves 8 campaigns Volume 40K/mo Intent 92–98% transactional Languages EN done · DE / FR to build
#2 Neurotransmitter Guide (GUIDE) EN LIVE DE / FR pending
“The Dopamine Guide”
EN live: apps.nutritionalproducts.org/landing-pages/dopamine-guide.html Serves 8 campaigns Volume 75K/mo Intent 34–73% informational Languages EN done · DE / FR to build
#3 Comparison (COMP) NOT STARTED
“Natürliche Alternative zu Ritalin”
Serves 4 campaigns (DE Ritalin/ADHS + FR TDAH × Search & PMax) Volume 12K/mo Intent 59–74% commercial Languages DE / FR
#4 Brain Quiz Variant (QUIZ) EXISTS — needs variant
Paid traffic variant of existing quiz funnel
Serves 3 campaigns (UK Problem-Aware, US Brain Fog, PMax UK Brain Fog) Volume 8K/mo Intent 88–95% transactional Languages EN
#5 Perimenopause (PERI) — Wave 3 NOT STARTED
“Supporting clarity during life changes” — AMBER compliance (ASA + FTC review)
Unblocks 4 campaigns (UK + US Search & PMax Perimenopause) Volume 8,220/mo (UK + US) Priority #1 (82.8) + #6 (76.0) Languages EN first
#6 Gut-Brain (GUT) — Wave 4 NOT STARTED
Second-highest priority. Serves DE + US.
Unblocks 4 campaigns (DE Gut-Hirn Search & PMax, US Gut-brain Search & PMax) Volume 9,300/mo (DE + US) Priority #2 (80.8) + #12 (68.0) Languages EN + DE
#7 ADHD Supplements Blog (ADHD) BUILT 14 Apr Wave 8.2b compliance review pending
Editorial blog framing — replaces full SERP UK ADHD rebuild (H3 pivot 13 Apr)
Live: apps.nutritionalproducts.org/landing-pages/adhd-supplements-guide.html Target: Legacy Search UK ADHD (campaign 11666978147) Next: Wave 8.2c URL swap after compliance approval Languages EN
Modular LP System (deployed 6 Apr)
Shared component system live: _shared/style.css, config.js, components.js. 13 auto-rendering components (header, starRow, proofStrip, productTable, bundleBox, productCta, videoGrid, trustCarousel, scratchCard, stickyCtaBar, footer, disclaimer, progressBar). Both EN LPs refactored — ~1,600 lines removed. New pages inherit canonical product URLs, market strings, and trust data from config. LP production hardening (8 Apr): error resilience, a11y, performance, print stylesheet, cache versioning v4. All 26 tests pass.
Note: £1,389/day total includes legacy brand PMax at currently elevated budgets (UK £200, DE £300, FR £100, US £80). Only legacy brand PMax is ENABLED — actual daily spend is ~£680. Budget will redistribute from brand → intent campaigns as new PMax are enabled. ROAS targets removed from all PMax (9 Apr) — running max conv value.
Budget by Market

Market Allocation

UK£439/day 32%
DE£485/day 35%
FR£213/day 15%
US£252/day 18%
Total£1,389/day = £41,670/mo

Channel Split

Search (18 campaigns)£275/day 20%
PMax (21 campaigns)£1,076/day 77%
DG Awareness (4)£38/day 3%
Total (43 campaigns)£1,389/day
Budget by Intent Cluster
Intent ClusterDaily BudgetBiddingCampaignsNotes
Brand (Navigational, legacy)£680Max conv value4 PMax ENABLEDElevated while new campaigns paused. Only currently-live spend.
GABA (Transactional)£170Max conv value4 Search + 4 PMaxPriority #1 — 92–98% transactional intent
Dopamine (Educational)£115Max conv value4 Search + 4 PMaxLower intent — accept lower ROAS for pipeline
Brain Fog / Attention£83Max conv value2 Search + 3 PMaxInc. US Brain Fog PMax (£25/day, deployed 11 Apr)
Perimenopause (Problem-aware)£78Max conv value3 Search + 2 PMaxWave 3 — AMBER compliance (ASA + FTC). Awaits PERI LP.
Gut-Brain (Problem-aware)£70Max conv value2 Search + 2 PMaxWave 4 — US Gut-brain Search not yet created. Awaits GUT LP.
Ritalin / ADHS£65Max conv value2 Search + 1 PMaxCompliance-sensitive — RED flag on DE PMax
Anti-Fatigue (FR)£40Max conv value1 Search + 1 PMaxFR-unique positioning
Problem-Aware (UK quiz)£20Max conv value1 SearchQuiz funnel — broad UK catch-all
Konzentration (DE catch-all)£15Max conv value1 SearchMixed transactional (category page)
YT Awareness (ToF)£38Max conv4 Demand GenDEPLOYED 12 Apr — 7 new UGC Shorts + 16 historical winners. All PAUSED pending 0.11b UI purchaser-exclusions.
Total£1,37443 campaigns+£15 rounding variance across market-level budgets
Newest entries first. Full audit trail in v4.0/deployment-log.md and v4.0/go-live-rundown.md.
DateActionDetailsOutcome
18 Apr Wave 0.12 decisions locked (no mutation yet) 10 sub-waves reviewed against live Google Ads 180-day data. 0.12a/b/c/e/g/j approved (a/b/c/e trimmed per Calum notes; b includes focus 7; g flipped after 0-conv data verify; j clones 3,798 Austria Ritalin negs to Germany Ritalin 17883563191). 0.12d context-corrected (reject → approve-on-infants-only; kids/teen/kinder/enfant stay alive — child sub-niche banked to memory/feedback_children_supplement_niche.md). 0.12f heavily trimmed (6 off-topic on Shop-COM+Shop-DE only). 0.12h rejected (student terms deferred to Q5). 0.12i audit complete — 128/137 brand-out terms are purchase intent; scope expanded from 3 ENABLED to ~134 non-brand/non-legacy/non-retargeting campaigns incl. RecoverUp PMax UK/USA and Discovery UK Competitor-Leads. Full breakdown: v4.0/go-live-rundown.md 0.12a–0.12j rows. Decision JSON: v4.0/agent/wave-0.12-decisions-2026-04-18.json. Deploy script pending (awaiting final 0.12i scope confirmation, then --dry-run)
18 Apr Daily Audit automation live BrainzymeSnapshot Windows Task Scheduler registered (AI-WORKSTATION-, runs daily 08:47, Interactive only). First snapshot pulled + pushed: CPA £28.09 (−2.5%), ROAS 1.45x (+2.8%), 226 campaigns, 0 critical / 12 warning alerts. Dashboard Daily Audit tab now self-refreshing. Done
18 Apr Dashboard v4.0-alt refresh (all 7 tabs + Wave 0.12 Review) Overview/Architecture/Issues/Landing/Budget/Execution Log all reconciled to current state (43 campaigns, £41,670/mo, Perimenopause + Gut-brain + ADHD LPs added, max conv value, L2 done, H3 pivoted). New Wave 0.12 Review tab with 10 sub-wave decision cards + localStorage persistence. Done
18 Apr Session 28 absorbed, rogue v4.0 archived, co-work migration Session 28 superseded by Session 32 (active). Rogue v4.0 (at Desktop/co-work/) archived. Full co-work migration to F:/Claude Root/ — 20 folders, 114 path rewrites, Pinecone orphan purge (1,226 stale vectors). Done
18 Apr PIL v5 overrun fix 16 headlines rewritten to fit 936px 4:5 budget. Fail-loud _check_line_fits clamp wired into all 4 v3b composites in pil_v5.py. Auto-shrink permanently banned. 50 catalog entries PIL-recomposited 4x5+sq. Done
17 Apr Daily Audit tab + snapshot cron Shipped dynamic manifest-driven audit viewer; pipeline/snapshots/manifest.json. Windows Task Scheduler template (tools/setup_snapshot_task.bat) — registered 18 Apr. Done
14–15 Apr Creative library lockdown PIL v5 single source of truth. v3b three-format unified (4:5 / 1:1 / wide). Canonical library auto-ingest on approved heroes. Scale-anchor ref pack kills oversized-bottle at source. 2026-04-15 flat-colour PIL deferred until needs-work text/product overlap items cleared. Done
14 Apr ADHD supplements blog LP built Editorial blog framing for legacy SERP UK ADHD campaign. adhd-supplements-guide.html live. Content-fixed 14 Apr. Git 9f4b871. Wave 8.2b compliance review pending
13 Apr Wave 8 reconciliation vs Session 30 8.1 retired (no full rebuild needed). 8.2 becomes primary path (LP swap). 8.7 retired. ADHD SERP strategy pivoted: LP swap replaces full rebuild. Done
12 Apr Wave 8 post-audit (15 items) Carried forward into go-live-rundown.md. Orthogonal to v3.0 tracker (which is still valid). Done
12 Apr PMax purchaser exclusions Applied GA4 Purchaser lists as user-list exclusions on 18 v4.0 PMax campaigns. 18 ops. Done
12 Apr Neg-keyword shared sets attached Brand list (11004385546, 137 terms) + general (7843897972, 43 terms) + market-specific attached to 13 Search + 4 DG. 35 ops Search, 8 ops DG. Done
12 Apr Brand exclusions on 18 PMax 3 shared brand-exclusion sets (Universal 10711540331, DE 11010198918, FR 11011151287) applied. 25 ops. Done
12 Apr YT Awareness (4 DG campaigns) deployed PAUSED UK 23747058437 · DE 23751692320 · FR 23747062952 · US 23741770995. 14 AGs, 26 DemandGenVideoResponsiveAds, £38/day. Seeded with 7 new UGC Shorts + 16 historical winners. Manual unpause after Wave 0.11b UI purchaser exclusions. PAUSED
12 Apr 14 orphan AGs removed from legacy PMax 14 v4.0-named AGs (Professionals, Students, Brain Fog dupes, etc.) removed from 3 legacy UK/DE/FR brand PMax. Legacy AGs (GA4 All Users, Purchasers, seasonal) untouched. Script: cleanup_pmax_v4_brand_ags.py. Done
11 Apr US PMax campaigns deployed PAUSED PMax US Brain Fog (23750480107, AG 6699372815) + PMax US Gut-brain (23750480365, AG 6699373220). MC feeds + listing groups + search themes + custom audience signals wired. Interim LPs until dedicated LPs built. PAUSED
9 Apr ROAS targets removed from all PMax Switched to max conv value on all 15 new PMax + 4 legacy brand. Allows learning without over-constraint. Revisit when creative assets are fully refreshed. Done
9 Apr Audience signals on 13 Search campaigns 923 observation-mode criteria: 39 remarketing lists (GA4 All Users + CPC Interactors + Customer Match per market) + 884 in-market audiences (68 universal health/wellness). bid_modifier=1.0 (observation only). Closes L4. Done
7 Apr Wave 0.5 creative refresh 11 RSAs rebuilt across 5 campaigns — removed stale seasonal, added rapid-onset hooks per feedback guardrails. Done
6 Apr Wave 0 technical blitz Logos (15 PMax × 2) · DE Gut-Hirn EU_POLITICAL_ADS exemption · MC feed link × 3 PMax · listing group filters × 3 PMax · 104 sitelinks on 13 Search · 104 callouts on 13 Search · UTM tracking on 28 campaigns. Done
6 Apr LP modular system deployed Shared component system: _shared/style.css, config.js, components.js. 13 auto-rendering components. Both EN LPs refactored — ~1,600 lines removed. Git 668efe5. Done
5 Apr Creative formats extracted Separated creative format specifications into dedicated creative dashboard (creative.html) Done
5 Apr Matching principle defined Google = keyword-matching (user declares intent). Meta = person-matching (we target based on profile). Documented as core architectural principle. Done
4 Apr PMax architecture split (v4.0b) Expanded from 4 PMax campaigns to 16 (1 per intent cluster × market). Each campaign gets independent budget control and compliance status. Later expanded to 21 with Perimenopause + Gut-Hirn + 2 US additions. Done
4 Apr GABA prioritised + merge philosophy GABA 92–98% transactional vs Dopamine 34–73%. Precursor Education = Priority #1. Never merge campaigns for low volume alone. Done
1 Apr v3.0 audit completed Full account audit across Search, PMax, conversion tracking, budget, and creative. 17 issues identified (3 critical, 5 high, 5 medium, 4 low). Done
1 Apr ROAS guardrails rolled back PMax UK/DE/FR Target ROAS 200% removed. Campaigns were over-constrained, limiting spend and learning. Switched to Maximise Conversions. Done

Daily Audit Reports

Performance snapshots from tools/performance_snapshot.py. Current report shows active issues — mark resolved to hide. Older reports are archived below.

Loading audit reports…

Wave 0.12 — Account-Level Negatives Scope Review

10 sub-waves proposed from 180-day 0-conv search-term mining (£2,715 waste across 500 terms). Empty account-level list 10439392410 is the mutation target. Review each sub-wave, approve/modify/reject, and add notes. Decisions auto-save to browser. Claude reads this state before executing the batch mutation.

✓ Do = low risk, proceed as proposed · ⚠ Trim = proceed with modifications · ⏹ Hold = blocks on decision/audit

Compliance Q1–Q4 — Wave 1 Unpause Blockers

Four risk-appetite decisions blocking Wave 1 campaign unpauses across UK, FR, and DE. Each question is tied to a browser-verified landing-page compliance issue from the 6 April audit. Answering all four unblocks ~11 PAUSED Search + PMax campaigns for unpause.

⏹ Critical = ASA / HWG / ANSM / ASA exposure · Decisions auto-save to browser · Export JSON when done and paste back in chat.

Go Live 1 — Urgent Decisions to Move Forward

Live, in-play issues blocking Phase 1 launch. Each subsequent Go Live N tab will hold the next set of pending blockers. Answer the dropdowns + add notes — auto-saves to browser. Export JSON when done and paste back in chat.

⏹ Critical findings below the buttons summarise what changed since 2026-04-13 dashboard refresh · Decisions auto-save · Export JSON when done.

⚠ POLICY UPDATE 2026-04-25 — Shopify-only LPs

All landing pages ship on Shopify going forward. GitHub Pages LPs (apps.nutritionalproducts.org/landing-pages/*) are DEPRECATED as legacy reference. No new GitHub Pages LPs. Memory ref: feedback_lp_deployment_policy_shopify_only.md.

Phase 1 launch order: 1) UK ADHD blog FIRST (Session 38 ports, ~95% ready). 2) Existing ENABLED brand catchers ranked by 90d revenue: PMax DE £29.9k → PMax UK £21.6k → PMax FR £10.3k → PMax US £3.7k → SERP brand cluster. 3) Wave 1 Quick Wins. 4) Wave 2 GABA/Dopamine (single-LP launch, A/B deferred). 5) DG last.

Critical Findings (2026-04-25)

  • Session 38 ADHD Shopify port ~95% ready — 7 blog variants (A–F final + base) published 2026-04-23/24. Going live very soon. First campaign to launch. Default variant B = f-final.
  • Session 21 image template library final — scaled FLUX gen ready (heroes, illustrations, wides, blog).
  • Session 25 marcom matrix complete — scaled copy gen with lensing, matrix, lexicon, localisation.
  • The 8 expected GABA/Dopamine educational Shopify LPs were never built. What was built (2026-04-20→24) is 6 alternate-URL product pages: UK /products/buy-gaba-supplements + /products/buy-dopamine-supplements; US /products/gaba-supplements + /products/dopamine-supplements; DE /products/gaba-supplement + /products/dopamin-supplement. Same ELITE/PRO products, different SEO handles. These are Phase 1 launch destinations; Shopify blog versions go in build queue.
  • FR has zero GABA/Dopamine content of any kind. No product handle, no Shopify blog. FR is the laggard.
  • GitHub Pages educational LPs deprecatedprecursor-education.html, dopamine-guide.html, pre-port adhd-supplements-guide.html. Legacy reference only. Do not route new ad traffic.
  • Day-Zero baseline captured 2026-04-24: 90d account totals £80,258 spend / 3,080 conv / £26.06 blended CPA. PMax = 82% of spend at £26.87 CPA. Search at £8.71 CPA most efficient.
  • UTM schema v2 shipped 2026-04-24 — SoT at v4.0/utm-url-rules.md. Per-campaign register in sheet tab "2026 Launch UTMs", 38 rows.
  • 2 DE Ritalin PMax campaigns ENABLED at £0.01 budget, zero spend in 90d. Effectively dead. In Phase 1 scope. Decision needed.
  • store_urls.json refreshed 2026-04-24 19:41:54. UK 2,858 / US 123 / DE 142 / FR 119.

Go Live 1.1 — Action Blocks (rearranged for speed)

Reframed from Go Live 1 (decision tracker) into blocks of work that can be done quickly, ordered by speed-to-launch. Each block lists the action, who's blocked, and the step-by-step. Calum's directive 2026-04-27: ADHD ad campaign go-live + refresh of existing PMax brand campaigns are top priority because they're easy wins. Built from v4.0/quiz-rebuild/MORNING-BRIEF-2026-04-27.md + PENDING-TASKS-REGISTRY-2026-04-27.md + Opus 4.7 pre-launch review.

Layering note: Go Live 1 (left of this tab) remains the canonical decision-tracker for A–K + B2/C2. This tab is the execution view — sequence + steps, not options.

Block 1 — Quick Wins (do FIRST · ~1–2 hours total)

These two unlock the highest immediate revenue with the least effort. Both are mechanically ready — only Calum sign-off is needed before Claude executes.

1.1 — ADHD campaign go-live (RSA URL swap on 11666978147)
Why now: ADHD F2 article live since 2026-04-20. Campaign still routes RSAs to legacy /pages/focus-for-neurodivergent (RED ASA per Dec 2025 ruling). Trickle at £12/day burning cash on bad LP. Resolves H2 + H3 from Opus 4.7 pre-launch review (= P5 in pending registry).
Effort: ~10 min (CEP brief + execute + budget restore).
Page: Variant B = /blogs/news/adhd-supplements-guide-f-final (per Go Live 1 decision A — f-final is canonical Calum-approved).
Step-by-step:
  1. Calum: confirm green-light to swap final URL + restore budget £12 → £60+/day.
  2. Claude: python tools/google_ads_get_ads.py --campaign 11666978147 → export current RSA final_urls + budget id.
  3. Claude: build CEP brief (preview of every RSA URL change + budget id change). Show to Calum.
  4. Calum: approve CEP brief.
  5. Claude: execute mutation (RSA URL update + campaign budget update). Stamp UTMs per v4.0/utm-url-rules.md: bz_wave=8.2c-v2, bz_lp=adhd-blog-f-final, bz_compliance=clean.
  6. Claude: postcheck via GAQL — confirm new URLs live + budget reflects new value. Log to v4.0/deployment-log.md + cross off in go-live-rundown.md.
1.2 — Refresh existing PMax brand campaigns (UTM-stamp + brand-set audit)
Why now: 8 ENABLED brand catchers running TODAY without UTM v2 stamps. Wave 0.12i partial only attached the brand-out negative shared set to 3 of 11 ENABLED campaigns. Stamping now starts capturing clean attribution data immediately — zero disruption since campaigns already running. Resolves P20 + Decision G(b) + Decision J.
Effort: ~25 min total (10 min audit + 15 min mutations).
Campaigns (8): SERP UK Brand 816611992 · SERP US 13522300536 · SERP FR 13542095497 · SERP DE 14357494269 · PMax UK 17485671252 · PMax US 17882283348 · PMax DE 21771203454 · PMax FR 21787222699. Already attached: 17883407692 (DE Austria Ritalin), 17883563191 (DE Germany Ritalin), 11666978147 (SERP UK ADHD).
Step-by-step:
  1. Calum: green-light "stamp + attach" pass on the 8 brand catchers.
  2. Claude: GAQL audit — for each of the 8, query campaign_shared_set to confirm whether brand-out shared set 11004385546 is attached. ~10 min.
  3. Claude: build CEP brief listing missing attachments + UTM stamp deltas for each campaign. UTM minimum: utm_source=google, utm_medium=cpc, utm_source_platform=google_ads, utm_campaign={campaign_id}, utm_id={campaign_id}, bz_wave=legacy_brand, bz_lp={destination_handle}, bz_product={product_slug_or_brand}, bz_compliance=clean.
  4. Calum: approve CEP brief.
  5. Claude: execute — (a) attach brand-out shared set to any of the 8 missing it; (b) stamp UTMs on every RSA + every PMax final URL where applicable; (c) log to deployment-log.md.
  6. Claude: postcheck — pull a sample click after 1 hour, verify UTMs land in GA4 acquisition + Google Ads click data matches stamp.

Block 2 — Calum-blocked approvals (15–30 min each · can be done in any order)

Each item below needs only Calum's call. Once approved, Claude executes immediately. Do these in parallel with Block 1.

2.1 — Interact 503 live triage (P1)
Bleed: Live /pages/brain-issues-quiz silently dropping email leads via broken Interact iframe (HTTP 503 every API call). Affects campaigns 23720254316 (UK Problem-Aware) + 23723792345 (US Brain Fog).
Effort: ~15 min Shopify edit.
Step-by-step:
  1. Calum: approve Option 1 (replace iframe with maintenance message + Shopify form, capture leads to GHL).
  2. Claude: pre-flight drift check on UK theme (python tools/shopify_theme_drift_check.py --store uk --report-only).
  3. Claude: edit page section — remove iframe, drop Shopify form snippet capturing email + first name + cluster intent. Wire submit to relay.nutritionalproducts.org/quiz/submit when relay lands; until then to native Shopify Customer Account creation as fallback.
  4. Claude: deploy via tools/shopify_publish_page.py. Postcheck the 200 + verify form submits to GHL inbox.
2.2 — Publish 5 overnight articles (P6)
Articles: Quiz A 1001005187453 · Quiz B 1001005318525 · Quiz C 1001005351293 · GABA 1001005154685 (CLEAN) · Dopamine 1001005220221 (AMBER — needs 2.3 first).
Effort: ~5 min per article (preview → sign off → publish command).
Theme: all live on UNPUBLISHED theme 185834471805. Preview requires staff cookie in browser session.
Step-by-step (per article):
  1. Calum: open preview URL (e.g. https://brainzyme.com/blogs/neurodiversity-tips/brain-fog-quiz?preview_theme_id=185834471805). Visual QC.
  2. Calum: green-light publish.
  3. Claude: run python tools/shopify_publish_page.py config/shopify_publish/<handle>.json.
  4. Claude: confirm published=true, log entry to v4.0/shopify-build/v1-firstsync/DEPLOYMENT_LOG.md + one-liner to v4.0/deployment-log.md.
  5. Claude: trigger post-publish QC (Block 4).
2.3 — Dopamine Guide AMBER sign-off (P3)
What: Dopamine article (1001005220221) carries AMBER compliance flag. Tonight's port softened to "support" / "may help" / "supports natural dopamine pathways" — no "boost / increase / fix dopamine", no "smart focus" customer-facing.
Effort: ~10 min Calum review.
Step-by-step:
  1. Calum: open Dopamine preview, read all "support / may help" phrasing in context.
  2. Calum: approve as-is OR mark specific phrases for retighten.
  3. If retighten: Claude edits article body via Admin API, re-renders, reverts to step 1.
  4. If approved: feeds straight into 2.2 publish step for Dopamine.
2.4 — 85% claim source data for Quiz Variant C (P2)
What: Variant C result copy originally had "85% of users reported..." — unsubstantiated legacy claim, REMOVED in v1 in favour of safer "Many who addressed their [cluster] pattern reported a meaningful improvement..."
Effort: ~30 min Calum data pull (or accept removal as final).
Step-by-step:
  1. Calum: decide — (a) leave the safer copy in place and ship Quiz C as-is, or (b) supply substantiating data from Reamaze tickets / Judge.me reviews to restore a verified percentage.
  2. If (b): Calum sends data → Claude updates copy with verified figure + sources documented in quiz-logic-spec.md §6.
  3. If (a): no further action; Quiz C ships in 2.2.
2.5 — Illustration commission budget approval (P4)
What: 5 sets needed (GABA / Dopamine / Quiz A / Quiz B / Quiz C). ~11 assets per article × 5 = ~55 image assets.
Cost: ~£3–5 per image via FLUX 2 Pro / GPT-Image-2 = total ~£165–275. Above the £20 batch threshold — explicit Calum approval required.
Style ref: ADHD F2 architecture inheritance (v4.0/shopify-port/adhd-architecture-template.md).
Step-by-step:
  1. Calum: approve total batch budget (or pick subset, e.g. start with quiz hero illustrations only at ≈£30).
  2. Claude: write per-asset scene briefs in config/illustration_runs/ (5 JSON configs).
  3. Calum: review briefs.
  4. Claude: kick off tools/illustration_run.py with --dry-run first, then for-real with the approved configs. OCR + haiku QC gates fire automatically.
  5. Approved assets land in output/approved/ → Claude inserts into Shopify articles via Admin API. Log batch to deployment-log.md.

Block 3 — Hard blockers before any market unpause (~45 min total)

From the Opus 4.7 pre-launch review (banked in session 32 file). These don't block Block 1.1 ADHD swap or Block 1.2 brand stamping (those are edits to already-running campaigns). They DO block any new market unpause + DG launch.

3.1 — H4: Test-purchase conversion trace per market (P21)
Why: HYROS state unknown after Session 45 theme churn. Without verified test-purchase trace per market, Day-1 conversion data could be miscounted, distorting Smart Bidding + CPA reporting.
Effort: ~30 min, £4 spend (refundable).
Step-by-step (per market UK/US/DE/FR):
  1. Place £1 test purchase via store front (use a discount code if available, refund after verification).
  2. Verify GA4 purchase event fires with correct value + items array.
  3. Verify Google Ads conversion records the click→purchase chain.
  4. Verify Enhanced Conversions hashing OK (no warning in Google Ads UI).
  5. If HYROS still in stack: confirm HYROS records the sale + matches Google Ads source.
  6. Refund test purchase. Log result per market to deployment-log.md.
3.2 — H1: Wave 0.11b DG purchaser exclusions (P22 · Calum UI work)
Why: All 4 Demand Gen campaigns (UK 23747058437, DE 23751692320, FR 23747062952, US 23741770995). Without this, DG re-targets existing Brainzyme purchasers — wastes budget on people who already bought. Hard blocker for any DG unpause.
Effort: ~15 min Calum UI work (Google Ads API blocks this mutation — UI only).
Step-by-step:
  1. Calum: open Google Ads UI → for each of 4 DG campaigns → each ad group → Audiences → Exclusions → add Purchaser custom audience for that market (UK 8409607829 / US 8407827207 / DE 8407261954 / FR 8409628928).
  2. Save each.
  3. Calum confirms in chat — Claude updates v4.0/agent/state.json + crosses 0.11b off the rundown.

Block 4 — Post-publish QC (after each Block 2.2 publish · ~10 min per article)

4.1 — Browserbase secondary QC (P7)
Why: Calum's "check at least twice" directive + Session 38 SOP §2.5. Cannot run pre-publish (staff-cookie blocks preview_theme_id per G13). Must run immediately after each variant publishes.
Tests per article (auto via Browserbase MCP):
  1. Quizzes only: full flow (welcome → questions → processing → email gate → result).
  2. Mobile + desktop viewports (375x812 + 1440x900).
  3. Verify all carousels (Embla) cycle without console errors.
  4. Verify all accordions toggle (Be Yours .accordion__content + .open class).
  5. Verify no Liquid leakage in rendered output.
  6. Verify analytics fires on key interactions (lead-gen submit, recommendation click).
  7. Log Pass/Fail per article to deployment-log.md.

Block 5 — Build queue (parallel work · can start any time)

These don't block Phase 1 launch but turn single-LP launches into proper A/B tests + extend coverage to deferred lanes/markets.

  • P8 — Engine v1.1: DEV-03 processing micro-question + DEV-04 editorial modules below quiz outcome.
  • P9 — Spec calibration: ORIGINAL routing reachability in Variant A, hormones threshold tune (35% → 30%), per-variant DEV-01 recalibration.
  • P10 — Phase 2 localisation: US/DE/FR clones of winning UK quiz variant (after ~3 weeks of A/B/C data).
  • P11 — Phase 3 quiz lanes: Peri symptom checker, Dopamine/GABA recommender, Student/Worker focus, US-only ADHD quiz.
  • P12 — Phase 4 collection-vs-quiz A/B: per lane (GABA UK, Dopamine UK, Brain Fog UK, Peri UK).
  • P13 — Lane format build queue: US ADHD aggregating collection, US GABA/Dopamine FDA blogs, DE Konzentration/Gut-Hirn/GABA/Dopamine, FR Anti-Fatigue Mentale + Ritalin TDAH compliance review.
  • K (Go Live 1): UK GABA + UK Dopamine Shopify blog LP build (mirrors ADHD pattern, fastest path to A/B in highest-volume market).

Block 6 — Infrastructure (parallel · not launch-gating)

  • P14 — Python relay to Coolify VPS: spec at v4.0/quiz-rebuild/python-relay-spec.md; FastAPI service at relay.nutritionalproducts.org/quiz/submit; replaces console.log + localStorage queue.
  • P15 — GoHighLevel workflows: inbound webhook + tag schema + market-specific email nurture sequences.
  • P16 — A/B test registry entries: TEST-UK-BRAINFOG-QUIZ-{A,B,C}, TEST-UK-GABA-{ALT,BLOG}, TEST-UK-DOPAMINE-{ALT,BLOG} in v4.0/agent/ab-tests.json.
  • P17 — A/B traffic split mechanism: random JS redirect 33/33/33 with localStorage persistence on the canonical entry article, fanning out to A/B/C handles.
  • P18 — Dashboard filter dropdown: add new recommendation_v2.choice values to campaign-lp-strategy Overview tab filter (line ~99 in index.html).
  • P19 — Go Live 2 tab trigger: when next batch of launch decisions arrives (post-Phase-1 launch data, Phase 2 localisation kick-off).
  • schedules.json auto-sync hook (S26 #1): dashboard-freshness only.

Block 7 — Older session 32 residual (P23 · not launch-gating)

  • 2 DE Ritalin PMax campaigns ENABLED at £0.01 budget (Decision D in Go Live 1).
  • Wave 8.4 / 8.5 / 8.6 (tROAS legacy brand PMax / audience signal refresh / product feed QA).
  • Wave 0.13 / 8.8 campaign-specific negatives.
  • Search theme expansion (40–50 themes/AG on UK Peri / UK GABA / US GABA / US Brain Fog).
  • 12 legacy DG campaigns bleeding £2,937/mo at 0.21x ROAS — separate retire decision.
  • smarter-brain LP: zero paid traffic but still indexable. Recommend noindex or rewrite within 2 weeks of launch.

Suggested order of operations for today

  1. Morning (Calum): approve Block 1.1 ADHD swap + Block 1.2 brand stamping. Open the 5 article previews from Block 2.2. Triage Interact 503 (Block 2.1).
  2. Morning (Claude): execute Block 1.1 (~10 min) + Block 1.2 (~25 min) once approved. Run Block 3.1 H4 test purchases (~30 min, can be done in parallel by Calum).
  3. Midday (Calum): approve Dopamine AMBER (2.3) + 85% claim decision (2.4) + illustration budget (2.5).
  4. Midday (Claude): publish each approved article (Block 2.2). Trigger Block 4.1 QC after each.
  5. Afternoon (Calum): 15 min in Google Ads UI for Block 3.2 DG purchaser exclusions.
  6. Afternoon (Claude): kick off Block 5 build queue (UK GABA + Dopamine blog ports first, mirroring ADHD pattern).
  7. Evening: Block 6 infrastructure work begins in background.
FINAL THESIS (2026-04-26) — The leak is FORMAT-ALLOCATION. Product-demo CR (0.0239%) is 6.6x testimonial CR (0.0036%). The single winner (JmxIGIN-syw) is the only animated product-demo in the corpus and carries 95% of attributed conversions. Yet product-demos are 3% of corpus and testimonials soak 86% of impressions. PMax-broad outperforms every Demand Gen niche audience by 8-23x across UK / DE / FR / US. Single highest-leverage move: commission product-demos and route them through PMax. LP routing fix and 17-creator format-diversity test are secondary. See Master Decisions tab.
EARLIER REFRAMES (kept for context). (1) Wave 4: engagement is fine (85% avgViewPct in 2024-25); leak is post-click — investigate LP + audience. (2) Wave 1-3: commission new creative for the 0.52% winner rate. Both are now narrower views of the format-allocation thesis. Engagement-fine reframe was correct but incomplete; commissioning reframe was right about needing new creative but wrong about format direction.
Videos audited
105 + 198 audio-triaged
of 907 catalogued — multimodal + audio Shorts
Multimodal cost
£3.31
Gemini 2.5 Pro across 4 waves
Compliance blocks
29 (27.9% of watched)
HARD — full creative replacement
Scale candidates
3 / £700 test
jPH first · qp second · sUaN after edit
Format-allocation gap
6.6x
product-demo CR vs testimonial CR · PMax 8-23x DG

Master decision — format-allocation is the bottleneck

Product-demo CR is 6.6x testimonial CR. PMax-broad CR is 8-23x every Demand Gen niche audience across all 4 markets. The winner JmxIGIN-syw is the only animated product-demo in the corpus and carries 95% of attributed conversions, almost entirely from PMax-broad — not from the Students / ADHD / Workers DG segments that were carefully targeted to it. Commission more product-demos, deploy via PMax, pause Workers DG. LP routing + format-diversity test are secondary.

Live State Reconciliation — 2026-04-27

Audit ran on 90-day historical data. Triangulation against today's live state shows: Action 1 (pause Workers DG) is fully done — every Demand Gen campaign is paused. The actual leak today is PMax under-performance across all 4 markets (ROAS 0.9-1.6x vs 3.5x target). PMax FR is losing money on every spend pound. New #1 lever: fix PMax campaign-config, not commission new creative.

Today's KPI snapshot (7-day rolling)
Spend
£4,669
vs £20k/mo target — ON TRACK
CPA
£24.51
22% over £20 target
ROAS
1.6x
vs 3.5x target — LOW
Conversions
190.5
+4.7% WoW
Active campaigns
11 / 226
215 paused
Action status (audit recommendation × live state)
#ActionStatusReason
1 Pause DE + UK Workers DG; reroute to PMax ✓ ALREADY DONE All DG campaigns paused; PMax now the bottleneck. Audit's "3-7x lift" estimate invalidated.
2 Commission 3-5 product-demo variants STILL VALID Structural recommendation independent of pause state.
3 Fix LP routing — TOF → Bundle LP STILL VALID Reframed: applies to PMax asset groups (where TOF traffic now lands).
4 Pause 29 compliance-blocked videos NEEDS REFRAMING 18/29 sat in ADHD/Ritalin DG (now paused). Regulatory exposure neutralised at campaign level.
5 Validate 3 scale candidates (£700, 14d) STILL VALID Independent of pause state.
6 Format-diversity test (optional) STILL VALID Optional; runs alongside #2/3/5.
N1 PMax campaign-config audit (asset coverage, signal strength, brand exclusions, 10x-CPA budget floor) NEW — #1 LEVER All 4 PMax miss target. FR (£100/d) and US (£40/d) below the 10x-target-CPA budget floor per playbook.
N2 PMax FR rescue or kill — 0.9x ROAS NEW £761/wk producing £683 conv value = -£78 weekly contribution.
N3 Bump SERP UK ADHD budget £12 → £20/day NEW — tonight Losing 21% impression share to budget at near-target CPA. Cheapest scale lever in the account.
N4 SERP brand UK attribution audit NEW 9.6x ROAS at £3.76 CPA — only profitable engine. May be masking prospect-side weakness.
N5 Batch attach brand-out shared-set to 130 pending campaigns NEW — ops Single operation could unblock the deferred DG/Search pipeline.
Where the budget IS going right now (11 enabled campaigns, 7-day spend)
CampaignTypeMktSpendConvCPAROASDaily £IS-lost (budget)
PMax DE (ex Legacy Smart Shopping)PMAXDE£1,80367.5£26.701.6x£2506.7%
PMax UK (ex Legacy Smart Shopping)PMAXUK£1,40963.2£22.291.6x£1808.3%
PMax FR (ex Legacy Smart Shopping)PMAXFR£76114.1£53.970.9x£1006.4%
PMax USA (ex Legacy Smart Shopping)PMAXUS£3129.2£34.001.1x£401.9%
SERP - k/w: brainzyme DESEARCHDE£1855.0£37.001.6x£303.0%
SERP - k/w: brainzyme UKSEARCHUK£9124.2£3.769.6x£30
SERP UK ADHDSEARCHUK£884.3£20.471.5x£1221.0%
SERP - k/w: brainzyme FRSEARCHFR£182.0£8.969.3x£30
SERP - k/w: brainzyme USASEARCHUS£11.0£1.0914.3x£30
Biggest waste-of-spend right now: PMax FR — £761/week at 0.9x ROAS = -£78/wk negative contribution. 4 PMax campaigns soak 92% of total spend (£4,286 of £4,669) and all 4 miss CPA + ROAS targets. SERP brand UK at 9.6x ROAS is the only profitable engine in the account. The audit's most-wrong recommendation: Action 1 ("pause Workers DG") — already done. Replace with "fix or pause PMax FR by Friday EOD".
Thesis evolution — 3 stages
StageWhenFramingStatus
1. Initial Waves 1-3, early Apr 2026 "Brainzyme has lots of bad ad creative; commission new formats to fix the 0.52% winner rate." Superseded
2. Mid Wave 4, mid Apr 2026 "Engagement is fine (85% avgViewPct). Leak is post-click. Investigate LP + audience." Narrower view
3. FINAL 2026-04-26 (this doc) "Leak is format-allocation. Product-demo 6.6x testimonial CR. PMax 8-23x DG. Commission product-demos, route via PMax." Master thesis
5 actions ranked by lift x ease
#ActionLiftCostTimeStatus
1 Pause DE + UK Workers DG; reroute to PMax 3-7x convs on same budget £0 30 min Awaiting Calum
2 Commission 3-5 animated product-demo variants (PRO / ELITE / Bundle / Energy compare / Bundle vs Single) Structural — current single demo carries 95% of convs £750-£2,000 2-3 weeks Brief drafting
3 Fix LP routing — TOF traffic with "Choose your focus level" hook routes to Bundle LP not single-SKU pages +10-30% click-to-add on hook-matched traffic £0 1-2 hrs Awaiting Calum
4 Pause 29 compliance blocks via existing pause script (18 in medical-intent campaigns — regulatory exposure) Removes regulatory risk; recovers ~200k wasted impressions £0 1-2 hrs Awaiting OAuth
5 Validate 3 scale candidates (jPH first, qp second, sUaN after edit) ~35 conv-equivalents at <£20 CPA if all 3 hit £700 14 days Awaiting Calum
6 (optional) Format-diversity test: Christine Bailey #2 + 11 talking-heads/reviews vs control Directional; tells which UGC persona drives view-through £400 14 days Optional
Combined budget
Pause + reallocate
£0
Reallocation only
Product-demo commissioning
£750-2,000
3-5 motion-graphic assets
Scale-candidate test
£700
14 days · 3 candidates
Format test (optional)
£400
UK + US · 14 days
Open questions for Calum (in priority order):
  1. Authorize Action 1 — pause Workers DG (DE + UK), reroute to PMax. Irreversible without re-spending learning-phase budget.
  2. Authorize Action 2 commissioning budget — £750-£2,000 for 3-5 product-demo variants. Pick motion-graphics partner + sign brief.
  3. Authorize Action 5 £700 scale-candidate test — sequenced, includes compliance review on jPH + sleep-claim edit on sUaN.
  4. Authorize Action 6 £400 format-diversity test — optional; yes / no / defer.
  5. Confirm pause order on the 29 compliance-blocked videos once Path 3 OAuth lands.
  6. DE/FR alternative-positioning angle — deploy "modafinil/ADHS Medikamente" framing alongside new product-demos? (Cross-deliverable flag from LP audit.)
Synthesis insights (cross-deliverable, not in any single source):
  • LP audit and audience audit converge on the same root cause from opposite ends — winner works because of broad-match across hook + LP + audience. Narrow DG hits a narrow LP message; both are too tight at every layer.
  • Format-deployment test is a research instrument, not a CPA lever. With LP and audience as the actual leaks, expect view-through deltas but flat conversion. Reframe internally as format-discovery research.
  • Retention-curve API failure (elapsedVideoTimeRatio 500) means we lose drop-off curve diagnostics. Brief product-demo production with strict 0-3s hook structure since we can't see the second-by-second curve until Google fixes the regression.

Source documents

Master decision doc: F:/Claude Root/v4.0/video-audit/MASTER-DECISIONS-2026-04-26.md
Five deliverables (read-only): v4.0/video-audit/data/landing-page-audit-2026-04-26.md · audience-targeting-audit-2026-04-26.md · format-deployment-recommendations-2026-04-26.md · scale-candidate-test-briefs-2026-04-26.md · retention-curve-500-investigation-2026-04-26.md
Canonical memory: memory/feedback_video_audit_findings_canonical.md

Historical TL;DR (Wave 1-3 + post-Wave-4 reframe). Kept for context. The current master thesis lives in the Master Decisions tab — format-allocation is the bottleneck, product-demo CR is 6.6x testimonial CR, PMax outperforms DG niche audiences by 8-23x. The framing below was correct on engagement but missed format-allocation as the central lever.

Hero recommendation (mid-audit, superseded 2026-04-26)

The audit's main output is NOT “commission new creative.” Engagement is fine (85% avgViewPct). The conversion gap is post-click. Next moves: (a) landing-page + audience audit to find the 0.52% leak, (b) deploy 10–15 unused talking-heads + reviews from inbound supply at low budget BEFORE commissioning, (c) immediate retire of 29 compliance-blocked videos (27.9% of watched library), (d) test the 3 scale candidates.

Action items
1
Pause 29 compliance-blocked videos (27.9% of watched library — large compliance debt) CRIT
Full creative replacement required — no edit can save them. ADHD treatment claims (10), neurodivergent + functional claims (8), minors framing (5), medication alternative framing (2), other (4). Path 3 OAuth (in setup) will allow batch-pause via API.
2
Audit landing pages + targeting CRIT
This is the actual conversion bottleneck. AvgViewPct of 85% across 132 ad-tested videos in 2024–25 with 0% winner rate proves viewers are watching but not converting. Engagement is solved; post-click flow is not.
3
Deploy 10–15 talking-heads + reviews from UGC Explorer HIGH
Test before commissioning. Talking-heads sit in inbound supply at 18.6% but ads use them at 1.8%. Reviews 10.7% supply / 1.8% use. Format diversity exists — selection process is over-filtering toward testimonials.
4
Test 3 scale candidates MED
qp_HBU1qnak (UK day-in-life), jPH_ClAPArM (UK multi-creator rapid-cut), and sUaN9GS-MYc (UK “Mum Life” — Wave 4 addition). All untested. All predicted similar_to_winners by Gemini calibration pass. Low-budget exposure to confirm.
5
Test sUaN9GS-MYc (UK Mum Life) LOW
Third audit-flagged scale candidate, discovered in Wave 4 audio triage. Same test parameters as action 4: low budget, same audiences as current winner JmxIGIN-syw, 2-week window.
29 compliance-blocked videos (27.9% of watched library) — grouped by violation pattern
PatternMarketCountExample IDsAction
ADHD treatment claims (explicit) UK 10 hDz0I5lECaI 5dgTTm0Cwro 1szLC2Ij5Uw oP5Z8GmLmrk GJhhjxCP6xU bjYUQnTWqM0 I2rVy2aiTNA JTfr_5TFOZE qgGWjtQNJp4 RETIRE
Neurodivergent + functional cognitive claims UK DE 8 DiqR1Vhrs88 Rnx_mVw-J1Q HUj-kqLM-tE JHgCHVLcBAo fYZMj_I3_9k uoIHNKXzOdo aG8K7P93noQ nu_BZXx5-Ck RETIRE — DE alternative-positioning exception does NOT cover
Minors / paediatrician framing UK DE 5 Blk0oZCIX28 BlyOItbM-9k Xr-KqyuzwMM tQoKB6M5H88 CFVTPmpeqwU RETIRE — supplements to minors prohibited
Medication alternative / replacement framing UK 2 iLx0NZ9cCCY _TgdQ7Dbo_A RETIRE — highest legal exposure
Other (treatment-claim language, sleep claims, etc.) mixed 4 various — see audit.db REVIEW per video
Note: Full ID list in audit.db: SELECT youtube_id, market FROM gemini_analysis WHERE compliance_block=1. All require full pause + creative replacement — no edit can save them. Path 3 OAuth (in setup) will allow batch-pause via API once authenticated.
UGC Explorer (inbound supply, n=429) vs Audit watched (outbound use, n=55)
FormatInbound supply (UGC)Outbound use (Ads)GAPVerdict
testimonial 39.2% 72.7% +33.6pp over-deployed
talking-head 18.6% 1.8% −16.8pp deploy more
review 10.7% 1.8% −8.9pp deploy more
routine 9.8% 0.0% −9.8pp absent
product-demo low 5.5% OK
day-in-life low 10.9% ~+5pp slightly over
Key insight: Format-lock is a selection problem, not a creator-supply problem. Talking-heads and reviews exist in inbound supply at the rates we'd want — they're not being chosen for ad deployment. Test these formats with low budget BEFORE briefing new commissioned creative. Saves the cost of commissioning, validates the actual problem first.
Year-by-year — engagement vs winner rate
YearNAd-testedWinnersAvg View %Avg Views
2017–2022 179 0 0 9–78% 232–9,372
2023 77 9 0 67.0% 4,948
2024 74 15 0 85.2% 30,429
2025 324 117 0 85.1% 16,318
2026 124 50 1 60.1% 5,943
Key insight: AvgViewPct of 85% in 2024 + 2025 means viewers ARE watching the videos all the way through. The 0% winner rate across 132 ad-tested videos in those years isn't a creative-quality problem — it's a downstream conversion problem. The video is doing its job. Something post-click is not.
Annotation: Winner JmxIGIN-syw published 2026-01-06 — NOT 2018 as initially hypothesised. See What We Got Wrong → Correction 3.
Gemini 2.5 Pro multimodal — predicted vs actual

Zero false-positive predictions in 55 videos

The model's predicted_cpa_band aligned with actual classification consistently. ONE quirk: it doesn't downweight compliance flags when predicting CPA — TuIJG5PjFJE was predicted below_winner_avg despite being unrunnable due to ASA dual-trigger.

Video IDPredictedActual classificationMatch?Note
JmxIGIN-syw winner WINNER YES The actual winner. Calibration anchor.
qp_HBU1qnak similar_to_winners untested predict UK day-in-life. Scale candidate #1.
jPH_ClAPArM similar_to_winners untested predict UK multi-creator rapid-cut. Scale candidate #2.
TuIJG5PjFJE below_winner_avg COMPLIANCE BLOCK QUIRK Model didn't downweight ASA dual-trigger. Compliance is orthogonal to creative-quality prediction.
iLx0NZ9cCCY below_winner_avg COMPLIANCE BLOCK QUIRK Same orthogonality; model recognised low CPA potential, missed treatment-claim risk.
9G3FpMl4Gbc below_winner_avg COMPLIANCE BLOCK QUIRK Neurodiversity-framing not flagged at compliance layer.
Lesson for v2: add a compliance_flag field to the multimodal prompt schema, separate from CPA prediction. Compliance is a hard-stop gate; CPA is a prediction surface. They shouldn't be conflated.
4-wave cost ladder — total £3.31
WaveVideosCost (GBP)Outcome
Phase B (Tier 1 GAds pull) 907 £0.00 DB populated, 1 winner identified
Phase C (YouTube metadata + analytics) 907 £0.00 552 retention rows; transcripts blocked → multimodal canonical
Phase D (Drive + channel sync) 907 £0.00 716 untested, fuzzy-matched
Phase E1 (heuristic scoring) 907 £0.00 watch_score per video, queue identified
Phase E2 wave 1 (winner) 1 £0.02 First multimodal — JmxIGIN-syw
Phase E2 wave 2 (selective) 5 £0.09 Compliance blocks discovered, format-lock confirmed
Phase E2 wave 3 (full score-65+) 49 £0.90 Full corpus map at 6.1% coverage
Phase E2 wave 4a (Shorts audio, 198) Complete (50 multimodal + 198 audio) 198 £0.08 Audio triage at fraction of multimodal cost
Phase E2 wave 4b (Shorts multimodal, 50) 50 £2.22 22 new compliance blocks discovered
Total 105 + 198 audio £3.31 Audit complete with two reframes + 29 compliance blocks
Cost-engineering note: initial spec was £50 (200 untested videos × £0.10). Real-world cost landed at £1.01 — 50× reduction. Drivers: (1) per-video cost was actually £0.018 not £0.10, (2) scope narrowed to score-65+ representatives not all-untested, (3) deduplication pilot ruled out a redundancy-pruning strategy that would have over-cut. See What We Got Wrong for the full reasoning trail.
3-tier architecture
Tier 1 — Proven (Google Ads) |-- FROM asset (catalogue, 907 videos) |-- FROM ad_group_ad_asset_view (Demand Gen + Video campaign attachments) `-- FROM asset_group_asset (PMax attachments) | v Tier 2 — Diagnostic (YouTube) |-- videos.list (metadata + statistics) |-- Analytics aggregates (avg view % as retention proxy) `-- [BLOCKED] Transcripts (deprecated -- IP banned, multimodal supersedes) | v Tier 3 — Evaluation (Gemini 2.5 Pro multimodal) |-- YouTube URL direct (~60% success) |-- Files API fallback (yt-dlp download -> upload, ~40% recovery) `-- Strict-enum tag emission (UGC vocabulary) | v Dashboard + audit.db
Canonical data flow

Why three tiers?

Tier 1 answers “what did we run and what worked?” — ground truth from Google Ads. Tier 2 answers “what's the engagement profile?” — YouTube Analytics aggregates. Tier 3 answers “what's IN the video?” — Gemini multimodal extracts format, hook style, claim type, compliance flags. Each tier feeds the next; only Tier 3 costs money. Tier 1 + 2 fit in the free quota.

Cost-engineering decisions
DecisionBeforeAfterSaving
Per-video benchmark £0.10/video assumed £0.018/video actual −82%
Scope All 200 untested Score-65+ reps only (49) −75% volume
Transcript-first dedup Cluster 381 then watch reps Skip (380 singletons + 1 pair found) avoided dead-end
Transcript pulls Required dependency IP-banned → multimodal direct better outcome
Audit-of-the-audit. Five corrections we made along the way. Each one is a place where the initial mental model was wrong, and what we did about it. These are learnings, not failures — the audit reached the right conclusion because we caught these mid-flight. Banked here so the next audit doesn't repeat them.
1
Cost estimate inflated by ~50×
Before: “200 untested videos × £0.10 = £50 multimodal sweep cost.”
Reality: Real cost £0.018/video, scope was untested-only-of-cluster-reps not all-untested. Final spend £1.01.
Lesson: Don't extrapolate per-video costs from stale spec; benchmark on a 1-video pilot first.
2
Deduplication assumption was wrong
Before: “Many videos are duplicates/versions of the same script — cluster by transcript and only watch one per cluster.”
Reality: Transcript clustering on 381 videos found 380 singletons + 1 pair. Content is highly DIVERSE, not redundant. The intuition reflected ad-creative variant pattern, but channel content is mostly one-off.
Lesson: Test the dedup assumption with a small clustering pilot before designing budget around it.
3
Winner vintage hypothesis was wrong
Before: “Winner is from 2018; recent ad creative may be drifting.”
Reality: Winner JmxIGIN-syw published 2026-01-06. Recent. The vintage analysis surfaced a different finding entirely (engagement is fine, conversion is the bottleneck).
Lesson: Verify dates from primary source data, never from initial mental model.
4
Watch_score rubric had a structural ceiling
Before: 80-point threshold for auto-watch.
Reality: Score capped at 75 because videos.view_count column was missing from schema (YouTube Data API returned statistics.viewCount but no place to persist). Fixed with view_count column + repull. Winner went 75 → 95.
Lesson: When designing scoring rubrics, inventory the columns the rubric depends on BEFORE writing scoring logic.
5
Transcripts were a planned dependency that became a non-dependency
Before: “Pull transcripts → cluster → score → multimodal-only-on-cluster-representatives.”
Reality: YouTube IP-banned the timed-text endpoint for 6+ hours. Pivoted to multimodal Gemini directly — which turned out to be BETTER (visual + verbal + on-screen text in one call) than transcript-only would have been.
Lesson: Sometimes external constraints force a strategy shift that improves the outcome. Don't fight blocks; pivot.

Intel — What the Data Says Right Now

Intel is the current-state layer of the agent's three-layer operating model. It synthesises the three data rails — Google Ads, GA4, and Shopify — into a single reconciled view of account health. Because no single platform is the source of truth, Intel exists to resolve discrepancies and surface the real numbers before any tactical or strategic decision is made. Sources: memory/ref-tracking-triage.md, memory/CANONICAL_intel_sop.md, memory/feedback_ga4_canonical.md. Latest dataset: v4.0/shopify-build/v1-firstsync/.

Three-Rail Snapshot — UK 24-Month Verified (Session 38B, April 2026)
Finding Platform View True / Reconciled Status
GA4 order capture rate 35–65% of Shopify orders Shopify is SoT for revenue GA4 Under-reports
UK ROAS (mean, 24mo) 2.80× (Google Ads reported) 9.43× (true, Shopify-reconciled) 3.34× uplift
UK ROAS peak 14.37× (Sep 2025) Compressed under scaling
UK Key Event inflation 1.26–3.45× vs purchases Use Purchase event only Key Events polluted
Refund rate 0.94% (flat) Not a profit lever Monitor only
April 2026 CVR Rebound vs Q1 New buyer cohort signal Positive
Brand search ROAS ~41× (true) 2% of total spend Severely underfunded
DG 2026 campaigns (8) 0.36× platform ROAS ~1.20× true ROAS (below breakeven) Pause candidates
US ecommerce Not wired to canonical GA4 property Blind spot
Reference Files

Where Intel Lives

Triage SoT: memory/ref-tracking-triage.md — 3-rail source-of-truth ownership table, empirical reconciliation tolerances, 7 canned triage queries, 4 known anomalies.
Intel SOP: memory/CANONICAL_intel_sop.md — step-by-step protocol for producing a reconciled snapshot.
GA4 canonical: memory/feedback_ga4_canonical.md — OAuth Desktop credential, 4 GA4 property IDs, conversion-vs-purchase inflation rule, legacy property exclusion.
Shopify datasets: v4.0/shopify-build/v1-firstsync/ — raw order exports used for reconciliation.
BNS admin token: tools/bns_sheets.py — use bns-token.json for all GA4 and Sheets reads (not legacy brainzyme@ credential).

Campaign Intel Runs (3-rail pulls per chain run)

Intel briefs from /campaign-strategy. Read-only: Intel is published as part of the Strategy brief; approval happens at the Strategy + Tactics level.

Tactics — This-Quarter Plays & Kill/Scale Calls

Tactics is the short-horizon layer: in-flight tests, immediate optimisation actions, kill/scale decisions, and Calum-action items that need to be resolved within the current quarter. Currently sourced from session files 32 and 38B. This section will be promoted to a canonical home in an upcoming agent-playbook session — for now it is the holding ground for open items surfaced by the Intel layer.

Open Calum-Action Items — Session 38B (April 2026)
1
PAUSE 8 × 2026 Demand Gen campaigns
Total spend: £10,800 at platform ROAS 0.36×. True reconciled ROAS ~1.20× — still below breakeven (≈1.5× required at current margins). Campaigns running since Jan 2026 with no improving trend. Recommended action: pause all 8, reallocate £10.8K/mo to brand search + top PMax performers. Calum sign-off required before Claude executes (CEP protocol).
2
INVESTIGATE US ecommerce wiring on canonical GA4 property
US store revenue is not flowing through the canonical GA4 property (4 _new_GA4 properties set up 2026-04-22). US ecommerce was never migrated — the US market is effectively blind in the reconciled dataset. Steps: (1) confirm US GA4 property ID, (2) verify ecommerce event firing via DebugView, (3) if absent, wire Shopify → GA4 via Elevar or GTM server-side. Estimated: 2–4 hours to diagnose.
3
REALLOCATE Budget toward brand search
Brand search true ROAS is ~41× on 2% of total spend (≈£834/mo on £41,670 monthly budget). Every additional £1,000 shifted to brand search from underperforming DG campaigns is immediately accretive at current conversion rates. Proposed: increase brand search budget by £3,000–£5,000/mo from DG reallocation. Requires ROAS monitoring for 14 days post-shift.
4
CLEAN UK GA4 Key Events — episodic inflation
UK Key Events show 1.26–3.45× inflation vs confirmed Shopify purchases. Root cause: non-purchase conversion events (page views, scroll milestones, video plays) are tagged as Key Events in the GA4 property, polluting the purchase funnel signal. Action: audit all Key Events in UK GA4 property, demote non-purchase events, confirm only purchase event drives bidding signals sent to Google Ads. Medium priority — does not affect reconciled ROAS but creates noise in attribution reports.
Note: This Tactics section is a session-38B snapshot. A canonical Tactics home (structured test log + kill/scale decision matrix + owner fields) is queued for the upcoming agent-playbook session. Until then, treat this tab as a triage holding board.
Campaign Tactics Runs (per-AG breakdown)

Tactics briefs from /campaign-strategy. Approve here AFTER the matching Strategy brief is approved. Both must be approved before tools/deploy_campaigns.py --execute runs.

Strategy — Growth Thesis & Channel-Mix Doctrine

Strategy is the long-horizon layer: the brand's growth thesis, market prioritisation, channel-mix doctrine, and year-ahead vision. Strategy memories are currently fragmented across BUILD_STRATEGY.md, session 26 (playbook), session 28 (blueprint), and session 30 (competitor review). Consolidation is queued for an upcoming agent-playbook session — this tab is the canonical destination once that work is done.

Provisional Growth Thesis (from existing context)

UK — Mature Scaling Market

StatusPrimary
True ROAS (mean)9.43×
Peak ROAS14.37× (Sep 2025)
ThesisScale spend on proven structures; protect brand search; optimise PMax asset groups by persona
RiskROAS compression under scaling (14.37× → 9.43× mean)

DE / FR — Growth Markets

StatusGrowth
Positioning exceptionAlternative to ADHS Medikamente (DE) / modafinil (FR) — management-approved
ThesisLead with localised pain-state copy; native creative; alternative-positioning hook
RiskANSM (FR) / HWG (DE) compliance — localised copy must be pre-cleared

US — Recovery Candidate

StatusRecovery
Trajectory65% revenue decline since 2023 peak
Blocking issueEcommerce not wired to canonical GA4 — blind spot on true ROAS
ThesisFix measurement first, then test FTC-compliant pain-state hooks before scaling spend
RiskFTC claim rules stricter than ASA; no scale until ROAS verified

Channel Mix Doctrine

Brand search41× true ROAS — underfunded (2% of spend)
PMaxCore vehicle post-LP readiness; max-conv-value bidding
Demand GenAwareness role only; strict true-ROAS floor before scaling
VideoIn audit; see Video Audit tab for current compliance status
SocialSee project_social_media_automation_strategy.md
Fragmented Strategy Source Files — Pending Consolidation
FileContainsStatus
BUILD_STRATEGY.md Founding growth thesis, market prioritisation, brand positioning Needs merge into this tab
Session 26 Agent playbook — quarterly planning doctrine Needs merge
Session 28 Blueprint — channel architecture + budget model long-term Needs merge
Session 30 Competitor review — benchmarks, positioning gaps Needs merge
Session 38B GA4 triage build — Intel & Tactics layer seeded Banked here
Next step: In the upcoming agent-playbook session, consolidate BUILD_STRATEGY.md + sessions 26/28/30 into a structured strategy doc and promote the full content to this tab. Until then, the provisional thesis above is the operative summary.
Campaign Strategy Runs (chained Intel → Strategy → Tactics)

Each card below is a strategy brief from a /campaign-strategy <segment> run. Click Open to review the brief and approve / reject. Approval downloads a JSON decision file — hand it to Claude → python tools/ingest_strategy_decision.py <file> writes briefs/<slug>/strategy.approved.json, gating downstream deploys via tools/strategy_gate.py.

Second-Pass QC REVIEWER: Opus 4.7

Single-shot audit of Session 38B Cross-Rail Triage syntheses (UK / US / DE / FR 25-month + cross-store 6yr Shopify intel). Cross-checked against raw historical-{6yr,2yr}-* JSON datasets via Python helpers (no line-by-line file reads). Full report: v4.0/shopify-build/v1-firstsync/SECOND-PASS-QC-2026-04-26.md.

Verdict: ACCEPT WITH CORRECTIONS — All numbers in the 5 syntheses are defensible against raw data. Two headline framings hide methodology choices that change reader interpretation. Two HIGH-severity items patched into canonical memory; original syntheses left unchanged.

Severity Summary
HIGH (canonical patch)
2
Refund methodology divergence; DE empirical baseline curation
MED (flag only)
1
DE Apr 2026 refund artifact propagation
LOW (note for next pass)
1
Cross-currency true ROAS caveat implicit
Confirmed
9
UK/US/DE/FR dropouts, true ROAS, FR brand search, yearly totals
HIGH-1 — Refund-rate methodology divergence

Cross-store 6yr §8 reports refund rate as refund_count / orders ("UK refund rate doubled from 2024 1.02% → 2025 2.78% → 2026 YTD 3.67%"). UK per-market §5 reports it as refund_amount / total_revenue (UK 2025 = 0.98%, flat against 5-year 0.93%–1.27% band). Same term, different metric, different magnitude.

YearOrdersRevenue (£)refund_amount (£)refund_count% by amount% by count
202011,455453,3554,4811370.99%1.20%
202119,918805,42210,1913031.27%1.52%
202220,148791,4978,3972971.06%1.47%
202324,649933,11710,3372851.11%1.16%
202418,360732,0386,8081870.93%1.02%
202516,889669,3406,5894700.98%2.78%
2026 YTD4,767188,0501,4981750.80%3.67%

Reading: UK customers file refund events at 2.5–3× the historical rate, but the £ value is flat. Pattern is consistent with line-item partial refunds (single units inside multi-unit orders), not full-order returns. The "refund rate doubled" framing reads as a returns crisis; £ impact is unchanged.

Canonical wording (recommended): "UK refund-event rate has risen from ~1.0% to 2.78–3.67% on a count basis, while refund value as a share of revenue stays at the historical ~1% band — consistent with rising line-item partial refunds."

HIGH-2 — DE empirical baseline is a curated subset

memory/ref-tracking-triage.md §2a quotes DE empirical GA4↔Shopify dropout at −32.4% ±4.0% alongside UK / US / FR. The DE synthesis correctly discloses this excludes 4 outlier months (1× Apr 2024 partial launch + 3× Feb–Apr 2026 Key Event inflation window). The full unfiltered 25-month DE series is −26.3% ±26.3% — a 6.5× wider variance band.

Risk: Quoting −32.4% ±4.0% without the curation note makes DE look 3-rail-clean; an ops reader using the table to set alert thresholds will calibrate too tight and trigger false positives.

Fix applied: ref-tracking-triage.md §2a inline marker added ("21-month curated subset… full 25-month is −26.3% ±26.3%. Per Second-Pass QC 2026-04-26."). Other 3 markets do not need the same caveat — UK/US/FR figures use the full window or only exclude a single startup month explicitly called out.

MED-1 / LOW-1

MED-1: DE Apr 2026 refund line (426 events / €347 amount / €0.81 avg) is correctly flagged in DE synthesis as a Shopify line-item refund artifact. The cross-store 6yr file silently rolls those events into DE 2026 totals without the asterisk — flag only, no rewrite.

LOW-1: DE/FR true ROAS quotes Shopify-EUR-revenue ÷ Google-Ads-GBP-spend without spelling out FX conversion. Magnitude ~5% at current EUR/GBP ≈ 1.18, consistent across both markets so comparative ranking unaffected. Standardise on a single quoted currency per-market in the next pass.

New findings (not in originals)
  1. UK refund-event acceleration is recent and concentrated. 470 events across 2025 (up from 187 in 2024) and 175 events in just 4 months of 2026 implies ~1.6× annualised rate vs 2025. Worth a session: which SKU / channel mix is driving line-item partials? (Possibility: subscription cancellations partial-refunding the latest cycle.)
  2. FR is the only market with positive YoY revenue trajectory in the 25-month window, AND its brand-search cost is just £4.4K for £51K revenue. Underfunding more acute than UK by ratio. Strategic implication: incremental £ to FR brand search is currently the highest-marginal-ROAS lever in the portfolio.
  3. YT FR campaigns have ~£2.4K spend at zero recorded conversions in the audit window. Either the conversion attribution is broken (likely — view-through-only campaigns wouldn't show in standard conv columns) or the spend is genuinely unattributed. One-hour audit before next FR YT push.
Methodology improvements for future cross-rail passes
  1. Lock the refund-rate definition at the SoT layer. Add to ref-tracking-triage.md: refund_rate = refund_amount / total_revenue (default for £-impact framing); refund_event_rate = refund_count / orders (default for behaviour-pattern framing). Synthesis docs MUST name which one they're quoting.
  2. When publishing empirical tolerance bands, always quote the unfiltered series alongside the curated one. Format: −X% ±Y% (curated, n=21) / −P% ±Q% (full, n=25).
  3. Cross-currency true ROAS: standardise on a single quoted currency per-market, document FX assumption inline.
  4. For Anomaly-A-style reversals (ghost vs canonical streams): when a per-market synthesis applies a property-ID exclusion, the methodology block should restate the canonical property ID and the excluded ID — currently inferred only from feedback_ga4_canonical.md.
Top 3 takeaways
  1. UK refund "doubling" is an event-count phenomenon, not a £ phenomenon. Reframe before strategy meeting — value-based refund rate is flat at ~1%.
  2. DE's "clean" tolerance band (±4%) is a curated artifact. Calibrate alerts off the full ±26% series, not the trimmed one.
  3. FR brand search is the single best marginal-£ lever in the portfolio right now — 11.67× ROAS, £4.26 CPA, growing market, underfunded at 2% of FR spend.
Files updated in this QC round
FileChange
v4.0/shopify-build/v1-firstsync/SECOND-PASS-QC-2026-04-26.mdNew — full QC report
memory/ref-tracking-triage.md§2a: DE empirical baseline annotated as 21-month curated subset (HIGH-2 fix). Inline marker "Per Second-Pass QC 2026-04-26".
google-ads-audit/v4.0-alt/index.htmlThis Second-Pass QC tab + amber/orange accent badge

QC complete. Reviewer: Opus 4.7. Method: full-context single-shot review against raw JSON spot-checks via Python helpers (no line-by-line file reads). No originals modified — corrections live in this report and (for HIGH-2) in the canonical memory annotation.

2026-04-30 SESSION COMPLETE — 100% PUBLISHED, ZERO FAILS

State of the world after 2026-04-30 mass-publish + QC + fix wave: 58 / 58 pages published across UK/US/DE/FR. 53 pass / 5 warn / 0 fail / 0 pending. Compliance: 44 green / 10 amber / 4 cleared / 0 RED-blocked. Pages Registry SSoT live at campaign-lp-strategy → "Pages Registry" tab + mirrored to tier-list Sheet (gid 285543633).

What shipped today (chronological):
1. Pages Registry SSoT — 58-row registry built across 4 markets via parallel Sonnet agents. Schema v1.0 locked. Tab 6 added to Creative LP Matrix dashboard. Mirrored to tier-list Google Sheet with conditional formatting.
2. Mass-publish CEP wave — 31 + 5 = 36 pages published via 4 parallel Sonnet agents (UK 14 + US 10 + DE 3 + FR 4) + 1 conversion agent (DE/FR 5 held cities). All HTTP 200, all postchecks confirmed.
3. DE/FR per-city template conversion — 5 held pages (Berlin/Hamburg/Köln/Lyon/Lille) converted from shared-template-plus-setting to per-city thin templates. Eliminated manual admin step.
4. 5 Liquid syntax errors fixed — Edinburgh + London + Paris + Lyon + Lille had apostrophe-in-single-quoted-string bugs. Auto-fixer script + live theme PUTs.
5. render → include swap on 4 market section files (bz-exam-city.liquid) — fixed empty H1 across all 22 city pages. Root cause: {% render %} scope isolation.
6. DE/FR meta description metafields set + body_html cleared on 7 pages — eliminated visible SERP placeholder ("Diese Seite nutzt das bz-exam-city Template").
7. Quiz B + C fixed — missing template + data snippet uploaded to UK live theme. Root cause was different from QC agent's diagnosis: assets existed in repo but were never deployed.
8. 4 RED articles published — legal sign-off received. DE ADHS/Ritalin + FR TDAH/Ritaline. Full SEO metafields set + ANSM/HWG-compliant disclaimers verified.

Lessons banked permanently (8 new feedback memories + 4 SOP gotchas): G23 Liquid {% render %} scope isolation · G24 single-quoted Liquid + apostrophe = parser bug · G25 body_html as auto meta description fallback · G26 per-variant thin templates beat shared+setting · CEP bulk-write 4-bucket grouping (canonical) · SSoT registry pattern (canonical) · gws CLI --params vs --json + +append auto-routing gotchas · tools/fix_liquid_apostrophes.py auto-fixer · SHOPIFY_PAGE_PUBLISH_SOP v2.0 + THEME_COMPONENT_SOP G4 + asset-deploy-vs-repo.

5 remaining warns (no regression, separate workstreams):
• US Wave-2: PERI10 + BF10 discount codes missing on live us-peri-wave2 + us-bf-wave2 (article-template body injection)
• 5 amber-compliance pages (Dopamine collections UK/US/DE/FR + FR Anti-Fatigue) — content sign-off gates only, no customer-visible bugs

Scheduled follow-up: Remote agent SCHED-010 fires 2026-05-07 09:00 BST — re-runs QC sweep on all 58 pages, generates report, emails Calum via Gmail MCP. Catches drift, stale state, or new pages added without going through hooks (Task #7 not yet built).

Overnight Builds Review — 2026-04-27 (POST-CUTOVER + QC SWEEP)

QC SWEEP CORRECTIONS — Opus rerun 2026-04-27 22:00 UTC. Verified every claim below against direct GAQL + Shopify Admin API. Material corrections: (1) All 22 articles (wave-1 + wave-2) are now PUBLISHED on the storefront (verified published_at set + storefront fetch confirms public render). The earlier "all published=false" line was true at 03:00 bank-time but was overtaken by an 08:03 publish wave. Only the 13 collections (wave-2 + wave-3) remain UNPUBLISHED. (2) The Black Friday + nootropic + Doctors-on-PMax-UK + Performance-Mentale + Effets-Max + Unlock-your-full-potential audit claims are FALSE POSITIVES — verified via asset_group_asset.status='ENABLED' filter. See corrected violation summary in red box below.

22 articles + 13 collections (31 total) deployed to LIVE themes via Path B file-copy across UK/US/DE/FR. 22 articles are PUBLISHED + public; 13 collections remain published=false. Theme assets (sections, snippets, templates, CSS, JS) are LIVE-side; admin preview works without staff cookies.

What landed tonight (in chronological order):
1. 16 GABA + Dopamine illustrations via GPT-Image-2 (Calum new directive: GPT-Image-2 = default for illustrations, FLUX only for product-alongside scenes); £0.50 cost, 16/16 first-pass; cross-store push to all 4 stores' assets/.
2. UK Perimenopause editorial (greenfield) — article id 1001007186301, handle perimenopause-focus-guide, F2 pattern, ELITE-targeted, compliance CLEAN.
3. UK Brain Fog editorial (greenfield) — article id 1001007153533, handle brain-fog-explained-and-what-helps, advertorial pre-click warm-up, CTAs route to quiz + collection.
4. 7 Perimenopause + 8 Brain Fog illustrations via GPT-Image-2; £0.47 cost combined; cross-store push.
5. US GABA + Dopamine ports built on Session 38 framework, FDA-lensed (£→$, EFSA→FDA, etc.). Articles 570713669824 + 570713702592, blog focus-learning-center.
6. DE GABA + Dopamin ports, HWG-translated, "kein Arzneimittel" disclaimer placed prominently 2x. Articles 627993772296 + 627993805064, blog adhs-medikamente-zum-lernen, handles gaba-vorstufen-leitfaden + dopamin-leitfaden.
7. FR GABA + Dopamine ports, ANSM-translated, "complément alimentaire pas un médicament" disclaimer placed 7-8x. Articles 612915544406 + 612915609942, blog news, handles guide-precurseurs-gaba + guide-dopamine.
8. SEO meta sweep on all 13 articles (UK 7 + US 2 + DE 2 + FR 2) — meta title (≤60c) + meta description (~140c) per article via metafields. H1/H2/H3 hierarchy verified clean across all sections.
9. Critical bug fix shipped: G22 (bz-component-carousel) {%- doc -%}{%- comment -%} on UK + DE (Session 38 framework had Theme-Check-only doc tag that breaks article render at runtime). US + FR already clean.
10. Path B cutover — all 13 publish configs deployed to LIVE themes via shopify_publish_page.py --skip-publish. New --skip-publish flag added to script.

Calum's morning checklist (per article):
1. Open admin preview on each store's LIVE theme → Articles → preview unpublished article. (Or use the article admin URLs in the cards below.)
2. Compliance pass per article — AMBER items (UK Dopamine + FR Dopamine + 1 small "soutenir mesurably" typo) need explicit sign-off.
3. Create discount codes per market: GABA10/DOPAMINE10 (UK + US + FR), GABA10/DOPAMIN10 (DE), PERI10 (UK), BF10 (UK).
4. Per article: PUT {"article": {"id": <id>, "published": true}} via Admin API or use Shopify admin "Publish" toggle.
5. Then run Browserbase QC per published URL (was blocked pre-publish by G13 staff-cookie).

Heroes still missing: The full-bleed product-shelf hero shots (bz-{topic}-hero-shelf-wide.jpg) for GABA / Dopamine / Peri / Brain Fog need separate FLUX product-shelf shoots — they're not part of the GPT-Image-2 ligne-claire batch. Articles render with broken hero placeholder until those land.

Coordination note: Session 38 finished multi-store framework rollout (bz-component-carousel + Quiz engine + component registry) to US/DE/FR mid-session — that unblocked the US/DE/FR ports. Earlier DE WIP from a halted pre-framework port agent preserved in stash halted-de-port-agent-2026-04-27-pending-session38-framework — safe to drop after confirming the clean re-build looks right.


WAVE 2 EXPANSION — 9 more pages built (22 total tonight)

Per Calum evening directives: build 2-3 versions per LP slot for A/B/C testing (Collection · Blog · Quiz). 9 wave-2 pages built + deployed to LIVE themes via Path B --skip-publish. All UNPUBLISHED.

UK Collection variants (A/B vs Blogs): gaba-precursor-supplements (id 682565927293) · dopamine-support-supplements (id 682565992829) · perimenopause-focus-supplements (id 682566091133). All UNPUBLISHED. Default Shopify collection template (body_html intro above product grid). Pre-existing duplicate handles `buy-gaba-supplements-uk` + `buy-dopamine-supplements-uk` still present — you decide keep-vs-archive.

UK GABA+Dopamine combined Recommender Quiz: find-your-focus-path-quiz (id 1001007513981, template bz-quiz-uk-gd). 8 questions / 3 phases. Engine-compatible 5-cluster scoring. Recommendations: ELITE for GABA-dominant (stress) · PRO for Dopamine-dominant (overload/nutrition) · BUNDLE for mixed (tied within 10%) · ORIGINAL only for child route (Q1=No, age 10-15) per your locked logic. Decisions D28-D30 added to decisions.md.

US gap-fill triple: US Peri editorial (id 570713866432, handle perimenopause-focus-guide) · US ADHD aggregating Collection (id 351133040832, handle adhd-focus-supplements, 3 products linked) · US Brain Fog editorial (id 570713931968, handle brain-fog-explained-and-what-helps, dual-pathway CTAs).

DE Konzentrationsplaner extension: konzentrationsplaner (id 627994886408). PRO primary (Motivation/Dopamin-Wege), ELITE secondary. 5-day week planner format. HWG disclaimer 2x. Discount code KONZ10 needed.

FR Anti-Fatigue Mentale editorial: guide-anti-fatigue-mentale (id 612915904854). PRO primary, ELITE secondary (existing surmenage-fatigue-mentale handle). ANSM disclaimer 6x. UFC-trigger language ABSENT. Discount code FATIGUE10 needed.

UTM tracker: 13 wave-1 pages logged to Google Sheet 1f1Q43vPnOjZEsruFWq5R015beJeI9VBvWTE8ttHwQVk tab "2026 Launch UTMs" (range A40:AA52, 27-column UTM v2 schema). Wave-2 batch (9 pages) being appended below by parallel UTM agent.

Discount codes still needed (per market): UK GABA10 / DOPAMINE10 / PERI10 / BF10 · US GABA10 / DOPAMINE10 (+ optional US peri/bf codes) · DE GABA10 / DOPAMIN10 (no E) / KONZ10 · FR GABA10 / DOPAMINE10 / FATIGUE10. Create in Shopify admin per store before publish.

Hero shelf images still pending for: UK Peri / UK BF / DE Konzentration / FR Anti-Fatigue / US Peri / US BF. Separate FLUX product-shelf shoot (not part of tonight's GPT-Image-2 ligne-claire batches).

Wave-2 illustrations needed for: DE Konzentration (8 illust + 1 hero, scenes around focused work / planner / circadian rhythm) and FR Anti-Fatigue (8 illust + 1 hero, scenes around mental fatigue / cognitive recovery). UK Quiz GD also needs illustrations.

Wave-2 SEO sweep needed — the 2 SEO agents tonight ran BEFORE wave-2 builds. Wave-2 pages don't yet have meta_title/meta_description metafields. Schedule a third SEO sweep next session covering: UK Quiz GD, UK 3 Collections (note: collection metafields differ from article), US Peri/ADHD-Coll/BF, DE Konzentration, FR Anti-Fatigue.

Scoring weights review for UK Quiz GD — per-question weights are author judgments. Recommend manual test of 4 paths: child route, GABA-dominant, Dopamine-dominant, mixed.


WAVE 3 EXPANSION + Campaign Audit — 9 more collections + ad violations report (31 total tonight)

Per Calum directive 2026-04-27 evening: complete LP coverage gaps + audit live ad copy against Marcom Matrix v3.2.

Wave 3 Collections (9): US 4 (gaba-precursor-supplements 351168757952 / dopamine-support-supplements 351168790720 / perimenopause-focus-supplements 351168856256 / brain-fog-supplements 351168889024) · UK ADHD aggregating-2 (adhd-focus-supplements 682616390013) · DE 2 (gaba-praparate 576598212872 / dopamin-praparate 576598245640) · FR 2 (complements-precurseurs-gaba 695193633110 / complements-soutien-dopamine 695193665878). All UNPUBLISHED. FR has dedicated GABA/Dopamine product handles (`complement-gaba` + `complement-dopamine`) — earlier FR product-handle gap notes were stale.

LP coverage post-wave-3: UK ✅ all lanes ≥3 variants · US ✅ all 5 lanes ≥2 variants (Quiz Phase 2/3 still queued) · DE ✅ Konzentration ≥3 + GABA/Dopamin at 3 · FR ✅ GABA + Dopamine + Anti-Fatigue at 2-3 variants · RED gates remain on DE ADHS / FR TDAH / Ritalin lanes.

⚠️ CAMPAIGN AUDIT — CORRECTED 2026-04-27 22:00 (POST-METHODOLOGY-FIX). The original audit ran without filtering on the joint condition campaign.status=ENABLED AND asset_group.status=ENABLED AND asset_group_asset.status=ENABLED — producing false positives on PMax-asset claims. After re-run with the proper 3-status filter, the TRUE-violation queue is:

FALSE POSITIVES (zero rows on triple-ENABLED filter): Black Friday assets (all 4 PMax) · "BF15" code · "nootropic" in any PMax description · "Performance Mentale" / "Effets Max" (FR PMax) · "Unlock your full potential" (UK PMax) · "Peak Mental" (UK PMax) · "is design to" typo (UK PMax) · "boosters" (UK/US PMax). All previously claimed as live; verified REMOVED at the asset-link level.

CONFIRMED LIVE violations (post-3-status verification):
"Trusted by 2,000+ Doctors" / "Loved by Doctors" — 2 assets ENABLED in PMax USA (asset_group 6448919526). NOT in PMax UK (which audit had wrongly cited).
"Über 2.000 Ärzte vertrauen Brainzyme®" — 1 asset ENABLED in PMax DE Main (asset_group 6558136289).
"Mit Brainzyme® FOCUS rezeptfrei & legal Leistung steigern" + 2 variants — 9 ENABLED rows across PMax DE Main + DE Ritalin Germany + DE Ritalin Austria. HWG legal scope review needed (DE Ritalin allowed per exception; DE Main exposure questionable).
"powerful, plant-powered brain supplements" — 1 asset ENABLED in PMax UK (asset_group 6509497072). Banned optimiser language per matrix (H13).
"Game-Changer" English idiom in DE copy — 1 asset ENABLED in PMax DE Main (asset_group 6521203827).
SERP UK ADHD Bundle (campaign 11666978147, ad_group 126235035533, ad 706882072278) ALL CONFIRMED LIVE in single ENABLED ad group: "Attention Deficit Issues?" headline + "Manage Attention Fast" headline + "Scientifically proven natural solution to support attention issues fast." description. £1.8k/mo at ASA-exposure risk. NatAlts-DKI + Focus&Attention-DKI ad groups (originally cited for "Doctors" headlines) are PAUSED — not live-serving.
"Brain Nootropic Supplements" headline — 1 ENABLED RSA in SERP UK Brand (single ad 618559319501). LEARNING status, not pinned. C1 confirmed.
Brand-mark missing ® — SERP DE: "Brainzyme FOCUS Pro™" + "Brainzyme FOCUS Elite™". SERP FR: "Brainzyme FOCUS ORIGINAL™" + "Brainzyme FOCUS PRO™" + "Brainzyme FOCUS ELITE™". L1+L2 confirmed live.
SERP US Brand RSA (campaign 13522300536, ad 527830378007) is verbatim UK copy-paste — no FDA structure-function localisation. H2+H18 confirmed.

Full corrected priority queue + per-violation evidence at v4.0/campaign-content-audit-2026-04-27.md. Markets-by-true-cleanliness rank: US (low: 2 confirmed) → FR (low: brand-mark only) → UK (mid: ADHD ASA + nootropic + powerful) → DE (high: HWG scope + Ärzte + Game-Changer + brand-mark).

Master multi-phase plan banked: 7 phases (A→G) at v4.0/go-live-rundown.md. Phase A (LP gap-fill) + Phase B (audit) DONE tonight. Phases C-G defer to next sessions: C=copy refresh, D=image rerun, E=video selection (Session 50), F=ad-group retrofit, G=final QC. Sequencing + Calum gates per phase documented.


WAVE 6 — 16 city LPs + 4 RED articles + 36 illustrations + 3 multi-store framework ports (POST-OPUS-QC-SWEEP)

✅ OPUS QC SWEEP PASS (2026-04-27 → 2026-04-28). Full-spectrum verification: Block A 16/16 LPs verified UNPUBLISHED + correct handles via Admin API. Block C 40/40 framework files (CSS/JS/Liquid/templates/snippets) on each store's live theme. Block D 4/4 RED articles compliance-clean (0 banned phrases in customer copy after stripping Liquid+HTML comments; all required disclaimers present). Block E 36/36 city illustrations present + sized 90-170 KB. Block F preflight: 21/22 cities PASS after fixes (4 confirmed FAILs surfaced + corrected — see below).

What landed in Wave 6 (chronological):
1. US: 5 city LPs + framework port (Boston / NYC / LA / Chicago / Austin) — page IDs 120522539200/571968/604736/637504/670272. Per-city thin templates (admin-config-free). FDA-lensed. Commits US `979d4f3` + UK xref `8670820`. All UNPUBLISHED.
2. FR: 3 city LPs + framework port + 2 RED articles — Paris/Lyon/Lille (160561201494/234262/267030). 2 RED: TDAH guide 613444747606 + Ritaline comparaison 613445599574. ANSM-defensive disclaimers. Commit FR `30d71f3`.
3. DE: 4 city LPs + framework port + 2 RED articles — München/Berlin/Hamburg/Köln (164673487112/519880/552648/585416). 2 RED: ADHS-Leitfaden 628058685704 + Ritalin-Vergleich 628058718472. HWG-konform + management exception. Commits DE `ad113b5` + `4ef2adb`.
4. 36 city illustrations (US 15 / DE 12 / FR 9). GPT-Image-2 medium, 36/36 first-pass QC. £1.13 spend.
5. Compliance fixes shipped (Opus QC sweep finding): 4 files PUT to live themes — UK + US sections (`Wired but tired` → `Restless but exhausted`; `no withdrawal` rewritten); UK Manchester snippet (`No crash. No withdrawal.` → `No crash, no jitters.`); FR section (`cafféiner` → `avant le café`; `soutenu nutritionnellement` → `soutenu par la nutrition`; `measurablement` typo). All preflight PASS post-fix. Commits UK `3920eca` / US `66a2337` / FR `a352a8a`.

⚠️ Architecture finding — TWO PATTERNS in Wave 6 city deployment:
Per-city thin templates (works without admin config): UK 10 cities (incl. all Wave 5.5) + US 5 cities = 15 pages. templates/page.bz-exam-city-{slug}.json with city_slug hardcoded.
Shared template + section setting (needs Calum admin step): DE 4 + FR 3 = 7 pages. templates/page.bz-exam-city.json shared, all 7 default to munich/paris until city_slug set per page in admin.
Recommendation: KEEP shared+setting for now (works, just needs 7 admin clicks). Convert later as a focused refactor task. Per CLAUDE.md L5 — don't bundle preventative architecture refactor with confirmed compliance fix in same deploy round. Calum's morning to-do: theme editor → each DE/FR page → bz-exam-city section → set city_slug → Save (7 pages × 30s).

Calum morning to-do (Wave 6):
1. Set city_slug per page in admin for 7 DE/FR pages (Berlin/Hamburg/Köln/Lyon/Lille — Munich + Paris are template defaults).
2. RED article legal review — both DE (ADHS / Ritalin-Vergleich) + FR (TDAH / Ritaline-Comparaison). All 4 are NEEDS-LEGAL-REVIEW status (default for RED). 0 banned phrases in customer copy verified by Opus.
3. Discount codes — verify WELCOME10 active in UK + US + FR Shopify admin; verify GABA10/DOPAMINE10/DOPAMIN10/FATIGUE10/WELCOME10 per-market.
4. Publish toggle — per page/article via admin "Publish" toggle when ready. Suggested order: city LPs first (lower compliance risk), RED articles after legal review.
5. RED article illustrations still needed — DE ADHS 8 illust + DE Ritalin 8 illust + FR TDAH 1 hero + 8 illust + FR Ritaline 8 illust = 33 illustrations. Section files have onerror="this.style.display='none'" so missing illustrations gracefully hide.
6. UTM Sheet — Wave 4-6 URLs (~28-30) not yet logged to Sheet 1f1Q43vPnOjZEsruFWq5R015beJeI9VBvWTE8ttHwQVk tab "2026 Launch UTMs". Schedule a follow-up UTM batch.

Lessons-learned register: G22 doc-tag · G23 JSON template comment strip · Splide→Embla · --skip-publish · PYTHONIOENCODING=utf-8 · pull-rebase-before-push · drift-quadrant · per-market compliance · GPT-Image-2 default · L5 fix-isolation (Wave 6 confirmed) · architecture-divergence detection. Apply to ALL new work.

Plan summary — what's IN vs DEFERRED

IN tonight (UK-only):
  • Quiz A/B/C (already built earlier in session) — needs publish approval per article
  • GABA Precursor Guide (already built) — awaiting illustrations + publish approval
  • Dopamine Guide (already built) — awaiting illustrations + publish approval
  • Perimenopause Focus Guide (greenfield, in flight)
  • Brain Fog Editorial pre-click warm-up (greenfield, in flight)
  • Illustration batch (16 images via GPT-Image-2, in flight)
DEFERRED tonight:
  • US/DE/FR ports (GABA + Dopamine + Peri + ADHD enhancement + Konzentration + Anti-Fatigue) — pending Session 38 framework port
  • DE ADHS / FR TDAH / DE Ritalin / FR Ritaline blogs — RED compliance, needs Calum review
  • Phase 2 quiz US/DE/FR localisation — spec-defer to ~3 weeks UK A/B/C data
  • Phase 3 new quizzes (Peri symptom checker / Recommender / Student-Worker) — design-heavy, do with Calum
  • DE/US Gut-Brain — embedded in GABA per audit / defer per audit

Image generation — model routing decision (banked tonight)

Per Calum 2026-04-27: GPT-Image-2 (gpt-image-1) is the default for illustrations. FLUX is reserved for scenes where products need to be shown alongside something else to make a point (e.g. product-in-context heroes). Tonight's 16 ligne-claire scene illustrations are all conceptual/atmospheric — all generated via GPT-Image-2.

Loading overnight data…
Filter

LP-Q2 Image Overhaul Deploy — 2026-05-03

Loading sign-off…

Per-market deploys

Calum action items (known-pending, not deploy gaps)

Full sign-off

Afternoon UX Rollout — 2026-05-03

Evidence snippets + Full Chain module + Hero shelf composites across all 4 stores. 196 API writes, 0 failures.

24
Evidence Snippet PUTs
8
Full Chain Section PUTs
82
Hero Asset PUTs (WebP)
66
Registry Cells Updated

Item 1 — Canonical Evidence Snippets

Created config/brainzyme_evidence_canonical.json (13 ingredients, PubMed/DOI citations). Generated 12 Liquid snippets (3 product sets × 4 stores):

SnippetProduct SetIngredientsStudiesPathway
bz-evidence-data-eliteELITE1335GABA
bz-evidence-data-proPRO825Dopamine
bz-evidence-data-bundleBundle1335Comprehensive

20 guide sections updated to render canonical snippets. DE/FR snippets use HTML entities for non-ASCII. SOP G34 added.

Item 2 — Full Chain Module

Added evidence rendering to 8 sections that previously lacked it:

FileStoresProduct Set
sections/bz-exam-city.liquidUK, US, DE, FRBundle
sections/bz-konzentration-planer.liquidDEBundle
sections/bz-ritalin-vergleich.liquidDEPRO
sections/bz-ritaline-comparaison.liquidFRPRO
sections/bz-anti-fatigue-mentale.liquidFRPRO

Item 3 — Hero Shelf Composites

82 PIL v5 composites (41 pages × sq 1080×1080 + wide 1200×628). JPG→WebP conversion. Custom per-page headline/subhead, per-market trust bar.

Coverage by Market

MarketPagesAssets
UK4 guides + 10 exam cities28
US4 guides8
DE5 guides + 4 exam cities18
FR5 guides + 3 exam cities16
Total18 guides + 17 exam cities + 6 DE/FR-specific82 (incl. 12 ADHD/Ritalin/etc.)

Asset naming: assets/{prefix}-hero-shelf-{sq|wide}.webp. One retry needed: DE dopamine square blocked by PIL v5 face-wedge QC gate — swapped hero base from ad-V10.jpg to ad-V17.jpg.

Item 4 — Pages Registry Update

Batch-updated Google Sheet (1KNm5kc6Dh5iK0ua4QDqEPZzR8I1BxRIlMqxzcugJ3SI) via gws CLI:

1 handle not yet in registry: UK exam-season-cardiff.

Scripts

ScriptPurpose
tmp/deploy_evidence_round.pyEvidence snippet + section deploys (24 PUTs)
tmp/deploy_fullchain_round.pyFull Chain module deploys (8 PUTs)
tmp/batch_hero_composites.pyPIL v5 composite generation (82 images)
tmp/deploy_hero_composites.pyJPG→WebP + Shopify upload (82 PUTs)
tmp/update_registry_heroes.pyPages Registry batch update (66 cells)

All 196 API writes completed with 0 failures.