Contents
0.Read this first 1.The business in one page 2.Funnel anatomy 3.The stack, and who owns what 4.Part A — accounts and plumbing, in this exact order A1.Create the Meta pixel yourself. FIRST. Before you touch Whop. A2.Whop business and ad account A3.Facebook Page and Instagram A4.Domain and wallet verification A5.Product and checkout in Whop A6.Fulfilment 5.Part B — buyer research comes first. This is a gate, not a phase. 6.Part C — competitor teardown: how we decide what the page looks like 7.Part D — building the pages in Claude Code 8.Part E — the order form 9.Part F — the ads 10.Part G — publishing to Cloudflare Pages 11.Part H — tracking, and what we actually measure 12.Compliance — the short, hard list 13.v1 definition of done 14.Open questions, and who answers them 15.Two blockers for handing this to people 16.Where everything lives 17.One rule worth repeating

Ad Growthv1 build brief

For
the team building the first funnel by hand.
From
Ben Palmer / Growth Lead.
Date
2026-10-05.
Status
nothing is live. No ad account exists yet. No product has been ordered. This document is the plan plus the build instructions for version one.

0.Read this first

The point of v1 is hands-on experience. We are going to hand this whole operation to AI agents later, and we will do a bad job of that if nobody on the team has personally built an ad, written an advertorial, shipped a sales page, taken a test order and watched the money land. So v1 is built by people, by hand, end to end, once.

Three things are non-negotiable:

  1. Nothing goes live and no money is spent without Ben's explicit approval. Not a campaign, not a budget increase, not a product order. Build it, show him, then launch.
  2. Every factual claim in an ad or on a page cites a source. The brand's own site, a real review, a published study, a supplier label. We do not invent ingredients, awards, numbers, locations or testimonials. Fabricating a testimonial is illegal in the US under the FTC Rule on Consumer Reviews and Testimonials, 16 CFR Part 465. That one is law, not a preference.
  3. Read section 1 before you touch anything. There is one step in the setup order that cannot be undone if you get it wrong, and it is step A1.

1.The business in one page

We sell physical supplements direct to consumer, on paid social, through single-product funnels. No catalogue, no browsing, no cart. One product, one story, one page, one checkout.

The economics we are testing: buy attention on Meta, send it to a long-form page that does the selling, convert at a cost per acquisition the product margin can carry, and make the real money on the second and third bottle (subscription or multi-bottle packs).

Two offers are on the table right now:

Offer Product Status
Menopause Supliful "Ashwagandha Plus" (JTP32APLU) — KSM-66 ashwagandha 600 mg at 5% withanolides, vegan capsule, every dose disclosed Product choice still open with Ben. See section 14.
Magnesium / sleep A magnesium glycinate or multi-form blend, supplier TBC Go

Why the menopause product looks good: the category leader, O Positiv MENO, sells at 41.99 USD on KSM-66 at 300 mg. This SKU carries 600 mg — twice the hero ingredient — in a vegetable capsule, at a wholesale cost of 4.75 to 10.25 USD per bottle with zero minimum order. KSM-66 is licensable royalty-free with no minimum volume, so the branded claim comes to us through the manufacturer. Panel verified from the label image, not from a vendor summary.

What we are not doing in v1: multiple brands, multiple countries, TikTok, inventory purchases, or a Shopify store.


2.Funnel anatomy

This is the whole thing. Everything in this document is one of these boxes.

  Meta ad  (image or video + primary text + headline)
     |
     |  click
     v
  Advertorial            OPTIONAL. An article, not a pitch. Earns the click
  brand.com/the-2am-...  and pre-sells the mechanism. Ends in a CTA to ->
     |
     v
  Sales page             The long one. 19-ish sections, ~1,900 words,
  brand.com/meno         ~17,000 px tall. This does the selling.
     |
     v
  Order form             Whop embedded checkout, rendered INSIDE our page.
  (same URL)             Customer never leaves the domain. Bumps + upsell here.
     |
     v
  Whop order webhook  ->  our Cloudflare Worker  ->  fulfilment + dashboard
     |
     v
  Supplier ships         White-label bottle with our branding, from the US.

Two routes are worth testing against each other: ad straight to sales page, and ad to advertorial to sales page. The advertorial costs more to produce and usually earns a cheaper click and a warmer visitor. Test both; do not assume.


3.The stack, and who owns what

Layer Tool Why
Meta ad account Whop Ads Whop provisions it at Platinum-tier agency status: prioritised bidding, higher spend limits, direct Meta support, no spend limit. No application, waitlist, setup fee, monthly fee or minimum spend.
Product, price, plan Whop products API Source of truth for money, tax and entitlement.
Checkout / order form Whop embedded checkout Merchant of record. Whop handles VAT, sales tax, fraud. 100-plus local payment methods, multi-currency. Embeds into our page so the customer never leaves the URL.
Attribution Whop pixel + Events API Whop builds attribution from payment data, not browser signals — which is the part that still works after iOS tracking loss. The Events API accepts conversions reported in from outside funnels, which is exactly our shape.
Advertorials and sales pages Our own repo, on Cloudflare Pages Deliberate carve-out. See below.
Fulfilment ShipOffers primary, Supliful for SKUs ShipOffers lacks On demand, no minimum order quantity, no inventory outlay, white labelled with our branding, shipped from Denver / Nashville / EU six days a week.

Why pages are not in Whop. Whop's API has no landing page, advertorial or funnel endpoint — page building is not a thing it does, so this costs us nothing from the one-API upside. And a page in a visual builder cannot be A/B tested one variable at a time or diffed in version control. Whop documents this split as a supported pattern: their Events API names "funnel builders" among the platforms expected to report conversions in from outside. We are using it as designed.

Known costs. Whop's fee stack is not one number. Domestic card 2.7% plus 30 cents; international adds 1.5%; FX adds 1%; ACH 1.5% capped at 5.00 USD; orchestration adds 0.8%; billing automation adds 0.5%; tax collection and remittance adds 2% when enabled and tax is actually collected. Everything on is roughly 6% plus 30 cents. Payouts: next-day ACH 2.50 USD, instant RTP 4% plus 1.00 USD, wire 23.00 USD. Disputes 15.00 USD. Model this per SKU before anyone commits to a price point — on a physical product with COGS and shipping it is a real line item, not a rounding error.

One ad account per Whop business. Multiple brands means multiple Whop businesses. Plan the brand before you create the business.


4.Part A — accounts and plumbing, in this exact order

A1.Create the Meta pixel yourself. FIRST. Before you touch Whop.

This is the irreversible step. Read it twice.

A Meta dataset (pixel) is owned by exactly one Business Portfolio, and ownership cannot be transferred between portfolios — only access can be shared. That is Meta's asset model, not a Whop policy, so nobody can waive it for us later.

Whop automatically provisions a pixel for your business, seeded with existing Whop sales data. If that pixel is created inside Whop's Business Portfolio, it can never be moved into ours. Every conversion event we ever record against it would live permanently on Whop's side of the line. If we leave Whop, we leave the learning behind.

Do this:

  1. Create a Meta Business Portfolio in Ben's name, owned by us.
  2. Create the dataset / pixel inside that portfolio.
  3. Only then connect Whop, and connect our existing pixel rather than accepting the auto-provisioned one. Whop's Meta launch release says businesses "can connect their existing social accounts and pixels", so this path exists.
  4. Share the pixel into Whop's ad account. Access shared, ownership kept.

Done in that order it costs nothing. Done in the wrong order it is structurally unrecoverable. This is the single cheapest risk mitigation in the entire plan and it expires the moment someone clicks "set up ads".

A2.Whop business and ad account

Create the Whop business. Open the Ads tab. Whop provisions the Meta ad account and Whop owns it, not us — that is the trade for Platinum-tier access, and it is a trade worth making, but know that it is a trade.

Fund it. There is no processing fee on funding.

A3.Facebook Page and Instagram

Whop's setup documentation says: connect your Facebook Page and Instagram via OAuth, and optionally import custom audiences. Whop's marketing copy says you can "create social pages and ad accounts in under a minute". Those two do not reconcile from public sources and we have not resolved it.

Ask Whop support two questions and write the answers into this doc:

  1. Can Whop create the Facebook Page, or must we connect an existing one?
  2. If Whop creates it, whose Business Portfolio owns it — ours or Whop's?

Question 2 is the same structural question as the pixel, and it probably has the same answer. If in doubt: create the Page ourselves, in our own portfolio, and connect it. Same logic as A1.

A4.Domain and wallet verification

Use one domain, with advertorials as paths. Like this:

brand.com/the-2am-problem              advertorial
brand.com/why-i-stopped-melatonin      advertorial
brand.com/magnesium                    sales page + embedded checkout

Why: the domain that needs wallet verification is the one the checkout renders on. One domain means one verification covers every advertorial we ever write. A new angle costs a path, not a domain plus a DNS record plus a verification.

Do not split advertorials across separate domains "to be safe". A brand-new domain with no history attracts more scrutiny from ad review and fraud scoring, not less. Domain age and reputation are inputs. Spreading across many young domains raises average suspicion.

A5.Product and checkout in Whop

Create the product and the pricing options in Whop. Physical goods are supported through merchant-of-record plus custom fields on the pricing option to collect the shipping address — Whop has no inventory model, no stock per variant and no shipping rates by weight or zone. We do the shipping logic; Whop does the money.

Then embed the checkout into our sales page. The customer stays on our URL.

Build the offer ladder in the checkout:

A6.Fulfilment

ShipOffers is the primary route: pay on demand, no minimum order quantity, no inventory outlay, 50-plus on-demand health and beauty products white-labelled with our branding, shipped from Denver, Nashville and the EU six days a week. US domestic shipping speed means subscription is viable from day one.

The trade is margin — on-demand per-unit pricing runs higher than a bulk private label run. Expect gross margin nearer 65 to 80% than 85-plus. We need their actual price list before any offer arithmetic means anything.

Supliful is a product source, not an integration — use it for SKUs ShipOffers does not carry (the KSM-66 Ashwagandha Plus is a Supliful SKU). Zero MOQ.

Known limitation, do not design around a guess: ShipOffers advertises "API integrations for streamlined order syncing" but publishes no API documentation, developer portal or webhook spec anywhere. It reads as a talk-to-your-rep API. Ben is already a ShipOffers customer — one email to his account manager asking for API docs and sandbox credentials beats another week of searching. If there is no real API, direct-response fulfilment houses almost always accept a scheduled CSV or SFTP order drop, which is perfectly serviceable at test volume.

For v1, orders can be placed by hand. The automation requirement bites at scale, not during a test. Do not build an integration before an offer has proven out.


5.Part B — buyer research comes first. This is a gate, not a phase.

No hook, headline, ad concept or page section gets written for an offer until that offer has a Buyer Brain.

A Buyer Brain is a corpus of real customer sentences, with sources, built from the customer side — reviews, forums, Reddit, YouTube comments, Amazon one-star reviews, Facebook group posts. Competitor ads and clinical evidence do not substitute for it. Competitor ads tell you what another marketer guessed. Reviews tell you what the buyer actually said.

It must contain:

Rules: every line is a real sentence from a real source with a link. No composites. No "a customer might say". If you cannot cite it, it does not go in.

Then every hook and every page section names the Buyer Brain line it answers. If a section cannot name one, it is decoration and it comes out.

Full method: docs/buyer-research-playbook.md. Output goes to clients/<slug>/buyer-brain.md.


6.Part C — competitor teardown: how we decide what the page looks like

We do not design sales pages from taste. We measure pages that are already selling and build to those numbers.

There is a corpus already built: 20 competitor pages torn down, chosen because they have been running paid traffic for 400 to 900 days. A page that has been buying traffic for two years is a page that converts; nobody funds a loser that long. Targets live in repos/ad-growth-pages/teardown/targets.json.

What the teardown produced, and what it means in practice:

Measured target (menopause corpus) Value Why it is that
Page height ~17,300 px Median. Short pages are the single biggest tell of a page nobody optimised.
Words ~1,900 Same.
Content width 1,180 px Mode — they cluster hard.
Body type 18 px / 29 px line-height Larger than a web app. These are read, not scanned.
Display-to-body ratio 2.78 Big headlines carry these pages.
CTA 30 px radius, 46 px tall, 17 px type A pill, not a rectangle.
CTA count 8 Buy-shaped verbs throughout, not one button at the bottom.
First CTA depth 6.3% down the page Above the fold, always.
Sections 19 The number people miss by the widest margin.

Also built: 281 section screenshots cut out of 15 competitor pages, sorted into 13 kinds (body 95, reviews 29, evidence 29, offer 25, footer 24, results 18, hero 17, guarantee 15, nav 11, faq 6, logistics 5, mechanism 4, trust 3), with an index at repos/ad-growth-pages/kit/library/index.json.

This is what "model it on the best" means in practice: open the real thing and look at it. Before you build a hero, open kit/library/hero/ and look at 17 of them from pages that have been selling for two years.


7.Part D — building the pages in Claude Code

The repo

repos/ad-growth-pages/
  src/            the pages themselves. Plain HTML + CSS, one file per page.
  kit/
    kit.css       257 lines. Tokens + 17 blocks. Every token carries a comment
                  naming the competitor measurement it came from.
    blocks.html   specimen sheet — all 17 blocks with purpose, source page, days
                  live, link to the reference crop. OPEN THIS FIRST.
    library/      the 281 reference section screenshots, sorted by kind.
  bin/            the measurement and scoring tools (below).
  teardown/       competitor measurements, the derived spec, and audit output.

Plain HTML and CSS. No framework, no build step for the pages themselves. That is deliberate: a page is a file you can read, diff and copy.

The loop

The novel part is not the CSS. It is that the same probe measures a competitor's page and one of ours, so the gap between them is a number instead of an opinion.

node bin/teardown.mjs      capture competitor pages, run the probe inside them
    bin/probe.mjs          the probe itself — one definition, used on both sides
node bin/spec.mjs          derive medians -> teardown/design-spec.json
node bin/crop-sections.mjs cut the captures into kit/library/
node bin/audit.mjs         run the same probe on src/*.html, score vs the spec

Day to day you only need three commands:

cd repos/ad-growth-pages

# 1. preview locally while you build
cd src && python3 -m http.server 8811     # then open http://localhost:8811/your-page.html
                                          # kill it with: lsof -ti:8811 | xargs kill -9

# 2. screenshot it and look at it, at desktop and phone width
node bin/snap.mjs http://localhost:8811/your-page.html shots/your-page.png
node bin/snap.mjs http://localhost:8811/your-page.html shots/your-page-m.png 390

# 3. score it against the measured competitor spec
node bin/audit.mjs your-page.html

audit.mjs writes teardown/audit.json and a readable teardown/audit.md. Read the markdown, not the JSON — the JSON does not store the per-check target and actual values, the markdown tables do.

snap.mjs writes a full-page shot plus 1400 px tiles at <out>-t<N>.png, so you can actually critique a 17,000 px page instead of squinting at a thumbnail. Note: fixed and sticky elements land mid-page in a full-page capture. That is a capture artefact, not a page bug.

Requires Node 22 (v22.23.1 on the mini) and playwright-core's Chromium, already installed.

How to actually work with Claude Code on a page

  1. Give it the buyer brain and the reference, not adjectives. "Make it premium" produces generic output. "Build section 4 answering this Buyer Brain line, modelled on kit/library/mechanism/mag-bioptimizers-07.png, using the measured tokens in kit.css" produces something usable.
  2. Work section by section, not whole-page. A 19-section page written in one shot is 19 mediocre sections.
  3. Screenshot and critique every pass. Minimum twice. A picture is worth a thousand tokens, and Claude is much better at fixing a page it can see than one it only wrote.
  4. Run the audit before you show anyone. If it scores badly, the argument is with the measurement and the measurement is reproducible.
  5. Check the CSS specificity. This is the single most common breakage: .nav a has higher specificity than .btn-navy, so your button styling silently loses. Generated CSS cancels itself out constantly, especially on section padding and margins.

House rules so the pages do not look AI-made

Ben's repeated and correct criticism of early attempts was that they "all look so Claudey". These are the specific tells. Avoid all of them unless the competitor page we are modelling genuinely does it.

Palette and layout tells:

Typography tells:

Motion tells:

One orchestrated moment beats scattered effects. Spend your boldness in one place and keep everything around it quiet.

The real fix for all of this is not a checklist, it is the corpus. Open the reference crop. Copy the measured value. The competitor page is the brief.

The close-rip method — the thing we proved works

We tested whether we could build a page as good as a competitor's by rebuilding it closely. Result: yes.

The method: node bin/rip.mjs <id> <url> captures the competitor page as 1400 px tiles plus dom.json — an outline of every visible block with its computed styles. So the rebuild copies measured values instead of guessing from a screenshot. Then rewrite the copy for our product against our Buyer Brain, keeping the structure and the design.

Where the line is. Copy structure, layout, section order, rhythm, type scale, CTA treatment. Do not copy their words, their images, their brand name, their class names, or their testimonials. Rebuilding the shape of a page is normal competitive practice. Lifting the text is a copyright problem and lifting the testimonials is the FTC problem from section 0.

A reasonable gate: no shared run of 8-plus words with the reference, no reference images, no reference brand name or domain anywhere in our file.


8.Part E — the order form

Mockups exist at src/order-form.html and src/order-form-mag.html, built to match what a Whop embedded checkout will look like in place. Use them to design the surrounding page; replace with the real Whop embed when A5 is done.

What the order form has to do:

Two things to confirm with Whop before building the real one — both one support ticket, not research:

  1. Exact behaviour of custom fields on a physical pricing option.
  2. Whether the post-purchase upsell can be a different physical SKU.

9.Part F — the ads

What to produce per offer

Drafts and the ad CSS live in repos/ad-growth-pages/src/ads/.

Image and video generation

We use kie.ai. repos/ad-growth-tools/scripts/kie-gen.mjs <jobs.json> <outdir>. Best photoreal model is gpt-image-2-5-flare-text-to-image at 10 credits for 2K — it beat the more expensive options in a head-to-head, so do not assume spending more buys better. Use nano-banana-pro when the image needs legible type. aspect_ratio accepts 16:9, 3:4 and 1:1 and rejects 4:5.

Current blocker: the Kie account is out of credit — API returns 812 Insufficient corporate funds. Video ads are blocked on this. Needs topping up before creative production starts.

The one-variable rule

Every test changes one thing. One hook, or one image, or one headline — never two. If you change two things and the ad wins, you have learned nothing and you cannot carry the lesson to the next product.

This is also why pages live in a git repo: a page variant has to be expressible as a diff. If you cannot say in one line what differs between variant A and variant B, it is not a test.

Angle, not aesthetic

The ad's job is the click, and the click comes from the angle. Draw the angle out of the Buyer Brain:

Campaign build

Whop's Ads API covers campaigns, ad groups, ads and audiences, with creative upload, pause and resume, lead forms, and reporting on impressions, clicks, spend, CTR, ROAS and conversion events. It is published under a /beta/ path.

One line in their API reference is now our approval rule:

Any campaign status other than draft launches the campaign, which requires an ads payment method on the account.

So: build the whole campaign in draft. A complete, reviewable, fully specified campaign that is structurally incapable of launching itself. Then Ben reviews it and flips it. The approval rule stops depending on anybody remembering it.


10.Part G — publishing to Cloudflare Pages

Pages deploy through the dashboard repo's build, which copies ad-growth-pages/src/ into dist/p/:

cd repos/ad-growth-dashboard
./bin/rebuild.sh

That script sources ../ad-growth-tools/.env for CLOUDFLARE_API_TOKEN, runs node build.mjs, then:

npx wrangler@4 pages deploy dist --project-name ad-growth --branch main --commit-dirty=true

Published pages land at https://ad-growth.pages.dev/p/<file>.html. The two rip pages are live there now.

Three things to know:

  1. build.mjs validates before it deploys and will refuse. Every page listed in data/builds.jsonl must exist on disk and must carry modelled_on and copy_does fields. Every build needs pricing rows and a testimonial policy. Every non-note issue needs options attached. This is intentional — it stops a half-described page reaching the dashboard.
  2. Everything is behind Cloudflare Access, scoped to ben@clicktrix.com only. Unauthenticated requests get a 302 to the login. The team will need their emails added to the Access policy before they can open anything. Do that first or you will spend a morning debugging a working deployment.
  3. Never publish research publicly. Competitor teardowns, buyer research, supplier pricing — all of it stays behind Access.

Secrets live in repos/ad-growth-tools/.env and never go into docs/, data/, work/, a page, a screenshot or a commit.


11.Part H — tracking, and what we actually measure

Set this up before launch, not after. A funnel you cannot read is a funnel you cannot improve.

The numbers that decide whether v1 worked:

Metric What it tells you
CPM, CTR, CPC Is the creative earning attention
Advertorial to sales-page click rate Is the advertorial earning the handoff
Sales page conversion rate Is the page selling
Average order value Is the pack ladder and bump working
CPA against product margin Whether any of it is a business
30-day repeat / subscription rate Whether it is a good business

12.Compliance — the short, hard list

Not optional, and not a matter of taste.

If you find yourself writing something that needs a caveat to be defensible, the problem is usually the claim, not the caveat.


13.v1 definition of done

Work top to bottom. Nothing below the line starts before everything above it is checked.

Plumbing

Research

Build

Launch


14.Open questions, and who answers them

Nobody should be researching these. Each is one message to one person.

Question Ask Why it matters
Can Whop create the Facebook Page, and whose portfolio owns it? Whop support Same structural trap as the pixel
Exact behaviour of custom fields on a physical pricing option Whop support Blocks the real order form
Can the post-purchase upsell be a different physical SKU? Whop support Decides the offer ladder
ShipOffers API docs and sandbox credentials brennen@shipoffers.com — Ben is already a customer Decides whether fulfilment can ever be automated
Can ShipOffers stock or source a menopause SKU? Same email Would consolidate fulfilment to one vendor
Actual ShipOffers price list Same email No offer arithmetic is real without it

And one decision only Ben can make — the menopause product. Three options:

  1. Park menopause, run magnesium only for v1.
  2. Switch to the KSM-66 angle — Supliful Ashwagandha Plus, 600 mg, vegan, every dose disclosed, branded claim available. Keep the menopause demand thesis, change the product.
  3. Run the ODF / Vox "Menopause Support" formula as written — vegan capsule, no soy, but everything is a proprietary blend so we can make no individual ingredient claim; it contains DHEA (Meta risk, no international targeting); and the panel names a 40 Billion probiotic blend then declares 8 Billion CFU.

Growth Lead's recommendation: option 2. Switch the product, keep the thesis.

Note on option 3: my reluctance to put our brand on a label that cannot add up its own probiotic count is a taste judgement, not a standard — it is recorded as flag F14 in docs/flags-and-considerations.md. It cost ODF the top ranking in my write-up. Plenty of durable competitors sell proprietary blends and do fine. If the demand and the margin are there, that call is Ben's, not mine.


15.Two blockers for handing this to people

Found while writing this, both real:

  1. The repos have no git remote. ad-growth-pages, ad-growth-dashboard and ad-growth-tools exist only on the mac mini. Nobody can clone them. Push them to a private GitHub org before onboarding anyone, or the team is working over screen-share on one machine.
  2. Every Meta credential in .env is an empty placeholder. META_SYSTEM_USER_TOKEN, META_APP_ID, META_APP_SECRET, META_BUSINESS_ID, META_AD_ACCOUNT_ID, META_PAGE_ID, META_INSTAGRAM_ACTOR_ID, META_PIXEL_ID — all blank. Nothing Meta-side exists yet. Section A1 really is starting from zero, which is good news: there is no wrongly-owned pixel to unwind.

16.Where everything lives

~/OpenMausBot/Businesses/ad-growth/
  CLAUDE.md                       how this business works; read it
  clients/<slug>/
    brand-brain.md                brand, voice, audience, offers, compliance rules,
                                  winning hooks, failed angles. Single source of truth.
    buyer-brain.md                the sourced customer corpus. Section 5.
    research/  creative/  tracking/  reports/
  docs/
    buyer-research-playbook.md    the method for section 5
    flags-and-considerations.md   every derived constraint, its evidence, and what
                                  would override it
    2026-09-29-whop-assessment.md the full Whop analysis this doc summarises
    2026-09-29-fulfilment-options.md
    2026-09-29-menopause-sourcing.md
    2026-09-29-vendor-recheck.md  one base catalogue, five storefronts
    access-and-credentials.md     what needs which credential
  repos/
    ad-growth-pages/              the pages, the kit, the measurement tools
    ad-growth-dashboard/          the dashboard and the deploy
    ad-growth-tools/              scripts and .env
  work/                           dated working output

Two conventions, because they save arguments later: files and folders are lowercase-with-hyphens, and a date goes first when order matters (2026-10-05-lead-list.csv).


17.One rule worth repeating

Only Ben's decisions and the law restrict what we can propose here. Nobody invents a rule. If your work produces a constraint — a creative rule, a testing threshold, a "never do X" — it is a flag, not a rule, and it goes in docs/flags-and-considerations.md with three things written down: what it says, what evidence it rests on, and what would override it. If you cannot state what would override it, it is not a flag and it does not get written.

Every flag carries this clause: if doing the thing anyway could raise conversion rate or profit, consider it and bring it to Ben to decide. A flag is never a reason to silently drop an option.

And when a flag costs us something — you dropped, downranked or reshaped an option because of one — say so, naming the flag and what it cost. A flag nobody sees working has quietly become a rule again, which is the exact failure this replaces.