⚠ Compliance: No ADHD treatment claims in ad copy. Never use “nootropic.” No treat / cure / prevent language. All pain points are lifestyle frames only. FSA/ASA compliant.
Total Headlines
540
Across 4 markets
Total Descriptions
149
Search + PMax
Meta Variations
400–1,600
Variable matrix
Campaigns
30
14 Search + 16 PMax
Canonical:PRO / ELITE 4-Class Vocabulary Lexicon — Class 1 SKU labels (motivation / stress relief) are site-authoritative. Class 4 (drive / calm) is hook copy only — never an SKU label.Open Marcom Matrix tab →
Google Ads — Keyword Matching
User declares intent via search query. We match with the right campaign, copy, and landing page.
User searches → We match query to ad group → Serve tailored headline/description → Direct to intent-specific landing page
Meta — Person Matching (Variable-Driven Creative)
Algorithm reads the creative, finds the right viewer. Creative IS the targeting (Andromeda).
Personalisation
Person-level (“At 42, when the brain fog rolls in…”)
Scale
600–2,400 ad variations from variable matrix
Campaigns
Broad targeting, creative does the work
Targeting
Self-identification at second zero via hook
How it works
Algorithm scans creative → Matches to person by demographics & behaviour → Age + situation stops the right person scrolling → Hook converts
Shared Foundation
15 Compliant Pain Points
Shared across both channels. Framed as lifestyle situations, not symptoms. FSA/ASA compliant.
PRO (9): brain fog, no motivation, can’t focus, nothing sticking, falling behind, lost sharpness, energy crash, flat/no spark, mental tiredness. ELITE (5): overstimulated, overwhelm, nervous, social discomfort, decision fatigue. Bundle (1): choice.
Product-Intent Map
GABA / L-Theanine
→ FOCUS ELITE™
Dopamine / Focus
→ FOCUS PRO™
Brain Fog / Quiz
→ Quiz → All 3
Study / Revision
→ FOCUS ORIGINAL™
Natural Alternative
→ Starter Bundle
Compliance Rules (Everywhere)
Never claim to treat, cure, or prevent any condition. Never use “nootropic” in customer-facing copy. Never reference ADHD as a condition Brainzyme® treats. All claims must be substantiated and FSA-compliant. No “neurodivergent” + functional cognitive claims (ASA ruling).
Landing Pages Serve Both Channels
Landing Page
Intent
Google Source
Meta Source
GABA Precursor Guide
GABA / L-Theanine seekers
SERP UK GABA, PMax UK GABA
GABA pain point hooks
Brain Fog Quiz
Problem-aware, brain fog
SERP UK Problem-Aware, PMax UK Brain Fog
Brain fog hooks (all ages)
Dopamine Focus Guide
Focus / concentration / dopamine
SERP UK Dopamine & Smart Focus
Focus/concentration hooks
3-Way Comparison
Evaluation / which product
PMax UK Brand
MoF comparison creative
Product Pages (Elite/Pro/Original)
Product-specific
Brand campaigns
BoF retargeting
15 Compliant Pain Points — Shared Across Google & Meta
When you want to choose how you feel and pick your level of focus for the day
focus supplements, choose your focus
“At 40, choose how you want to feel today…”
Both
Starter Bundle
Compliance note: All pain points are framed as lifestyle situations, NOT symptoms. FSA/ASA compliant. Never imply conditions are age-caused. “Age-related focus decline” in the keyword column is the search intent we’re matching — ad copy frames it as “your mind used to be sharp” (lifestyle observation, not medical claim).
Pain Point → Channel Mapping
Google: Keyword → Ad Group → Landing Page
Each pain point maps to a keyword cluster, which maps to an ad group in the Search or PMax campaign. The ad group contains 15 tailored headlines and 4–5 descriptions that speak directly to that intent.
Example: Pain point #1 (brain fog) → keyword “brain fog supplements” → SERP UK Problem-Aware: Brain Fog → Brain Fog Quiz landing page.
Meta: Pain Point → Hook → Variable Matrix
Each pain point becomes a hook template. The variable matrix (age, sex) generates 120 unique text combinations across all 15 pain points from 7 headline modes (4 Meta age-hooks + 1 editorial/provocative + 2 Google: keyword-match, pain point response). Andromeda’s algorithm matches each variation to the viewer most likely to self-identify.
Example: Pain point #1 → “At 42, when the 3pm fog rolls in…” → Andromeda serves to women aged 38–48 who engage with wellness content.
7 Headline Modes
Mode
Format
Example
Channel
1
“At [age]…”
“At 42, when the fog rolls in mid-afternoon…”
Meta
2
“You’re [age]…”
“You’re 42. The fog rolls in. Your to-do list isn’t moving.”
Meta
3
“I’m [age]…”
“I’m 42. The fog started rolling in mid-afternoon…”
Meta
4
“[age]. [Statement]”
“42. The fog is real.”
Meta
5
Editorial / Provocative
“Why I Threw My Coffee in the Bin”
Meta + Google
6
Keyword-Match
“Best GABA Supplement UK — Plant-Powered, Scientifically Proven”
Google
7
Pain Point Response
“Brain Fog Won’t Lift? Plant-Powered Clarity in 60 Minutes”
Google
Modes 1–4: Meta person-matching (Andromeda). Mode 5: channel-agnostic editorial. Modes 6–7: Google keyword-matching (Search RSA + PMax text assets).
Plant-powered focus supplements trusted by 2,000+ medical professionals. Works within 60 mins.
90
2
UK’s first natural focus brand. 4.74/5 from 6,020+ verified reviews. Free delivery.
82
3
3 science-backed formulas from £18. No crash, no jitters. 365-day money-back guarantee.
86
4
Vegan, allergen-free, GMP certified. Made in Scotland. Subscribe & save up to 33%.
82
SERP UK Problem-Aware: Brain Fog SEARCHUK
15 headlines · 4 desc▶
Landing Page
brainzyme.com/pages/brain-fog-quiz
Keywords
brain fog supplements, how to clear brain fog, brain fog remedy, brain fog vitamins, brain fog help, supplements for foggy brain, mental clarity supplements
Headlines (15)
#
Headline
Chars
1
Clear the Brain Fog
19
2
Brain Fog? Try This.
20
3
Mental Clarity Formula
22
4
End the 3pm Fog
15
5
Plant-Powered Clarity
21
6
Think Clearer Today
19
7
Science-Backed Formula
22
8
6,020+ Happy Customers
23
9
Works in Under 60 Mins
22
10
No Jitters. No Crash.
21
11
Trusted by Doctors
18
12
365-Day Guarantee
17
13
Free UK Delivery
16
14
From £18 Per Month
17
15
Take the Fog Quiz
18
Descriptions (4)
#
Description
Chars
1
Struggling with brain fog? Our plant-powered formulas support mental clarity within 60 minutes.
90
2
Take our free brain fog quiz and find the right formula. 4.74/5 from 6,020+ verified reviews.
89
3
Natural GABA precursors support calm, clear thinking. Vegan, GMP certified, made in Scotland.
90
4
2,000+ medical professionals trust Brainzyme. 365-day money-back. Subscribe & save up to 33%.
90
SERP UK Problem-Aware: Can’t Concentrate SEARCHUK
15 headlines · 4 desc▶
Landing Page
brainzyme.com/pages/focus-supplements-guide
Keywords
can’t concentrate supplements, concentration pills, focus pills UK, supplements for concentration, help with concentration, difficulty focusing supplements
Headlines (15)
#
Headline
Chars
1
Sharpen Your Focus
18
2
Concentration Support
21
3
Focus When You Need It
22
4
Stay Focused All Day
20
5
Natural Focus Formula
21
6
Get More Done Today
19
7
Works Within 60 Minutes
23
8
Plant-Powered Focus
19
9
4.74/5 from 6,020+
19
10
Trusted by Doctors
18
11
No Prescription Needed
22
12
From Just £18
13
13
Free UK Delivery
16
14
365-Day Money-Back
19
15
Subscribe & Save 33%
21
Descriptions (4)
#
Description
Chars
1
Struggling to concentrate? Brainzyme’s plant-powered formula supports focus within 60 minutes.
90
2
3 science-backed formulas from £18. Trusted by 2,000+ medical professionals across the UK.
88
3
Natural concentration support with no crash or jitters. Vegan, GMP certified, made in Scotland.
90
4
4.74/5 stars from 6,020+ verified reviews. 365-day guarantee. Free UK delivery on all orders.
89
SERP UK Problem-Aware: Mental Fatigue SEARCHUK
15 headlines · 4 desc▶
Landing Page
brainzyme.com/pages/focus-supplements-guide
Keywords
mental fatigue supplements, tired all the time supplements, energy and focus supplements, mental energy supplements, reduce mental fatigue, supplements for tiredness
Headlines (15)
#
Headline
Chars
1
Beat Mental Fatigue
19
2
Energy Without Jitters
22
3
All-Day Mental Energy
21
4
No Crash Formula
16
5
Plant-Powered Energy
20
6
Stay Sharp Till 5pm
19
7
Science-Backed Energy
21
8
Works in 60 Minutes
19
9
6,020+ 5-Star Reviews
22
10
Trusted by 2,000+ GPs
22
11
Vegan & Allergen-Free
21
12
365-Day Guarantee
17
13
From £18 Per Box
15
14
Free UK Delivery
16
15
Made in Scotland
16
Descriptions (4)
#
Description
Chars
1
Tired of mental fatigue? Brainzyme supports sustained energy and focus without the crash.
87
2
Plant-powered formulas that work within 60 minutes. Trusted by 2,000+ medical professionals.
Natural Focus & Attention Support That Works in 60 Minutes
57
2
3 Plant-Powered Formulas — Find Your Perfect Focus Match
56
3
Trusted by 2,000+ Doctors — UK’s #1 Focus Supplement
53
4
4.74/5 Stars from 6,020+ Reviews — Try It Risk-Free
52
5
No Crash, No Jitters — Plant-Powered Focus Made in Scotland
59
Descriptions (5)
#
Description
Chars
1
Natural focus and attention support. 3 plant-powered formulas from £18. Works within 60 mins.
89
2
Trusted by 2,000+ medical professionals. 4.74/5 from 6,020+ verified reviews. Free delivery.
89
3
No crash, no jitters. Vegan, GMP certified, allergen-free. 365-day money-back guarantee.
86
4
Choose Elite for calm focus, Pro for motivation, or Original for everyday support. From £18.
89
5
Made in Scotland. Subscribe & save up to 33%. Think clearer and get more done every day.
87
SERP DE Ritalin ADHS: Natürliche Alternativen SEARCHDE
15 headlines · 5 desc▶
Landing Page
brainzyme.com/de/pages/fokus-nahrungsergaenzung
Keywords
ritalin alternative natürlich, natürliche konzentrationshilfe, fokus supplement ohne rezept, pflanzliche alternative ritalin, konzentration steigern natürlich
Headlines (15)
#
Headline
Chars
1
Natürliche Fokus-Formel
23
2
Pflanzliche Alternative
23
3
Fokus Ohne Rezept
17
4
Wirkt in 60 Minuten
20
5
Kein Crash, Kein Zittern
24
6
Über 6.020 Bewertungen
24
7
Von 2.000+ Ärzten
18
8
4,74/5 Sterne
13
9
Vegan & GMP-Zertifiziert
24
10
365-Tage-Garantie
17
11
3 Formeln Verfügbar
20
12
Hergestellt in Schottland
25
13
Ab £18 Pro Packung
18
14
Abo Sparen Bis 33%
19
15
Wissenschaftlich Belegt
23
Descriptions (5)
#
Description
Chars
1
Pflanzliche Fokus-Ergänzung, der über 2.000 medizinische Fachkräfte vertrauen. Wirkt in 60 Min.
90
2
3 wissenschaftlich fundierte Formeln ab £18. Kein Crash, kein Zittern. 365-Tage-Garantie.
88
3
4,74/5 Sterne aus über 6.020 verifizierten Bewertungen. Vegan, GMP-zertifiziert.
82
4
Natürliche Konzentrationshilfe ohne Rezept. Hergestellt in Schottland. Abo sparen bis 33%.
90
5
Britains erste natürliche Fokus-Marke. Allergenfrei, vegan, HACCP-zertifiziert.
79
SERP DE Ritalin ADHS: Fokus & Aufmerksamkeit SEARCHDE
15 headlines · 5 desc▶
Headlines (15)
#
Headline
Chars
1
Fokus & Aufmerksamkeit
22
2
Konzentration Steigern
22
3
Schärfer Denken Heute
21
4
Pflanzlich & Wirksam
20
5
In 60 Minuten Wirksam
21
6
Ohne Nebenwirkungen
19
7
Von Ärzten Empfohlen
20
8
Über 6.020 Bewertungen
24
9
4,74 von 5 Sternen
18
10
365 Tage Geld-Zurück
22
11
3 Formeln Wählbar
18
12
Vegan & Allergenfrei
20
13
Aus Schottland
14
14
Ab £18
6
15
Abo & Sparen Bis 33%
21
Descriptions (5)
#
Description
Chars
1
Natürliche Unterstützung für Fokus und Aufmerksamkeit. Pflanzlich, wirkt in 60 Minuten.
88
2
Über 2.000 medizinische Fachkräfte vertrauen Brainzyme. 4,74/5 aus 6.020+ Bewertungen.
87
3
3 Formeln ab £18. Vegan, GMP-zertifiziert, allergenfrei. Hergestellt in Schottland.
81
4
Kein Crash, kein Zittern. 365-Tage-Geld-zurück-Garantie. Abo sparen bis 33%.
79
5
Wählen Sie Elite für ruhigen Fokus, Pro für Antrieb oder Original für den Alltag.
84
SERP DE Konzentration SEARCHDE
15 headlines · 4 desc▶
Headlines (15)
#
Headline
Chars
1
Konzentration Steigern
22
2
Besser Konzentrieren
20
3
Fokus Den Ganzen Tag
20
4
Pflanzliche Fokus-Hilfe
23
5
Wirkt in 60 Minuten
20
6
Kein Crash, Kein Zittern
24
7
Von Ärzten Empfohlen
20
8
4,74/5 Sterne
13
9
Über 6.020 Bewertungen
24
10
365-Tage-Garantie
17
11
3 Formeln Ab £18
16
12
Vegan & Allergenfrei
20
13
Aus Schottland
14
14
Abo Sparen Bis 33%
19
15
Mehr Schaffen Heute
19
Descriptions (4)
#
Description
Chars
1
Schwierigkeiten mit der Konzentration? Pflanzliche Formeln, die in 60 Minuten wirken. Ab £18.
90
2
Über 2.000 Ärzte vertrauen Brainzyme. 4,74/5 Sterne aus 6.020+ verifizierten Bewertungen.
90
3
Vegan, GMP-zertifiziert, allergenfrei. 365-Tage-Geld-zurück-Garantie. Aus Schottland.
85
4
3 wissenschaftlich fundierte Formeln. Kein Crash. Abo sparen bis 33%. Jetzt testen.
82
SERP DE Dopamin SEARCHDE
15 headlines · 4 desc▶
Headlines (15)
#
Headline
Chars
1
Natürliches Dopamin
20
2
Dopamin-Fokus-Formel
20
3
Antrieb & Motivation
20
4
Pflanzliche Dopamin-Hilfe
25
5
Wieder Motiviert Sein
21
6
Wirkt in 60 Minuten
20
7
Wissenschaftlich Belegt
23
8
Von Ärzten Empfohlen
20
9
4,74/5 Sterne
13
10
Über 6.020 Bewertungen
24
11
Vegan & GMP-Zertifiziert
24
12
365-Tage-Garantie
17
13
Aus Schottland
14
14
Ab £29 Pro Packung
18
15
Abo Sparen Bis 33%
19
Descriptions (4)
#
Description
Chars
1
Natürliche Dopamin-Unterstützung für Fokus und Motivation. Pflanzlich, wirkt in 60 Minuten.
90
2
FOCUS PRO enthält natürliche Dopamin-Vorstufen. 4,74/5 aus 6.020+ Bewertungen. Ab £29.
87
3
Über 2.000 Ärzte vertrauen Brainzyme. Vegan, allergenfrei, hergestellt in Schottland.
86
4
Kein Crash, kein Zittern. 365-Tage-Garantie. Abo sparen bis 33%. Jetzt testen.
79
SERP DE GABA SEARCHDE
15 headlines · 4 desc▶
Headlines (15)
#
Headline
Chars
1
GABA-Vorstufen-Formel
21
2
Natürliches GABA
17
3
GABA + L-Theanin
16
4
Ruhiger Fokus, Klarheit
23
5
Stressfreier Fokus
18
6
Pflanzliches GABA
17
7
Wirkt in 60 Minuten
20
8
Von Ärzten Empfohlen
20
9
4,74/5 Sterne
13
10
6.020+ Bewertungen
19
11
365-Tage-Garantie
17
12
Vegan & Allergenfrei
20
13
Aus Schottland
14
14
GMP-Zertifiziert
16
15
Abo Sparen Bis 33%
19
Descriptions (4)
#
Description
Chars
1
FOCUS ELITE enthält natürliche GABA-Vorstufen und L-Theanin für ruhigen, klaren Fokus.
87
2
GABA, das die Blut-Hirn-Schranke überwindet. Pflanzlich, wirkt in 60 Minuten.
79
3
Über 2.000 Ärzte vertrauen uns. 4,74/5 aus 6.020+ Bewertungen. Hergestellt in Schottland.
90
4
365-Tage-Geld-zurück-Garantie. Vegan, allergenfrei, GMP-zertifiziert. Abo sparen bis 33%.
89
PMax DE Brand: Allgemein PMAXDE
15 HL · 5 desc · 5 long HL▶
Headlines (15)
#
Headline
Chars
1
Brainzyme Fokus
15
2
Deutschlands Wahl #1
20
3
Klarer Denken Heute
19
4
3 Formeln, 1 Marke
18
5
Pflanzlicher Fokus
18
6
Wirkt in 60 Minuten
20
7
Ab £18 Pro Packung
18
8
4,74/5 — 6.020+ Reviews
24
9
2.000+ Ärzte Vertrauen
23
10
Kein Crash. Kein Zittern.
25
11
365-Tage-Garantie
17
12
Vegan & GMP
11
13
Aus Schottland
14
14
Abo Sparen Bis 33%
19
15
Allergenfrei
12
Long Headlines (5)
#
Long Headline
Chars
1
Brainzyme — Britains erste natürliche Fokus-Ergänzungsmarke
57
2
3 pflanzliche Formeln für Fokus, Energie und mentale Klarheit
60
3
Über 2.000 medizinische Fachkräfte vertrauen Brainzyme
55
4
4,74/5 Sterne aus über 6.020 verifizierten Bewertungen
55
5
Klarer denken, mehr schaffen — wirkt innerhalb von 60 Minuten
60
Descriptions (5)
#
Description
Chars
1
Britains erste natürliche Fokus-Marke. 3 pflanzliche Formeln ab £18. Schnelle Lieferung.
87
2
Über 2.000 Ärzte vertrauen uns. 4,74/5 aus 6.020+ Bewertungen. Wirkt in 60 Minuten.
85
3
Vegan, allergenfrei, GMP- & HACCP-zertifiziert. Hergestellt in Schottland. 365-Tage-Garantie.
90
4
Elite für ruhigen Fokus, Pro für Antrieb, Original für den Alltag. Ab £18.
78
5
Abo sparen bis 33%. Kein Crash, kein Zittern. Pflanzliche Wissenschaft, der Sie vertrauen.
89
PMax DE Brand: Retargeting PMAXDE
15 HL · 5 desc▶
Headlines (15)
#
Headline
Chars
1
Noch am Überlegen?
19
2
Bereit für Brainzyme?
21
3
Jetzt 33% Sparen
16
4
Ihr Fokus Wartet
16
5
365 Tage Risikofrei
19
6
6.020+ Zufriedene Kunden
24
7
Wirkt in 60 Minuten
20
8
Kein Risiko. Geld Zurück.
25
9
Ärzte Empfehlen Uns
20
10
3 Formeln Ab £18
16
11
Abo & Sparen
12
12
Pflanzlich. Bewiesen.
21
13
Aus Schottland
14
14
Vegan & GMP
11
15
Jetzt Fokus Finden
18
Descriptions (5)
#
Description
Chars
1
Sie haben geschaut — jetzt testen. 365-Tage-Geld-zurück-Garantie. Kein Risiko.
81
2
6.020+ verifizierte Bewertungen. 4,74/5 Sterne. Die vertrauenswürdigste Fokus-Marke.
84
3
Abo sparen bis 33%. 3 pflanzliche Formeln ab £18. Wirkt innerhalb von 60 Minuten.
81
4
Über 2.000 medizinische Fachkräfte vertrauen uns. Vegan, GMP, aus Schottland.
79
5
Elite für ruhigen Fokus, Pro für Antrieb, Original für Alltag. Risikofrei testen.
86
PMax DE Anti-Fatigue (Geteiltes Budget) PMAXDE
15 headlines · 4 desc▶
Headlines (15)
#
Headline
Chars
1
Gegen Mentale Müdigkeit
24
2
Energie Ohne Crash
18
3
Mentale Energie Boost
21
4
Pflanzliche Energie
19
5
Den Ganzen Tag Wach
19
6
Schluss Mit Nachmittags-Tief
28
7
Wirkt in 60 Minuten
20
8
Von Ärzten Empfohlen
20
9
6.020+ Bewertungen
19
10
4,74/5 Sterne
13
11
365-Tage-Garantie
17
12
Vegan & Allergenfrei
20
13
Aus Schottland
14
14
Ab £18
6
15
Abo Sparen Bis 33%
19
Descriptions (4)
#
Description
Chars
1
Mentale Müdigkeit bekämpfen mit pflanzlichen Formeln. Wirkt in 60 Minuten. Kein Crash.
86
2
Über 2.000 Ärzte vertrauen Brainzyme. 4,74/5 aus 6.020+ Bewertungen. Ab £18.
79
3
Vegan, GMP-zertifiziert, allergenfrei. 365-Tage-Garantie. Hergestellt in Schottland.
82
4
3 Formeln für den ganzen Tag. Abo sparen bis 33%. Jetzt risikofrei testen.
• All text rendered by Templated.io — never baked into images.
9 Creative Formats
Format
Hook Type
Pipeline
Use When
Problem/Solution Static
problem-agitation
batch_generate.py
GABA, Brain Fog — high transactional
Curiosity-Gap Static
curiosity-gap
batch_generate.py
Dopamine, educational intents
Social Proof Static
authority
batch_generate.py
Brand, retargeting
Product Hero Static
benefit-lead
batch_generate.py
Brand only — max 20% of mix
Story Carousel
varies
carousel_story_pipeline.py
All intents — swipe creates momentum
Google DG Carousel
product-showcase
carousel_pipeline.py
Google Demand Gen
Long-Form Copy / Advertorial
curiosity-gap + Andromeda signposting
Manual (LLM copy + lifestyle image)
Meta person-matching — highest intent filter
Put It To The Test Video
curiosity-gap + challenge
Manual (UGC)
All platforms
Problem Narrative Video
problem-agitation
Manual (scripted)
All platforms
Intent-to-Format Mapping
Intent Cluster
Problem-Agitation
Curiosity-Gap
Benefit-Lead
Authority
Long-Form
Transactional high (GABA, Brain Fog)
50%
30%
20%
—
—
Commercial comparison (Ritalin)
40%
40%
—
20%
—
Educational (Dopamine)
20%
50%
—
—
30%
Brand
—
—
50%
30%
20%
General transactional
40%
30%
30%
—
—
Production Mix Target
Problem/Curiosity Statics
40%
Highest priority
Carousels
25%
Swipe momentum
Long-Form / Advertorial
20%
Highest intent filter
Benefit-Lead / Product Hero
15%
Brand only — cap at 15%
Single source of truth:config/brainzyme_product_matrix.json → _meta.
Dashboard reads data/product_lexicon.json (auto-synced via tools/sync_lexicon_to_dashboard.py).
Edit the matrix only — never this file.
Copy methodology version: loading…
· added ….
Power Vocabulary
Per-SKU adjective ladder. Tier 1 = pick first. Tier 2 = variation. Banned = validate_copy() error for the bound SKU.
SKU
Approved Tier 1 (primary)
Approved Tier 2 (supporting)
Banned in ad copy
Structural Patterns
Five converting copy structures. Match candidate to a pattern before writing — see _meta.structural_patterns in the matrix.
Market Tonality Lens v1.0 NEW · 2026-04-23
Country-first filter. Every other copy decision (mechanism, stage, mode, character budget) flows through the market lens. Resolve market first, then project downstream.
Why it exists: Localisation is not translation. A UK "quiet competence" hook lands wrong in the US (reads as diffident) and wrong in DE (reads as under-claimed). The lens locks register, preferred verbs, proof style, and per-market regulatory guardrails. Enforced via product_matrix.validate_copy_market(text, market). Absorbs feedback_local_first_creative.md.
Funnel Register v2.0 4 NEW subsections · 2026-04-22
Persona-agnostic structural framework. Pain-state framing is the self-ID trigger for mechanism-bound SKUs — not aspirational/optimiser framing. Specific copy lines live in per-segment headline banks.
What changed (v1.0 → v2.0): flat string cells replaced with dict cells carrying register / audience_state / required / banned. Added tonal overlay (2026 resilience), BOF three-layer stack, and format deltas grid. Original is phased out — only Pro + Elite are ad-eligible. Full session log: Register v2.0 Log tab →
Tonal overlay — 2026 resilience register NEW · 2026-04-22
Register rules — Stage × SKU v3.1 · TWO-MODE TOF required / banned elements per cell
TOF view:Pain-state = problem-first self-ID · Aspirational = mechanism-bound identity. See mode_guidance per cell.
Stage
FOCUS Original
FOCUS Pro
FOCUS Elite
BOF three-layer stack NEW · 2026-04-22 identical for Pro + Elite
Format deltas NEW · 2026-04-22 format IS register (post-Andromeda + PMax era)
Format
TOF
MOF
BOF
ASA-Safe Phrase Library
Green = safe to use. Red = risky — documented regulatory action or hard-to-substantiate claim.
✓ Safe phrases
Phrase
Source
Notes
✕ Risky phrases
Phrase
Reason
Source
Vocabulary Lexicon
PRO / ELITE — 4-Class Product Vocabulary Lexicon
The locked language system for our two hero products. Every customer-facing word draws from this 4-class framework. Class 1 (SKU labels) is site-authoritative — it must match what's actually on brainzyme.com, brainzyme.de, brainzyme.fr, brainzyme.us. Class 4 (emotional adjectives) like "drive" and "calm" are licensed for hook copy only — never as SKU labels or structural claims.
Loading from vault…
View labels in
Class
PRO
ELITE
Licensed for
Loading 4-class matrix…
v1.2 Extensions NEW
Added 19 Apr 2026 — EFSA / NHC authorised claims, verb hierarchy, descriptor synonyms, market-specific localisation, and the consolidated biohacking-cluster exception. NEW pills auto-hide after the _new_until date in the vault.
Authorised Claims NEW
Market
PRO & ELITE
ORIGINAL (omits memory)
Verb Hierarchy NEW
Market
Approved
Sparingly
Banned
Descriptor Synonyms NEW
Market
Default
Variety
Flexible alternates
Localisation NEW
Audience Context Exception NEWbiohacker LPs only
Term
EN
DE
FR
Localised?
SA4 Short Claim Family — All 4 Markets
Primary (A) is used ~65–70%. Alt (D) is used ~30–35% when the 3-tier range moat is the angle (competitor conquest, category education, quiz funnel entry).
Market
Primary (A) — short_claim_*
Alt (D) — short_claim_alt_*
Banned · Approved
✕ Never write this
✓ Write this instead
🔍 Copy Check — Paste ad copy to scan for lexicon violations
Where it's enforced — 1 matrix + pointers
Refactored 19 Apr 2026 (Session 41 — Path 2 SSOT migration): config/brainzyme_product_matrix.json → _meta.lexicon is the single source of truth (multi-brand: each brand_product_matrix carries its own _meta.lexicon). Programmatic API: tools/product_matrix.py → lexicon() / class_word() / sa4_short_claim() / validate_copy() / authorised_claims() / verb_hierarchy(). All other files are thin pointers. This dashboard fetches data/product_lexicon.json (auto-synced from the matrix via tools/sync_lexicon_to_dashboard.py) — edit the matrix only.
Calum pushed back on v1.0 funnel register framing. Two issues were raised:
Issue 1 — Personas baked in. v1.0 said Pro was "aspirational, identity-led, match the archetype" and Elite was "empathetic, problem-first". The draft then wrote example copy like "For people who need to ship, not just start" (Pro) and "For focus that doesn't come at your nervous system's expense" (Elite). This locked the framework to one customer type — it broke for menopausal women, students, dads managing chaos, carers, founders, dev teams. The same SKU needs different copy across segments.
Issue 2 — Missing macro context. v1.0 had no awareness of the 2026 economic / geopolitical climate. In a world of pressure, instability, and tight budgets, audiences want resilience framing (show up, keep going, hold it together) — NOT optimisation framing (10x, unleash, peak performance, unlock potential).
ALM Corp, Store Growers, Lunio, Growth Minded Marketing, Google Ads Help
Meta Andromeda era
Format IS register post-Andromeda (Oct 2024). Minimum 8 variants per cell. Format diversity mandatory. Creative IS targeting. Self-ID at second zero. TOF ROAS declined 13% when using broad aspirational framing. Dynamic social-proof is BOF-only.
Premium TOF = educational, not direct-response. BOF stacks number + validator + risk-reversal. Mechanism is MOF not TOF. Single static = BOF workhorse. Risk reversal escalates with price. Key finding: problem-first is sub-premium for generalist optimisers like AG1/MLP — but BOTH problem-first AND mechanism-bound-aspirational work for pain-solving SKUs like Brainzyme.
AG1, Seed, Ritual, Thorne, Magic Mind, Mind Lab Pro, HVMN, Function Health
Convergent finding across all 3 streams:Pain-state framing IS the self-ID trigger for Brainzyme's mechanism-bound SKUs (dopamine→drive, GABA→calm). Not naming the pain loses the second-zero self-ID — the opposite of what Meta Andromeda rewards. The AG1/MLP "aspirational only, never problem-first" principle doesn't transfer because those are generalist optimisers. Brainzyme's Pro and Elite are emotionally bound to specific pain states.
"Empathetic to stress. Problem-first. Never clinical."
Stress-state pain frame — overwhelmed, stressed, frayed, holding too much. Problem-first + empathetic IS correct. Calm focus that holds under pressure.
TOF Original
"Warm, relatable, low-stakes."
OUT OF SCOPE for ad creative (ad_eligible: false). Mild entry-level, suitable for 10–15yo children, site-only.
Tonal overlay
—
NEW 2026 resilience register. Bans hustle-culture / 10x / peak / unleash / crush / supercharge / unlock-potential / become-new-you / pre-2024-prosperity. Preferred verbs: show up, turn up, keep going, get through, stay steady, hold, carry, keep at it.
Format deltas
—
NEW platform × stage rules. Meta Reels / Meta Static / Google PMax / Google Demand Gen each have TOF/MOF/BOF structural recipes. Format IS register post-Andromeda.
MOF rule
Outcome-led, mechanism anchor, power adjectives.
Mechanism + number + validator. Named pathway (dopamine for Pro, GABA for Elite). Cited ingredient count (20 / 29).
BOF rule
Proof-dense, review stack, direct CTA.
Three-layer stack: 365-day guarantee (hero, never footnote) / validator (reviews OR medical professionals) / subscribe & save 16–33%. Guarantee is biggest edge vs Seed/MLP's 30-day.
4. Conclusions Reached
Framework, not templates. Register rules are structural patterns (what tone, what required elements, what banned elements) — they do NOT contain specific copy lines. Copy lines live in per-segment headline banks and get filled at commission time.
Pain-state is the self-ID trigger for Brainzyme. Pro audience recognises "flat / foggy / low drive" as themselves. Elite audience recognises "overwhelmed / frayed / holding too much". These are segment-agnostic — work across menopausal women, students, dads, devs, carers, founders.
Original is out of scope for ads. Mild entry-level formula suitable for 10–15yo children. Never appears in ad creative. Pro + Elite only.
2026 resilience temper. Global economic pressure + geopolitical instability means optimisation framing reads as tone-deaf. All copy tempered toward resilience, showing up, daily consistency, getting through.
Format IS register. Post-Andromeda (Meta, Oct 2024) and Google PMax era. Same funnel stage needs different structure on Reels vs static vs PMax asset vs Demand Gen. Format deltas codify this.
BOF three-layer stack is universal. 365-day guarantee as hero (not footnote) is Brainzyme's single biggest competitive edge — Seed and Mind Lab Pro only offer 30 days. Stack order is locked, only the Layer 2 validator rotates by segment.
"refuse to slow down" headline flagged for review.
v4.0/agent-playbook.md
New Step 3.0e — Register check.
CHANGELOG.md
v2.0 entry logged.
v4.0/deployment-log.md
v2.0 entry logged with change table.
6. Verification Cascade
3 Opus 4.7 audit agents: Agent 1 (pre-refinement research): Synthesised Google Ads 2026 / Meta Andromeda / supplement teardowns → revised framework. Agent 2 (post-write verification): PASS. Flagged dashboard renderer break (string-based code on dict cells) — fixed. Agent 3 (final audit): PASS WITH MINOR GAPS. Flagged 3.0b collision + missing changelog entries — all resolved.
7. Open Items (Non-blocking)
banned-copy-gate.sh does not yet parse the hustle_culture_register rule. Enforcement currently via PIL copy validation + human review. Gate-level regex follow-up is optional.
Phase 2 rollout from earlier in session (6 remaining files per copy-methodology-spec §4) still pending Calum's spec review.
E-04 composite still shows "Gentle Focus. Every Day." Replacement ("Stress-Free Focus. Every Day.") pending — will pair with Phase 2.
D1–D5 spec decisions (answered inline during session) not yet committed to matrix structure.
Canonical SoT: config/brainzyme_product_matrix.json → _meta.funnel_register. All other files are consumers or summaries. When in doubt, the matrix wins.
Outcome:_meta.funnel_register.stages.* and _meta.power_vocabulary re-keyed from SKU (FOCUS Original / Pro / Elite) to mechanism (baseline / dopamine / GABA). Compat layer in product_matrix.py projects SKU view on read. Dashboard columns unchanged — renderer looks up mechanism via product_theme_binding.class_3_mechanism.
v3.0 — Why re-key by mechanism?
The funnel-register + vocab cells aren't really about the SKU label — they're about the mechanism the copy is written against. FOCUS Pro copy is dopamine-drive copy; FOCUS Elite is GABA-calm. If we ever add a second SKU to the same mechanism (e.g. a Pro+ variant), the copy rules stay identical. Keying by mechanism makes the primary key match what actually drives the copy, and makes the structure future-proof for multi-SKU-per-mechanism expansion.
+5 methods + 5 module-level wrappers (mechanism projection compat layer). validate_copy() unchanged — did not reference power_vocabulary.
tools/sync_lexicon_to_dashboard.py
One field added to export: product_theme_binding (so renderer can project SKU→mechanism). Minimal additive change; scoped as zero-change in original plan, flagged in final report.
brainzyme-git/.../data/product_lexicon.json
Regenerated via sync_lexicon_to_dashboard.py. Now mechanism-keyed + carries product_theme_binding.
brainzyme-git/.../creative.html
New mechanismForSku() helper. renderMarcomPowerVocab() and renderMarcomFunnelRegister() patched to look up via mechanism, fall back to SKU key for back-compat. Tab label renamed "Register Log" + v3.0 addendum.
memory/feedback_mechanism_keyed_schema.md
NEW — documents the mechanism-keyed pattern + compat layer helpers.
CHANGELOG.md + v4.0/deployment-log.md
2026-04-23 entry logged.
v3.0 — Decisions locked
Keep baseline as a first-class mechanism key. Original's cells aren't dropped — they're stored under baseline. Consumers that need Original behaviour still get a cell.
Audience lives on theme binding, not the lexicon. New primary_audience field is on _meta.product_theme_binding. The 4-class lexicon (classes 1–4) is contract-locked; audience is product metadata, not class lookup.
Compat via projection, not migration. Option B — storage is mechanism-keyed; callers can still ask for SKU view via funnel_register_by_sku() / power_vocabulary_by_sku().
Display columns stay SKU-labelled. Users think in SKUs; storage is keyed by what drives the copy. Renderer bridges the gap via product_theme_binding.class_3_mechanism.
No combo register. Starter Bundle is merchandising-only — no separate cell.
Bundle power_vocabulary refactor in same PR. Same schema change, same commit.
v3.0 SoT unchanged: config/brainzyme_product_matrix.json → _meta.funnel_register + _meta.power_vocabulary. The storage key moved from SKU to mechanism; the rules didn't change.
Outcome: TOF now supports two co-equal modes. MOF + BOF unchanged (single-mode). Aspirational headline bank shipped for all 4 markets (UK / US / DE / FR). 117 PIL-verified headlines, 0 validate_copy violations.
v3.1 — Trigger
User correction on v3.0 framing. v3.0 framework had ONE TOF mode — pain-state ("feeling flat / overwhelmed"). User flagged this as a cop-out: aspirational TOF is equally valid when the aspiration is mechanism-bound. Both modes co-exist:
Pain-state self-ID: "Feeling flat? Can't get moving?" (dopamine) / "Overwhelmed? Frayed?" (GABA) — the v3.0 mode, kept.
Aspirational self-ID: "Get your drive back." (dopamine) / "Calm under fire." (GABA) — new mode, additive.
The misconception corrected: Meta's research on "13% TOF ROAS decline on broad aspirational framing" was about generic optimiser language (AG1/MLP "unlock your potential") — NOT mechanism-specific aspiration. "Get your drive back" is aspirational but still mechanism-bound (dopamine). "Calm under fire" is aspirational but still mechanism-bound (GABA). Banned elements in each aspirational_frame enforce the boundary.
v3.1 — Framework change
Area
v3.0 (was)
v3.1 (is)
TOF shape
Single cell with required_elements + banned_elements (pain-state implicit)
Cell still carries shared register + audience_state, plus two sub-frames: pain_state_frame and aspirational_frame, each with its own required/banned. Plus mode_guidance field.
MOF / BOF shape
Single-mode dict cell
Unchanged. Two-mode split is TOF-only.
Format deltas
Flat string per (platform × stage)
TOF cells gain default_mode hint + 1-2 example headlines (soft guidance, not mandate). Meta Reels / DG default to pain-state (scroll-interrupt). Meta Static / PMax default to aspirational (identity-led).
Headline bank
—
NEW 77 headlines (7 Tier A + 3 Tier B per mechanism × market) across UK/US/DE/FR. Stored at aspirational_frame.example_headlines.{market}. All PIL-verified (Tier A fits 4:5 at 936px, Tier B fits wide 1.91 at 1072px). All validate_copy() clean.
Accessor API
register_for(product, stage) returns whole cell
register_for(product, stage, mode=None) — optional mode arg filters TOF to one frame ("pain_state" / "aspirational"). Non-TOF stages ignore mode. funnel_register_by_sku(mode=...) propagates through SKU projection.
Dashboard UX
TOF row shows one cell per SKU
NEW toggle button group above register grid: Pain-state / Aspirational / Both stacked (default). Toggle re-renders TOF row only.
v3.1 — Headline bank additions
Mechanism
Market
Tier A (4:5 universal)
Tier B (wide-only)
Total
Dopamine (Pro)
UK
7
3
10
US
7
3
10
DE
7
2
9
FR
7
3
10
GABA (Elite)
UK
7
3
10
US
5
3
8
DE
7
3
10
FR
7
3
10
Total banked
54
23
77
All 77 headlines PIL-measured (Poppins Bold) and all lexicon-validated. 0 banned_copy_patterns hits, 0 banned verbs, 0 class-4 cross-pollination. Tool: tools/pil_aspirational_bank_2026_04_23.py.
NEW — canonical rule. When to pick which mode; misconception correction re generic-optimiser-aspirational vs mechanism-bound-aspirational.
memory/feedback_creative_hooks.md
Mode selection criteria appended.
memory/MEMORY.md
Index pointer for new feedback file.
v4.0/copy-methodology-spec.md
§3.3 updated for two-mode TOF framework.
v4.0/agent-playbook.md
Step 3.0e — pick TOF mode per ad slot (pointer to mode_guidance).
brand-voice/brand-voice.md
Resilience Register section extended with aspirational examples per mechanism.
CHANGELOG.md + v4.0/deployment-log.md
2026-04-23 v3.1 entry logged.
v3.1 is additive only — all v3.0 pain-state content preserved verbatim inside pain_state_frame. Rollback path: restore brainzyme_product_matrix.backup-2026-04-23-v3.1-two-mode-tof.json and revert product_matrix.py/creative.html.
NEW · 2026-04-23Customer-voice research addendum (before ~40 more headlines shipped)
v3.1 Research — Gap Analysis vs. GABA / Dopamine / Focus Buyers
Deep-web research pass triggered by PIL budget bump (22-27 chars Tier A). Goal: validate the 77 aspirational headlines are hitting real customer voice before banking a Phase 2 extension. Findings below, Q1-Q4 locked by Calum, 4 out-of-scope items spun out into their own briefs.
Research output
Full gap analysis banked at marketing/ads-creative/v3.1-research-gap-analysis-2026-04-23.md (~7 sections, Tables A-F, 22 recommended headline additions, source list). Headline findings below.
Top 5 genuine gaps (against 77 banked aspirational headlines)
Gap
Customer voice signal
Phase 2 response
Task-initiation language
Buyers don't say "focus" — they say "I sit down and can't start". Mechanism-bound dopamine lane missing this direct-intent signal.
Add MOF/TOF headline variants around "first keystroke", "get moving", "start the thing".
Carrying / holding / steadying verbs
GABA-lane customer voice is carrying (mental load, caregiver, team lead) — NOT combat ("calm under fire"). 2026 resilience overlay aligns perfectly.
Rebalance GABA bank — replace combat-leaning entries with carrying/holding/steadying register. Q3 decision: REPLACE, not balance.
Identity-recovery register
Repeated review language: "I feel like me again" / "got myself back". Deep lifetime-value signal, not currently represented in 77 headlines.
Advertorial narrative format (not headline). Out-of-scope → Brief 1.
Floor-framed aspiration ("all-day")
Buyers aspire to a raised floor, not a raised ceiling. "All-day Focus" / "All-Day Calm" hits harder than any peak-performance framing.
Banned (become-new-you). Floor-framed aspiration is Brainzyme-native.
Conclusion: mechanism-bound + resilience-overlay register is structurally different from the top-3 category competitors. No register collision. Ship Phase 2 with confidence.
Calum's Q1-Q4 decisions (locked)
#
Question
Answer
Q1
Market-specific wording fit for the aspirational 77 headlines per territory (UK/US/DE/FR)?
Approved — "wording looks completely fine for each territory". Proceed as banked.
Q2
Identity-recovery register — spin out into separate workstream, or fold into headline bank?
Spin out — Brief 1 (advertorial narrative format, not headline).
4 out-of-scope items dispatched as parallel Opus 4.7 Sonnet agents (background). All 4 complete as of 2026-04-23. Each wrote its own spec file under marketing/ads-creative/. Phase 2 implementation (headline bank extension + matrix v3.1.1) gated on Calum reviewing all 4 before dispatch.
Mental load persona (Elite-primary): "She is the one everyone else depends on, quietly holding the whole thing together while nobody sees the weight." 11-section brief — 5 day-in-life pain moments, 10 FLUX scenes (ML-01 to ML-10, hand-only + 3/4 angles to dodge FLUX camera-facing fail zone), 20 headline angles (carrying/holding/steadying verbs, 10 UK/US + 5 DE + 5 FR), DO/DON'T imagery, LP routing, compliance flags.
DE/FR native corpus mining — 73 DE + 47 FR creator UGC transcripts (~183k native chars) surfaced structural gaps: DE demands efficacy axis (Wirkung 30+ hits) + comparative form (fokussierter/ruhiger) vs EN's absolute; FR frames dopamine as fatigue-defeat (coup de barre) not drive-gain; FR somatic-soft vs DE authority-hard. Top picks: Wirkung, die man spürt. / Reizflut? Kopf frei. / Stimulation sans stress.
After the 4 briefs complete and Calum reviews, the Phase 2 implementation agent will extend the headline bank with:
~40 new headlines (longer Tier A 22-27 chars × aspirational × 4 markets × 2 mechanisms, plus longer pain-state example_headlines which are currently empty).
22 research-recommended additions — Table D from gap analysis, Q1-Q4 decisions applied (floor-framed / "all-day" / carrying/holding verbs).
Combat-verb purge on existing GABA bank entries per Q3 REPLACE directive.
PIL-verified at 964px @ Bold 88pt (4:5 Tier A new budget, confirmed in tools/pil_v5.py).
Matrix version bump v3.1 → v3.1.1, dashboard sync via sync_lexicon_to_dashboard.py.
Gate: all 4 briefs reviewed by Calum + spec comments returned. Phase 2 won't touch matrix before briefs close — avoid re-ship cycles.
Cluster-Level Feedback
Give feedback at the intent cluster, market, or creative format level. Individual ad group feedback is in the Google Ads Copy tab. Use Export Feedback JSON to collect everything.
By Intent Cluster
GABA GABA / L-Theanine / Calm Focus
Dopamine Dopamine / Focus / Motivation
Brain Fog Brain Fog / Mental Clarity
Ritalin/ADHS Ritalin Alternative / ADHS (DE/FR only)
Canonical Library & Creative Pipeline — How It Works · As of 2026-04-19 · Audience: Calum + future Claude sessions
1. Dashboard Tabs — What Each One Is
Two separate dashboards. This file (v4.0-alt/creative.html) is the copy/strategy dashboard. The image-grid review dashboard lives at creative-review/index.html and loads creative-review/runs.json dynamically.
All 197 published composites live here. Date-named sibling folders (canonical-library-2026-04-17 etc.) are snapshot archives — do not edit them. The live dashboard tab always points to canonical-library/.
Git = archive
Every push is a permanent checkpoint. To restore a prior state:
No date-stamped folder proliferation — one folder, version-controlled.
Rule: Never create new date-named publish folders. Use git for history. The parallel agent archive-consolidation task (2026-04-19) may be mid-run when you read this — if canonical-library-2026-04-17 / canonical-library-2026-04-18 folders have been removed from the repo, that is expected.
All outputs land in output/pending/. SHAPE_LOCK prompt baked in. 4-ref pack including hand-ref-C scale anchor kills oversized-bottle drift.
1.5
QC gate — Claude-vision
tools/publish_run.py with require_qc_for=[...]
Fail-closed. Callers must declare exactly one of: require_qc_for / qc_source="catalog" / qc_bypass_reason. Flags: label accuracy, bottle shape, oversized product, face crop, colour bleed. NEVER skip without documented bypass reason.
2
PIL composite
tools/pil_v5.py
Single source of truth for typography. Canonical composite: composite_wide_v3b_highlight for wide (universal default); composite_wide_v3c_soft for women-led + FR parapharmacie. 4 formats: 4:5 / 1:1 / 1.91:1 / blog. LineOverflowError raised if copy exceeds budget — auto-shrink banned. Measure with pil_headline_candidates_2026_04_18.py before shipping.
Contains: banned-copy regex patterns (18 hook-enforced), SHAPE_LOCK FLUX prompt, image-gen config, compliance absolutes, canonical ingredient counts, dose rule (always 2 capsules). 4-class SKU vocabulary moved to brainzyme_product_matrix.json → _meta.lexicon on 2026-04-19 (Session 41) for multi-brand future-proofing.
SHAPE_LOCK is also synced as a constant into foreplay_templates_run.py and library_based_run.py. If you update the vault, update those scripts too.
Pre-commit hook
F:\Claude Root\.claude\banned-copy-gate.sh
Fires on PreToolUse for Write/Edit to: tools/*.py, marketing/**, *.html, *.liquid, *.csv, pmax_*.json. Runs vault patterns against file content before the write lands. Bypass requires explicit --bypass with logged reason.
Banned-Copy Pattern IDs (18 total — config/creative_vault.json → guardrails.hook_banned_patterns.patterns)
ID
What it blocks
doctors-subhead / doctors-know / doctors-trust
“doctors” in any customer-facing copy — must be “medical professionals”
Measure headline length with pil_headline_candidates_2026_04_18.py before writing. LineOverflowError budget: 4:5=936px / sq=940px / wide=1072px.
New FLUX hero
Subject-swap on approved layout: library_based_run.py --id E-07 --subject "..." (library is layout, not subject lock).
Fresh hero: final_run.py with SHAPE_LOCK constant. Always --dry-run first. ALWAYS run Stage 1.5 QC after generation — flag first, then --fix only flagged images.
New banned-copy rule
Add a regex object to creative_vault.json → guardrails.hook_banned_patterns.patterns[]. Required fields: id, pattern_egrep, remediation. Test by writing a dummy file that contains the pattern — the hook should fire.
New SHAPE_LOCK constraint
1. Append to vault image_generation.product_shape_lock.
2. Sync the same text into the SHAPE_LOCK constant in foreplay_templates_run.py and library_based_run.py.
3. Do a test run with --dry-run before committing.
7. Known Gaps / Things Not Yet in the Canonical Library
ADHD blog advertorial format — System C pil_v5.composite_blog(). Separate roster, not yet commissioned into canonical library. Tracked under creative-review/images/blog-adhd-* tabs.
Wide format missing for F-series + G-series entries — 13 of 50 roster IDs have no wide-v3 composite. Escape hatch: FLUX-native regen (right-third strict guard + per-scene constraints).
v3c_soft variant — exists in pil_v5.py, used only for women-led + FR parapharmacie contexts. Not in the main canonical library run by default. Opt-in per-scene.
US market creative — all current canonical entries are UK/DE/FR. US local-first copy not yet commissioned into the library.
Flat-colour PIL variant — deferred (2026-04-15) until “text covers face/product” needs-work items are cleared.
Note: GitHub Pages propagates within ~30 seconds. Verify at apps.nutritionalproducts.org/creative-review/.
Last updated: 2026-04-19 · Source files: config/creative_vault.json, config/canonical_library_copy_v2.json, creative-review/runs.json · Maintained by: Claude Code sessions + Calum review
Sister-Hero Tracking — deployment report
Every banked ad composite pairs with its raw FLUX hero (the image before PIL text overlay).
Composite carries baked-in PIL that cannot be un-baked — the raw hero is the only reversible
anchor for future subject-swaps, PIL refreshes, or copy regens. This tab is the live status
report for the 2026-04-19 sister-hero deployment.
Status: LIVE · Backfill complete · 61/61 heroes resolved (100% coverage across 197 banked composites) · 0 missing.
Why this exists
Banking (tools/bank_canonical_pending.py --execute) uses shutil.copy2() —
a pure file copy, no PIL re-render. When an approved ad carries a stale typography era or outdated trust-bar
treatment, the only way to refresh it is to re-render from the raw hero. Before this deployment, that hero
lived under a time-stamped sibling name in output/pending/ and would be pruned over time.
Now it’s preserved alongside the composite with a registry that makes it findable by ID.
Sister folder next to the 197 composites. Normalised filenames hero-{ID}.jpg. 61 files / 100% coverage.
Registry
config/canonical_hero_registry.json
Programmatic SoT. Per ID: hero_file, hero_path, source_path, source_mtime, composites[], copied_at.
Bank-script hook
tools/bank_canonical_pending.py
After runs.json save + banked_items.json regen, subprocesses the reconcile script, then git add .../heroes. Every new Banked item ships with its hero in the same commit.
Memory file
memory/feedback_sister_hero_tracking.md
Rule + schema + downstream use. “Never treat composite as hero — PIL is destructive.”
Start from heroes/hero-{ID}.jpg, never from the baked composite.
Report generated: 2026-04-19 · Owner: Session 40 (sister-hero deployment) · Next audit: on-demand (registry is self-describing).
System Build — Headline Bank Modularization (2026-04-26)
This thread converted the 274-line curated headline bank from review artefact into a first-class
matrix asset, gave copy-gen agents a typed reader API, locked the schema with hooks, and surfaced
bank anchors inside the existing copy preflight. End-to-end discipline so future TOF copy generation
can’t drift away from what we just curated.
copy_preflight.py validated copy but never showed the author what good looked like.
New --reference-headlines flag surfaces top-K curated anchors for the (market, mechanism, mode) selectors. Advisory PASS.
Pre-write gate
A careless example_headlines overwrite could silently regress the schema.
PreToolUse hook headline-bank-schema-gate.sh blocks (exit 2) any Edit/Write that would land flat strings or objects with missing required fields.
Post-write audit
Tightening a lexicon rule could retroactively invalidate curated lines without anyone noticing.
PostToolUse hook matrix-lexicon-resync.sh re-runs validate_copy_market() over all 274 headlines on any lexicon edit; reports retroactive failures non-blocking to .claude/matrix-resync.log.
Workflow doc
Copy-gen workflow had no “consult the bank” step.
memory/CANONICAL_copy_gen_workflow.md Step 0: query bank first. API quickref + hook protection table inline.
One-shot apply tool. Reads candidates.json, projects each entry into the v3.2 object shape, writes to matrix with sort (quality DESC, tier A>B, id ASC). Backs up matrix before write. --dry-run / --write.
config/brainzyme_product_matrix.json
MODIFIED
Bumped _meta.funnel_register._version 3.1 → 3.2. All 16 cells (4 markets × 2 mechanisms × 2 modes) now hold object arrays. Backup at brainzyme_product_matrix.backup-2026-04-26-pre-headline-objects.json.
tools/product_matrix.py
MODIFIED
Added ProductMatrix.headlines() + headlines_for_sku() + module wrappers + CLI --headlines & filter flags. Defensive: raises KeyError if a cell is still flat strings. Pre-existing gender-filter bug fixed (now accepts M/F/N AND masculine/feminine/neutral).
tools/copy_preflight.py
MODIFIED
New check_reference_anchors() + CLI flags --reference-headlines / --ref-min-quality / --ref-gender / --ref-persona. SKU→mechanism mapping (PRO=dopamine, ELITE=GABA) for bank lookup.
.claude/headline-bank-schema-gate.sh
NEW HOOK
PreToolUse Edit/Write. Scope: matrix or migration mirror. Blocks flat-string regressions + missing required fields. Bypass via HOOK_BYPASS=1 (logged).
Before: the curated bank lived as a review artefact (candidates.json) in a working folder.
Copy-gen agents either ignored it or had to re-parse it ad-hoc.
After: the bank is in the matrix where every other lexicon / lens / register rule lives. One
consumer pattern, one sort rule, one set of filters — identical no matter which agent
asks for headlines.
Forward-portable to new brands
The hooks scope on filename + schema shape, not on Brainzyme content. When
HerLifty (or any future brand) clones the matrix, the same gates fire automatically with no
extra wiring.
Multi-brand SoT already exists at config/brands.json (5 brands; resolver in
tools/brand_resolver.py). Step 7 spins up config/brands/herlifty/product_matrix.json
cloned from the Brainzyme matrix — deferred until HerLifty production work begins.
Two-layer defence
Per the project doctrine in feedback_two_layer_defense_doctrine.md: every rule
needs both an upstream gate and a downstream auditor. Schema-gate is the upstream pre-write
block; lexicon-resync is the downstream audit.
A lexicon edit can’t silently invalidate curated content. A schema regression can’t
silently land. Both fire automatically — agents don’t need to remember.
Discoverable, not memorised
The new memory file is indexed in the GEN — Read first section of
MEMORY.md, so any new Claude thread sees it before any TOF copy task.
Step 0 of CANONICAL_copy_gen_workflow.md tells the agent to consult the bank.
Hooks then back-stop both writes and edits. Result: bank discipline doesn’t depend on
anyone remembering anything — including the model.
Quick-use reference
Read curated anchors (Python)
from product_matrix import headlines, headlines_for_sku
# By mechanism (raw)
headlines("UK", "dopamine", "aspirational",
gender="M", persona=None, min_quality=8, tier="A")
# By SKU (mechanism inferred)
headlines_for_sku("pro", "UK", "aspirational", min_quality=8)
Read curated anchors (CLI)
python tools/product_matrix.py --headlines dopamine aspirational \
--market UK --min-quality 8 --gender M
Surface anchors during preflight
python tools/copy_preflight.py \
--brand brainzyme --channel google_rsa --funnel tof --market uk \
--tof-mode aspirational --sku pro \
--copy 'Drive On. | Sharper than yesterday.' \
--reference-headlines --ref-min-quality 8 --ref-gender M
Outstanding
Step 7 — HerLifty matrix bootstrap. Deferred until HerLifty work begins.
v4.0/agent-playbook.md — Not yet updated to reference Step 0 bank-anchor lookup. Flag for next session if a TOF copy run hits the playbook before this is wired in.
Holistic system review — Plan agent identified 3 gaps; 2 are now closed (bank anchoring + matrix edits). The 3rd (brief stage unprotected) was deliberately left as doc-only because briefs are too creative to gate — revisit if compliance leaks reappear.
Time-bound or audience-bound creative overlays that compose on top of canonical lexicon
and market-tonality without overriding them. First production layer:
UK exam season Q2’26 (active 2026-04-15 → 2026-06-30, all 4 markets).
Reader API + preflight integration + brief runner all live; hooks extended for cross-layer protection.
Status: LIVE · Schema v1.0 in matrix v3.2 · 1 active campaign + 2 stub layers seeded ·
First brief shipped (PRO/UK/students) · Smoke tests green (FAIL/WARN/PASS/SKIP all firing).
Why this exists
Before campaign_layers, time-bound overlays (exam season, Easter, BFCM) needed ad-hoc lexicon edits
with no enforcement of expiry windows and zero compliance gating around campaign-specific claims
(e.g. “pass your exams” is treatment-adjacent under MHRA/FSA — banned only in this context).
This system makes seasonality declarative, auto-expiring, and compliance-gated.
Active & planned campaigns
Slug
Status
Window
Audience overrides
Constraints
exam_season_2026_q2
ACTIVE
2026-04-15 → 2026-06-30
students_18_25, parents_of_teens
3
easter_2026
STUB
2026-04-01 → 2026-04-12
(general)
0
january_reset_2027
STUB
2027-01-01 → 2027-01-31
resolution_seekers
0
Composition precedence (HARD RULES)
Priority
Layer
On conflict
1
_meta.lexicon.banned_copy_patterns
BLOCK
2
Campaign claim_constraints
FAIL
3
Market lens banned-verbs
WARN
4
Campaign discouraged_tokens
WARN
5
Campaign preferred_tokens
ALIGN
6
Brand voice tone
Augment, don’t replace
Brief workflow
Author a brief in campaign-briefs/<id>.json (schema in canonical memory doc).
Run python tools/campaign_brief_run.py <brief.json> — composes selectors, surfaces top-8 bank anchors, writes a starter pack with copy_lines TODO placeholders.
Writer/agent fills copy_lines.<channel>.<field>[*] in output/campaigns/<id>/starter_pack.json.
Lint with python tools/campaign_brief_run.py <brief.json> --check-existing → preflight_report.json (PASS / FAIL / WARN per line).
Active-window gate fires automatically — brief out of window aborts at step 2.
First production brief
Campaign ID
exam_season_pro_uk_2026_q2
SKU / Market / Funnel
PRO / UK / TOF (pain_state)
Audience
students_18_25
Owner
calum
Due
2026-04-29
Deliverables
RSA ×15 headlines + ×4 descriptions; Meta primary text ×5