Blueberry Creative Templates Overview

The full creative template catalog — motion-native video chassis (rendered via HeyGen HyperFrames) and static image templates (rendered via puppeteer-asset-render). Stakeholder reference + brief-author cookbook in one page.

8main video chassis 3scene variants 32image templates 97image layouts 298example renders

Generated 2026-05-12 · agent: Ember · source: /workspace/.claude/skills/{meta-ad-video, puppeteer-asset-render}

Video chassis

Motion-native ad chassis at 9:16, 1:1, and 4:5. Each chassis ships HTML + GSAP compositions with parameter slots for copy and brand assets. Renders below auto-play muted; click an aspect link to open the full-resolution MP4.

Quick jump · 11 chassis
Before / After ScenarioBefore / After — Scene VariantCold OpenIf / Then RulesiMessage Thread RevealLetter TreatmentLetter Treatment — Scene VariantQuote StaggerStat CounterUs vs ThemUs vs Them — Scene Variant

Before / After Scenario

main chassis

Use when: Life-context contrast — show the parent's situation before Blueberry and after. NEVER body-state (no sick→healthy child shots).

Structure: life-context wipe (kitchen / car / bedroom scene change)

Other aspects: 4x5 · 9x16

Slug: before-after-scenario

Before / After — Scene Variant

scene variant

Use when: Scene variant with photographic life-context shots rather than illustrated environments.

Structure: photo life-context wipe

Other aspects: 4x5 · 9x16

Slug: before-after-scenario-scene

Cold Open

main chassis

Use when: Hook + evidence-stagger + end-card. Best for shock-claim ads where the first second has to stop the scroll.

Structure: shock-claim → evidence stagger → end-card

Other aspects: 4x5 · 9x16

Slug: cold-open

If / Then Rules

main chassis

Use when: Parent-voice listicle. Rules of thumb formatted as if-then statements (eyebrow + 4 rules cascade).

Structure: eyebrow + 4 rules slide-in cascade

Other aspects: 4x5 · 9x16

Slug: if-then-rules

iMessage Thread Reveal

main chassis

Use when: Overheard parent-friend dialogue. Worry → reassurance peer-to-peer recommendation framed as an iMessage thread; pure-iOS chrome with configurable per-bubble tapback reactions.

Structure: gray Q-bubble + exclamation tapback → blue A-bubble + heart tapback → brand end-card

Other aspects: 4x5 · 9x16

Slug: imessage-thread-reveal

Letter Treatment

main chassis

Use when: Intimate clinician or founder letter. High-trust register; pairs with named real-person sign-off (e.g. Dr. Garbi).

Structure: typed salutation + 5-line body fade-up + key-sentence scale-up + named sign-off

Other aspects: 4x5 · 9x16

Slug: letter-treatment

Letter Treatment — Scene Variant

scene variant

Use when: Visual sibling of letter-treatment: paper-on-brand-color or handwriting-on-photo treatment.

Structure: letter on photographic background or paper texture

Other aspects: 4x5 · 9x16

Slug: letter-treatment-scene

Quote Stagger

main chassis

Use when: Parent-voice testimonial. Letter-by-letter stagger reveals the quote at a readable cadence.

Structure: parent-quote letter-stagger reveal at 14 CPS

Other aspects: 4x5 · 9x16

Slug: quote-stagger

Stat Counter

main chassis

Use when: Single hero stat carries the whole ad. Numeric punch (cost, time, percentage) is the message.

Structure: single hero stat with overshoot-punch animation

Other aspects: 4x5 · 9x16

Slug: stat-counter

Us vs Them

main chassis

Use when: Side-by-side contrast against a competitor or alternative (urgent care, ER, generic telehealth).

Structure: split-screen contrast — color variant or photo variant

Other aspects: 4x5 · 9x16

Slug: us-vs-them

Us vs Them — Scene Variant

scene variant

Use when: Photo / scene variant of us-vs-them with real-world imagery instead of color blocks.

Structure: photo split-screen contrast

Other aspects: 4x5 · 9x16

Slug: us-vs-them-scene

Image templates

Static creative templates rendered via headless Chromium. Each template has 1+ layouts × 3 aspect ratios (1:1, 4:5, 9:16). The thumbnail shows the canonical default layout at 1:1 — expand "Show all renders" for the full layout × aspect grid. The matcher in email-screenshot-to-template uses these renders for competitor-ad triage.

Quick jump · 32 templates
ad-creativebehind-the-scenebillboardboundary-blockscase-studychartcomparison-vsdecision-stackfeature-benefitfounderimessage-thread-cardinfographicletterlisticlenotes-screenshotoffer-first-bannerparent-forum-threadparent-reddit-threadparent-testimonial-cardpediatrician-expertplatform-mockuppost-itproblem-agitationquote-cardreview-quotesocial-post-mockupsplit-screenstat-cardstat-comparisontransformationugc-overlayx-tweet-screenshot
ad-creative canonical render

ad-creative

1 layout

Meta-ready ad creative with headline, subhead, and CTA over a branded gradient.

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Meta-ready ad creative with headline, subhead, and CTA over a branded gradient. Supports 1:1, 4:5, and 9:16.

behind-the-scene canonical render

behind-the-scene

5 layouts

Behind-the-scene — operator/workplace/process glimpse.

Layouts: caption-cardprocess-striptag-calloutagenda-overlaycontact-sheet

Default variant: square_1_1 · 15 renders

Show all 15 renders
agenda-overlay · portrait_4_5
agenda-overlay · square_1_1
agenda-overlay · story_9_16
caption-card · portrait_4_5
caption-card · square_1_1
caption-card · story_9_16
contact-sheet · portrait_4_5
contact-sheet · square_1_1
contact-sheet · story_9_16
process-strip · portrait_4_5
process-strip · square_1_1
process-strip · story_9_16
tag-callout · portrait_4_5
tag-callout · square_1_1
tag-callout · story_9_16
Full description

Behind-the-scene — operator/workplace/process glimpse. Motion H&W #6 spend-use scale format. Single template with 5 layouts (caption-card, process-strip, tag-callout, agenda-overlay, contact-sheet) × 3 aspect ratios. Differentiation guardrails: operator/workplace photo (NOT customer/peer photo — use `ugc-overlay`); unnamed process visibility (NOT named-customer outcome — use `case-study`); the operation, often anonymous (NOT a named individual — use `founder`); photographic, not diagrammatic (NOT data-density — use `infographic`); editorial caption chrome, not platform UI (NOT post-inside-platform — use `social-post-mockup`); never foreground 'Dr.' badges or medical-authority framing — that routes to `pediatrician-expert`. Compliance: no PHI in frame; staff identifiability requires release; describe the process, never claim a clinical outcome. Multi-photo layouts (process-strip, contact-sheet) iterate ctx.photos[]; single-photo layouts read ctx.photo. Gate F (Naive-Scroller Read) on chassis defaults — the workplace chassis is process-visibility, not price-claim, so F1 (price anchor) typically does not apply. F2 (capability anchor) IS load-bearing: when the caption or agenda names a care capability (fever-handling, ear pain, weekend availability), the same screen must carry a mechanism anchor (home-kit reads, Smart Earscope, pulse-ox, texts-and-calls channel). Chassis defaults thread the mechanism into the caption + agendaItems + photos[] step descs so every layout renders anchored. Default copy is Pass-A-thru-F clean: no video / video-call language (Gate A — pediatric care is text/call only), no MCO/employer-benefit framing (Gate B — DTC consumer ask, CTA is 'See how it works' not 'Check my benefit'), no trial language (Gate C), no specific diagnoses or outcomes in agenda labels (Gate D — symptoms only, never diagnoses), no FB-flagging language and no in-creative 'Sponsored' label (Gate E — platforms auto-render that), and mechanism anchors present on every screen (Gate F).

billboard canonical render

billboard

5 layouts

Billboard — Motion H&W spend-use scale format (#10 in H&W, #3 in Fashion & Apparel).

Layouts: giant-headlineword-stacksingle-word-emphasistwo-line-contrastheadline-with-inset

Default variant: square_1_1 · 15 renders

Show all 15 renders
giant-headline · portrait_4_5
giant-headline · square_1_1
giant-headline · story_9_16
headline-with-inset · portrait_4_5
headline-with-inset · square_1_1
headline-with-inset · story_9_16
single-word-emphasis · portrait_4_5
single-word-emphasis · square_1_1
single-word-emphasis · story_9_16
two-line-contrast · portrait_4_5
two-line-contrast · square_1_1
two-line-contrast · story_9_16
word-stack · portrait_4_5
word-stack · square_1_1
word-stack · story_9_16
Full description

Billboard — Motion H&W spend-use scale format (#10 in H&W, #3 in Fashion & Apparel). One bold claim dominates the frame; OOH billboard rhetoric translated to paid-social statics. Single template with 5 layouts (giant-headline, word-stack, single-word-emphasis, two-line-contrast, headline-with-inset) x 3 aspect ratios (1:1, 4:5, 9:16). Pick the composition with the `layout` prop. Differentiation guardrails: makes a bold CLAIM (not a bold number like offer-first-banner); declarative/public voice (not intimate/first-person like letter); no simulated platform chrome (vs social-post-mockup); no narrative arc (vs case-study). All five layouts share one prop schema so meta-ad-creative can bulk-fill across layouts without branching.

boundary-blocks canonical render

boundary-blocks

2 layouts

Boundary-blocks — defines the brand by what it ISN'T paired with what it IS.

Layouts: not-is-pairsx-vs-check-list

Default variant: square_1_1 · 6 renders

Show all 6 renders
not-is-pairs · portrait_4_5
not-is-pairs · square_1_1
not-is-pairs · story_9_16
x-vs-check-list · portrait_4_5
x-vs-check-list · square_1_1
x-vs-check-list · story_9_16
Full description

Boundary-blocks — defines the brand by what it ISN'T paired with what it IS. Single-entity scope (NOT cross-entity contrast — use `comparison-vs` for that). One template with 2 layouts (not-is-pairs, x-vs-check-list) × 3 aspect ratios. Differentiation guardrails: defines a SINGLE entity (the brand) by its boundaries; NO ranking among options (use `decision-stack`); NOT a pain-amplification ad (use `problem-agitation`); educational, teaching the audience what category fit looks like. Source: extracted from TR-PR-03 (boundary statement) — peace-of-mind-ads-v3 TRIAGE renders.

case-study canonical render

case-study

5 layouts

Case study (Motion H&W #4 spend-use) — named-protagonist proof ads.

Layouts: pull-quotemetric-ledbefore-aftertimeline-stripdata-card

Default variant: square_1_1 · 15 renders

Show all 15 renders
before-after · portrait_4_5
before-after · square_1_1
before-after · story_9_16
data-card · portrait_4_5
data-card · square_1_1
data-card · story_9_16
metric-led · portrait_4_5
metric-led · square_1_1
metric-led · story_9_16
pull-quote · portrait_4_5
pull-quote · square_1_1
pull-quote · story_9_16
timeline-strip · portrait_4_5
timeline-strip · square_1_1
timeline-strip · story_9_16
Full description

Case study (Motion H&W #4 spend-use) — named-protagonist proof ads. Single template with 5 layouts (pull-quote, metric-led, before-after, timeline-strip, data-card) × 3 aspect ratios (1:1, 4:5, 9:16). Layouts differ on structural dimension — use `layout` prop to select. Differentiation guardrails (see template.html header comment): no platform chrome (vs Social post mockup), third-person narrative only (vs Letter), requires protagonistName for before-after (vs Transformation), outcome-not-offer for metric-led (vs Offer-first banner). Ad-copy compliance contract — Gates A–F walked on every default copy string: Gate A (business model): text/call only — NEVER 'video'. The chassis describes 'texted a Blueberry pediatrician' and 'Smart Earscope photo' as the mechanism. Earlier defaults said 'Video'd with Dr. Chen' and 'On video with Dr. Chen' — REMOVED. Gate B (DTC, not MCO/payer): the only price line is '$18/mo on annual' (DTC consumer price). No 'covered by your plan' framing. Gate C (no trial language): clean — the ask is membership. Gate D (specific claims): diagnosis language ('ear infection diagnosed') REMOVED per imessage-thread-card precedent (would otherwise need Sage sign-off). Retained: '$1,200 ER visit avoided' as a retrospective outcome (defensible — pediatric ER averages $1,389 per AHRQ 2017) paired with finePrint 'Individual results vary.' Specific times ('14 minutes', '11:08pm → 11:22pm') are protagonist-specific case detail, not category claims. Gate E (FB policy / no Sponsored language): clean. Gate F (Naive-Scroller Read — composition-level anchors): every layout carries both load-bearing anchors on the same screen: - F1 price anchor: metric-led uses `metricLabel` 'Unlimited Blueberry care · This family saved' as the eyebrow right above the $1,200 price — subscription-scope anchor sits visually adjacent. data-card uses the Membership row '$18/mo on annual — unlimited, kit included' for both F1 (price) and its subscription-scope anchor. Other layouts (pull-quote, before-after, timeline-strip) carry no explicit price line, so F1 does not trigger. - F2 mechanism anchor: every layout names 'Smart Earscope' so the capability claim is grounded — metric-led narrative ('Smart Earscope photo answered it'), before-after narrative-band + after-panel-body, timeline-strip step 2 ('Smart Earscope photo + Blueberry call'), data-card 'From home' row. pull-quote relies on the 'call' modality reference in the quote + brand mark. `metricLabel` is an optional override on the metric-led layout — defaults to 'This family saved' but ships customized as 'Unlimited Blueberry care · This family saved' so the F1 subscription anchor lives in the most-visible slot. Briefs can override per-render. Default imagery (Pass 4): the chassis has a `protagonistPhoto` slot but ships with `null` so the gradient + initials fallback renders. AI-generating a default face for a named protagonist ('Maya G.') would imply a specific real person — chassis defaults intentionally use the initials fallback so briefs that have a real parent photo override `protagonistPhoto` explicitly. Briefs without a real photo render with the initials gradient, which reads as 'this represents a real parent' rather than as a fabricated identity.

chart canonical render

chart

1 layout

Server-side Chart.js chart exported as PNG.

Layouts: default

Default variant: landscape_16_9 · 4 renders

Show all 4 renders
default · landscape_16_9
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Server-side Chart.js chart exported as PNG. Pass a standard Chart.js config under `chartConfig`. Brand-default Chart.js typography + axis grids are injected at render time so callers don't need to restyle every chart. The defaults below render an obviously-illustrative sample chart — they are NOT a Blueberry outcome claim. Callers must pass a substantiated `chartConfig` (with source-line citation in the footnote slot) before rendering as a deliverable ad.

comparison-vs canonical render

comparison-vs

4 layouts

Comparison-vs — TWO OR MORE NAMED ENTITIES placed adjacent for direct contrast (Blueberry vs urgent care, vs nurse line, vs generic telehealth).

Layouts: two-column-vsn-by-n-gridhero-product-vscheckmark-x-table

Default variant: square_1_1 · 12 renders

Show all 12 renders
checkmark-x-table · portrait_4_5
checkmark-x-table · square_1_1
checkmark-x-table · story_9_16
hero-product-vs · portrait_4_5
hero-product-vs · square_1_1
hero-product-vs · story_9_16
n-by-n-grid · portrait_4_5
n-by-n-grid · square_1_1
n-by-n-grid · story_9_16
two-column-vs · portrait_4_5
two-column-vs · square_1_1
two-column-vs · story_9_16
Full description

Comparison-vs — TWO OR MORE NAMED ENTITIES placed adjacent for direct contrast (Blueberry vs urgent care, vs nurse line, vs generic telehealth). One template with 4 layouts (two-column-vs, n-by-n-grid, hero-product-vs, checkmark-x-table) × 3 aspect ratios (1:1, 4:5, 9:16). Pick layout with the `layout` prop. Differentiation guardrails: cross-entity contrast (NOT one entity in two states — use `transformation` for that); NOT chaos vs calm on the same device (use `split-screen`); NOT a single hero claim (use `billboard`); NOT narrative proof (use `case-study`). All four layouts share a single prop schema so meta-ad-creative can bulk-fill across layouts without branching. Source: extracted from TR-SA-01 (waiting-room math), TR-SA-02 (nurse-line gap), TR-SA-03 (telehealth-without-otoscope) — peace-of-mind-ads-v3 TRIAGE renders.

decision-stack canonical render

decision-stack

3 layouts

Decision-stack — 2-4 options where ONE is highlighted as the right answer.

Layouts: 3-bar-vertical3-card-horizontalranked-list

Default variant: square_1_1 · 9 renders

Show all 9 renders
3-bar-vertical · portrait_4_5
3-bar-vertical · square_1_1
3-bar-vertical · story_9_16
3-card-horizontal · portrait_4_5
3-card-horizontal · square_1_1
3-card-horizontal · story_9_16
ranked-list · portrait_4_5
ranked-list · square_1_1
ranked-list · story_9_16
Full description

Decision-stack — 2-4 options where ONE is highlighted as the right answer. Reduces a fork-in-the-road to a tier list with the brand visually elevated. One template with 3 layouts (3-bar-vertical, 3-card-horizontal, ranked-list) × 3 aspect ratios. Differentiation guardrails: IMPLIED ranking with one winner (NOT cross-entity contrast — use `comparison-vs`); 2-4 items only (NOT 5+ unranked items — use `listicle`); decision-fatigue framing where the user is choosing between paths, NOT defining what something IS or ISN'T (use `boundary-blocks` for that). Source: extracted from TR-PA-03 (2am ER debate) — peace-of-mind-ads-v3 TRIAGE renders.

feature-benefit canonical render

feature-benefit

4 layouts

Feature-benefit — N feature × benefit pairs.

Layouts: 3-feature4-featureicon-gridpaired-feature

Default variant: square_1_1 · 12 renders

Show all 12 renders
3-feature · portrait_4_5
3-feature · square_1_1
3-feature · story_9_16
4-feature · portrait_4_5
4-feature · square_1_1
4-feature · story_9_16
icon-grid · portrait_4_5
icon-grid · square_1_1
icon-grid · story_9_16
paired-feature · portrait_4_5
paired-feature · square_1_1
paired-feature · story_9_16
Full description

Feature-benefit — N feature × benefit pairs. Cross-vertical 5-9% hit rate. Highest-density format for parameterized bulk-fill (audience × offer × benefit grid). One template with 4 layouts (3-feature, 4-feature, icon-grid, paired-feature) × 3 aspect ratios. Differentiation guardrails: each row pairs a FEATURE with its BENEFIT (NOT a single claim per row — use `listicle`; NOT ranked-with-winner — use `decision-stack`; NOT stat-driven — use `infographic`); features are capabilities, benefits are outcomes; supports bulk variant generation. Source: data/templates/batch2/feature-benefit-research.md.

founder canonical render

founder

5 layouts

Founder — photo-led static ad.

Layouts: portrait-leftfull-bleedpolaroidsignaturesplit-letter

Default variant: square_1_1 · 15 renders

Show all 15 renders
full-bleed · portrait_4_5
full-bleed · square_1_1
full-bleed · story_9_16
polaroid · portrait_4_5
polaroid · square_1_1
polaroid · story_9_16
portrait-left · portrait_4_5
portrait-left · square_1_1
portrait-left · story_9_16
signature · portrait_4_5
signature · square_1_1
signature · story_9_16
split-letter · portrait_4_5
split-letter · square_1_1
split-letter · story_9_16
Full description

Founder — photo-led static ad. Motion H&W hit-rate AND spend-use leaderboard format (CH-010). Named founder portrait + short first-person message or quote, framed to read as personally authored. Five layouts (portrait-left, full-bleed, polaroid, signature, split-letter) x three aspect ratios (1:1, 4:5, 9:16). Differentiation rules vs siblings: vs `letter` — photo-led not text-led; vs `case-study` — internal operator not customer; vs `quote-card` — requires photograph; vs `ugc-overlay` — editorial/portrait aesthetic not UGC-selfie; vs `review-quote` — no star rating; vs `feature-benefit` — one promise not feature list. Compliance: photo release assumed upstream (Blueberry-owned Drive assets); Sage / meta-ad-compliance must clear founder quote text before production; prefer parent-founder framing over physician-authority framing (physician-authority routes to pediatrician-expert template).

imessage-thread-card canonical render

imessage-thread-card

1 layout

iMessage-style private text thread between two parents, rendered as a pixel-faithful iOS Messages screenshot — full chrome (status bar, nav header with peer avatar + name + back chevron + FaceTime…

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

iMessage-style private text thread between two parents, rendered as a pixel-faithful iOS Messages screenshot — full chrome (status bar, nav header with peer avatar + name + back chevron + FaceTime icon, date-stamp divider, gray/blue bubbles with iOS bubble tail on last-of-stack, Open-Graph-style link-preview card on the sent side, Delivered/Read indicator, and the iMessage input bar with camera + iMessage pill + mic) — and a benefit-headline + subhead block on the white canvas beneath. Inspired by the Epidemic Sound iMessage ad — a peer-voice sales-letter chassis where the thread answers a skeptical question, the link card visually anchors the brand, and the headline-below carries the price/capability anchor (Gate F1). Visual chrome breaks brand conventions deliberately to match a real iOS Messages screenshot — system blue (#007AFF) for sent bubbles, iOS gray (#E5E5EA) for received, white chat background, system font stack (-apple-system / SF Pro / Inter fallback). The Blueberry brand colors return in the link-card header and the headline band below — that's the bridge from 'authentic peer convo' to 'this is an ad for Blueberry Pediatrics'. Per Harrison 2026-05-08 (msg 19e0ae9b612659d6): 'This template only works if the image is identical to iMessage' — chrome-fidelity is the contract. Tapback reactions are a configurable per-bubble element. Set `reaction` on any bubble to one of: heart, thumbs_up, thumbs_down, haha, exclaim, question. The reaction renders as a floating circle bubble at the corner of the parent bubble (upper-left for sent / upper-right for received), with the two trailing dots that point back into the bubble — matching the iOS tapback geometry. Default sample shows a heart-tapback on the friend's reassurance line to prove the element renders. Differentiation: - vs `social-post-mockup.sms-thread`: that layout is a phone-chrome thread only (no status bar, no link-preview card, no headline-below, no tapbacks). This template is the standalone iOS-faithful composition with the full chrome and tapback support. - vs `parent-reddit-thread` / `parent-forum-thread`: those are public-forum mockups (handles + votes + multiple commenters). This is a 1:1 private SMS conversation — quieter, more intimate. - vs `letter` / `notes-screenshot`: those are single-author monologues. This template is dialogue — skeptic asks, friend answers — which makes it pair best with high-friction objections (price, modality, 'is it actually any good?'). Realism + compliance contract — apply BEFORE rendering, every time: 1. Per-bubble business-model pass. Every claim in every bubble must map to an in-scope feature. For Blueberry Pediatrics: text/call only — NEVER 'video'; no ADHD-meds, psychiatry, or emergency framing. A bubble that says 'video visit' or 'video pediatrician' is a launch-blocker. 2. Per-bubble medical-claim pass. If a bubble names a diagnosis, treatment verb, or specific outcome ('strep', 'diagnosed', 'treated', 'ear infection cured'), hold the chassis until Sage signs off. Don't ship as flagged-but-unresolved. 3. DTC pricing only. Use $18/mo (annual) or $29/mo (monthly) — the DTC consumer prices. Never use 'often covered' / '$0 with your plan' / 'insurance covers it' framing — those are B2B/MCO language. 4. No trial language. No 'free trial', '30-day', 'risk-free', 'money-back guarantee'. The ask is membership. 5. Answer-the-question / named-grounding. The skeptical bubble must ask something specific ('Worth it?', 'How much?', 'Wait, no video?'). The answering bubble must NAME the brand and the in-scope mechanism. Vague endorsements ('honestly worth it', 'we love it') without naming what the thing actually does fail this gate — they read as fake because real friends answering a friend's specific question always name the thing. 6. Internal consistency. The link card's title/subtitle and the headline-below must agree with what the bubbles claim. Don't have a bubble say 'text or call' and the link card say 'video visits'. Gate F (Naive-Scroller Read) on chassis defaults: - F1 price anchor: '$18/mo on annual' (bubble + subhead). Subscription-scope qualifier: 'Unlimited text + call visits', 'Family plan', 'kit included'. ANCHORED. - F2 capability anchor: 'real pediatricians by text or call' (link card subtitle), 'kit included' (bubble + subhead). ANCHORED. Link-card cover image variants (Harrison 2026-05-09 pick): - DEFAULT — `assets/cover-kit-otoscope.jpg` (couch ear-check). Lifestyle parent-child shot: mom on a living-room couch in late-afternoon light, doing a calm ear-check on her 3-year-old with the otoscope. Real-home anchors (folded knit blanket, sippy cup + board book on coffee table). This is the most direct read of the parent-child / using-the-otoscope brief — what the kit looks like in the moment a parent would actually use it. Use for the canonical "what real moms do with this" cover. - VARIANT — `assets/cover-kit-otoscope-counter.jpg` (counter product hero). The closed kit box on a warm wood counter with kid's drawing on the cabinet behind, otoscope at correct relative scale (~½ box length). People-free product hero. Use when you want a quieter, more product-forward cover (e.g., paired with a louder bubble thread, or a cleaner OG-card aesthetic). Swap by setting `linkCard.coverImageUrl` to the counter variant in the `_coverImageVariants` map.

infographic canonical render

infographic

1 layout

Branded stat infographic with a title, 3 key stats, and an optional footnote.

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · landscape_16_9
default · portrait_4_5
default · square_1_1
Full description

Branded stat infographic with a title, 3 key stats, and an optional footnote.

letter canonical render

letter

4 layouts

Letter — Motion H&W punch-above format.

Layouts: handwritten-notetyped-letteremail-screenshotrx-pad

Default variant: square_1_1 · 12 renders

Show all 12 renders
email-screenshot · portrait_4_5
email-screenshot · square_1_1
email-screenshot · story_9_16
handwritten-note · portrait_4_5
handwritten-note · square_1_1
handwritten-note · story_9_16
rx-pad · portrait_4_5
rx-pad · square_1_1
rx-pad · story_9_16
typed-letter · portrait_4_5
typed-letter · square_1_1
typed-letter · story_9_16
Full description

Letter — Motion H&W punch-above format. Static creative that visually mimics personal correspondence: handwritten note, typed letter on letterhead, email screenshot, or Rx-pad directive. Body copy in first person is the hero. Four layouts (handwritten-note, typed-letter, email-screenshot, rx-pad) x three aspect ratios. Pass `layout` in data to pick composition.

listicle canonical render

listicle

3 layouts

Listicle — 3-7 numbered list items as the hero.

Layouts: numbered-rowsicon-rowsbadge-list

Default variant: square_1_1 · 9 renders

Show all 9 renders
badge-list · portrait_4_5
badge-list · square_1_1
badge-list · story_9_16
icon-rows · portrait_4_5
icon-rows · square_1_1
icon-rows · story_9_16
numbered-rows · portrait_4_5
numbered-rows · square_1_1
numbered-rows · story_9_16
Full description

Listicle — 3-7 numbered list items as the hero. Cross-vertical 5-9% hit rate; H&W under-uses, opportunity to test before crowding. One template with 3 layouts (numbered-rows, icon-rows, badge-list) × 3 aspect ratios. Differentiation guardrails: 3-7 items with NO ranked winner (NOT 2-4 items WITH a winner — use `decision-stack`); items are claims/stats/benefits not features-with-benefits (NOT N feature × benefit pairs — use `feature-benefit`); items are top-level claims not bordered/handwritten reminders (NOT yellow sticky reminder — use `post-it`). Source: data/templates/batch2/listicle-research.md.

notes-screenshot canonical render

notes-screenshot

1 layout

Notes-screenshot — UGC ad creative styled as a full-bleed iPhone Notes app screenshot.

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Notes-screenshot — UGC ad creative styled as a full-bleed iPhone Notes app screenshot. The render IS the iPhone screen, edge-to-edge: status bar, Notes nav, date stamp, note body, and bottom toolbar — no surrounding canvas, no brand band, no CTA, no Sponsored fine-print. Meta overlays its own Sponsored label when the asset is uploaded as an ad. Brand placement happens *inside* the note body via an inline auto-link (e.g. paragraph with linkText: 'Blueberry Pediatrics'). Stylized chrome (CSS-drawn, no Apple SF Symbols / iOS assets). Differentiation: vs social-post-mockup it's single-author note-taking (no platform handle / engagement / verified badge); vs letter it has no opener/signature; vs ugc-overlay it's typography-only on a white note canvas with no photograph.

offer-first-banner canonical render

offer-first-banner

5 layouts

Offer-first banner — capability hero + supporting visual.

Layouts: offer-leftoffer-stackedbadge-cornerfull-bleed-offerbundle-band

Default variant: square_1_1 · 15 renders

Show all 15 renders
badge-corner · portrait_4_5
badge-corner · square_1_1
badge-corner · story_9_16
bundle-band · portrait_4_5
bundle-band · square_1_1
bundle-band · story_9_16
full-bleed-offer · portrait_4_5
full-bleed-offer · square_1_1
full-bleed-offer · story_9_16
offer-left · portrait_4_5
offer-left · square_1_1
offer-left · story_9_16
offer-stacked · portrait_4_5
offer-stacked · square_1_1
offer-stacked · story_9_16
Full description

Offer-first banner — capability hero + supporting visual. Five composition layouts (offer-left, offer-stacked, badge-corner, full-bleed-offer, bundle-band) × three aspect ratios. Pass `layout` in data to pick composition. Defaults frame Blueberry as a DTC subscription (24/7 unlimited pediatrician text & call + smart kit) — never MCO/payer copay framing.

parent-forum-thread canonical render

parent-forum-thread

1 layout

Stylized parent-community discussion mockup — multiple persona-tagged comments stacked in a clean forum-card aesthetic.

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Stylized parent-community discussion mockup — multiple persona-tagged comments stacked in a clean forum-card aesthetic. Intentionally NOT Facebook chrome (no FB-blue, no FB Like/Reply rail, no FB profile rings). Generic 'parent group' look. Reusable for any social-proof comment-thread set. Variants: square_1_1 (≤2 comments fit) / portrait_4_5 (4 comments, no reactions) / story_9_16 (4 comments + reactions). Comments accept persona/timestamp/body/likes/accentToken; regions supported but only set when verified. Realism contract — apply BEFORE rendering, every time: 1. Per-comment business-model pass. Every claim in every comment must map to an in-scope feature of the product being mocked. For Blueberry Pediatrics: text/call only, never 'video'; no ADHD-meds prescribing; no psychiatry. A claim that violates this in the OP body OR in any comment is a launch-blocker. 2. Per-comment medical-claim pass. If a comment names a diagnosis, condition, treatment verb, or specific outcome ('strep,' 'diagnosed,' 'treated,' 'ear infection'), hold the chassis until Sage signs off. Don't ship as flagged-but-unresolved. 3. Internal-consistency pass. No two comments may describe a feature the other contradicts. Walk the comments as a set. 4. Sort by likes/reactions DESC. Real forum threads default to top-engaged-first. Comments must be ordered DESC by the engagement metric shown. 5. Vocabulary establishment. The OP must name (or strongly imply) any term the comments use ('the kit,' 'the chat'). No orphan references. 6. Answer-the-question / named-grounding. If the OP asks 'what are you using' or similar, every comment must explicitly NAME the product/brand/feature it's recommending. Vague endorsements ('honestly worth it,' 'love it') without naming the thing fail this gate — they read as fake because real parents answering a 'what are you using' question always name what they use.

parent-reddit-thread canonical render

parent-reddit-thread

1 layout

Reddit-style discussion mockup — fictional subreddit + post + threaded comments.

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Reddit-style discussion mockup — fictional subreddit + post + threaded comments. Defensive against Reddit-brand confusion: no Reddit orange, no Reddit logo, made-up subreddit + made-up u/handles. Vote rail + u/handle + 'points' + subreddit header give the Reddit feel; muted-blue chrome and brand lockup keep it visibly an ad. Reusable for any persona-tagged comment-thread set. Variants: square_1_1 (≤2 comments fit) / portrait_4_5 (3-4 comments) / story_9_16 (4 comments + vote rail visible). Comments accept handle/timestamp/body/points/accentToken; OP fields drive the post header. Realism contract — apply BEFORE rendering, every time: 1. Per-comment business-model pass. Every claim in every comment must map to an in-scope feature of the product being mocked. For Blueberry Pediatrics: text/call only, never 'video'; no ADHD-meds prescribing; no psychiatry. A claim that violates this in the OP body OR in any comment is a launch-blocker. 2. Per-comment medical-claim pass. If a comment names a diagnosis, condition, treatment verb, or specific outcome ('strep,' 'diagnosed,' 'treated,' 'ear infection'), hold the chassis until Sage signs off. Don't ship as flagged-but-unresolved. 3. Internal-consistency pass. No two comments may describe a feature the other contradicts (e.g. 'chat feature' vs. 'video' in the same fictional thread). Walk the comments as a set. 4. Sort by points DESC. Real Reddit threads default to top-voted-first. Comments must be ordered points DESC. 5. Vocabulary establishment. The OP must name (or strongly imply) any term the comments use ('the kit,' 'the chat'). No orphan references. 6. Answer-the-question / named-grounding. If the OP asks 'what are you using' or similar, every comment must explicitly NAME the product/brand/feature it's recommending. Vague endorsements ('honestly worth it,' 'love it') without naming the thing fail this gate — they read as fake because real Redditors answering a 'what are you using' question always name what they use.

parent-testimonial-card canonical render

parent-testimonial-card

1 layout

Parent-voice testimonial card with persona attribution (e.g., 'Mom of 2').

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Parent-voice testimonial card with persona attribution (e.g., 'Mom of 2'). One quote per render. Reusable for any anonymized parent-quote carousel — feed (1:1, 4:5) or reels (9:16). Per-card accent color via `accentToken` (one of brand.secondaryYellow / Peach / Pink / Mint). Optional `region` field is supported but should ONLY be set when the source customer's location is verified — leaving it empty is the FTC-safer default. The default `quote` carries a Gate-F-compliant anchor pair (subscription-scope + kit) so the rendered canonical example is itself a valid ad; briefs override `quote` per card.

pediatrician-expert canonical render

pediatrician-expert

3 layouts

Pediatrician-expert — clinician-authority static.

Layouts: white-coat-portraitcredential-frameexpert-quote

Default variant: square_1_1 · 9 renders

Show all 9 renders
credential-frame · portrait_4_5
credential-frame · square_1_1
credential-frame · story_9_16
expert-quote · portrait_4_5
expert-quote · square_1_1
expert-quote · story_9_16
white-coat-portrait · portrait_4_5
white-coat-portrait · square_1_1
white-coat-portrait · story_9_16
Full description

Pediatrician-expert — clinician-authority static. Named board-certified pediatrician with credentials visible. Distinct from `founder` (operator voice without credential framing) and `letter` (correspondence framing). One template with 3 layouts (white-coat-portrait, credential-frame, expert-quote) × 3 aspect ratios. Differentiation guardrails: clinical authority framing with credentials shown (NOT operator/co-founder voice — use `founder`; NOT a customer or peer-voice photo — use `ugc-overlay` / `case-study`; NOT a typed letterhead — use `letter`). Compliance posture is stricter than `founder`: every claim, dose, treatment outcome, and superlative MUST be cleared by Sage / meta-ad-compliance. Briefs MUST supply a real on-staff clinician photo + credentials — the chassis default photo is an intentional CSS placeholder (NOT an AI face) because an AI-generated pediatrician on an authority-frame ad is a misleading-endorsement risk. Source: data/templates/batch3/pediatrician-expert-research.md.

platform-mockup canonical render

platform-mockup

5 layouts

Platform-mockup — full-bleed iPhone screenshot (the render IS the phone screen, edge-to-edge).

Layouts: email-inboxpush-notificationapp-screen-darklock-screen-alertrx-chat

Default variant: square_1_1 · 15 renders

Show all 15 renders
app-screen-dark · portrait_4_5
app-screen-dark · square_1_1
app-screen-dark · story_9_16
email-inbox · portrait_4_5
email-inbox · square_1_1
email-inbox · story_9_16
lock-screen-alert · portrait_4_5
lock-screen-alert · square_1_1
lock-screen-alert · story_9_16
push-notification · portrait_4_5
push-notification · square_1_1
push-notification · story_9_16
rx-chat · portrait_4_5
rx-chat · square_1_1
rx-chat · story_9_16
Full description

Platform-mockup — full-bleed iPhone screenshot (the render IS the phone screen, edge-to-edge). 5 layouts: email-inbox (Mail-app inbox card), push-notification (lock-screen-style notification on dark wallpaper), app-screen-dark (Blueberry brand splash as if launching the app), lock-screen-alert (giant clock + alert card), rx-chat (Messages-app conversation). Each carries an accurate iOS status bar pulled from `_partials/ios/`. NO surrounding canvas, brand band, headline, CTA pill, or 'Sponsored' fine-print — Meta overlays its own Sponsored label when uploaded. Brand placement happens *inside* the screenshot (sender name, app icon, doctor name in chat). Differentiation: post-inside-platform-chrome (X tweet, IG post, SMS thread, reddit comment) → `social-post-mockup`; typographic overlay on a UGC photo → `ugc-overlay`; ad with explicit headline + CTA → `ad-creative` / `offer-first-banner` / `billboard`.

post-it canonical render

post-it

3 layouts

Post-it — handwritten reminder/note on a yellow square.

Layouts: single-notetaped-cornertwo-stickies

Default variant: square_1_1 · 9 renders

Show all 9 renders
single-note · portrait_4_5
single-note · square_1_1
single-note · story_9_16
taped-corner · portrait_4_5
taped-corner · square_1_1
taped-corner · story_9_16
two-stickies · portrait_4_5
two-stickies · square_1_1
two-stickies · story_9_16
Full description

Post-it — handwritten reminder/note on a yellow square. Punch-above format (F&A #1 hit-rate; H&W under-represented = test-before-crowding opportunity). One template with 3 layouts (single-note, taped-corner, two-stickies) × 3 aspect ratios. Differentiation guardrails: handwritten-on-yellow note rhetoric (NOT printed letterhead — use `letter`; NOT pure typography in a card frame — use `quote-card`; NOT photo + typography — use `ugc-overlay`); reads like a parent's reminder to themselves or a fridge note. Source: data/templates/batch2/post-it-research.md.

problem-agitation canonical render

problem-agitation

3 layouts

Problem-agitation — pain-point named, amplified, then resolved.

Layouts: pain-onlypain-amplifiedpain-then-fix

Default variant: square_1_1 · 9 renders

Show all 9 renders
pain-amplified · portrait_4_5
pain-amplified · square_1_1
pain-amplified · story_9_16
pain-only · portrait_4_5
pain-only · square_1_1
pain-only · story_9_16
pain-then-fix · portrait_4_5
pain-then-fix · square_1_1
pain-then-fix · story_9_16
Full description

Problem-agitation — pain-point named, amplified, then resolved. Top-of-funnel pain framing. Mid-band hit rate but reliable. One template with 3 layouts (pain-only, pain-amplified, pain-then-fix) × 3 aspect ratios. pain-only states the pain on its own; pain-amplified adds 3 escalations; pain-then-fix is the full sequence with a brand resolution. Differentiation guardrails: pain-amplification rhetoric (NOT a boundary statement — use `boundary-blocks`; NOT a quote — use `quote-card`; NOT chronological before/after with explicit BEFORE/AFTER labels — use `transformation`); the rhetoric is 'this hurts, here's why, here's how it stops.' Compliance: pain text must not imply medical danger or unsubstantiated outcome — Sage / meta-ad-compliance must clear. Source: data/templates/batch2/problem-agitation-research.md.

quote-card canonical render

quote-card

1 layout

Quote-card — single big-quote testimonial chassis.

Layouts: default

Default variant: square_1_1 · 3 renders

Show all 3 renders
default · portrait_4_5
default · square_1_1
default · story_9_16
Full description

Quote-card — single big-quote testimonial chassis. Wordmark image at top, oversized open-quote glyph, quote, then attribution row with avatar (initials chip by default; supply avatarUrl for a photo). Single layout. Square + portrait suit LinkedIn / Feed; story_9_16 suits Reels / Stories.

review-quote canonical render

review-quote

4 layouts

Review-quote — rated consumer verdict ad.

Layouts: app-store-cardrating-and-linecompact-rating-gridtrustpilot-style

Default variant: square_1_1 · 12 renders

Show all 12 renders
app-store-card · portrait_4_5
app-store-card · square_1_1
app-store-card · story_9_16
compact-rating-grid · portrait_4_5
compact-rating-grid · square_1_1
compact-rating-grid · story_9_16
rating-and-line · portrait_4_5
rating-and-line · square_1_1
rating-and-line · story_9_16
trustpilot-style · portrait_4_5
trustpilot-style · square_1_1
trustpilot-style · story_9_16
Full description

Review-quote — rated consumer verdict ad. 5-star feel, app-store / product-review vernacular. One template with 4 layouts (app-store-card, rating-and-line, compact-rating-grid, trustpilot-style) × 3 aspect ratios. Differentiation guardrails: STAR RATING is required (NOT a quote without a rating — use `quote-card`); review-card vernacular not narrative arc (NOT named-protagonist proof — use `case-study`); platform-agnostic review chrome, not Twitter/IG/Reddit chrome (NOT post-inside-platform — use `social-post-mockup`). Source: data/templates/batch2/review-quote-research.md.

social-post-mockup canonical render

social-post-mockup

4 layouts

Social post mockup (Motion H&W #1 spend-use) — ad wraps peer-voice body copy in simulated social-platform chrome.

Layouts: x-tweetig-postsms-threadreddit-comment

Default variant: square_1_1 · 12 renders

Show all 12 renders
ig-post · portrait_4_5
ig-post · square_1_1
ig-post · story_9_16
reddit-comment · portrait_4_5
reddit-comment · square_1_1
reddit-comment · story_9_16
sms-thread · portrait_4_5
sms-thread · square_1_1
sms-thread · story_9_16
x-tweet · portrait_4_5
x-tweet · square_1_1
x-tweet · story_9_16
Full description

Social post mockup (Motion H&W #1 spend-use) — ad wraps peer-voice body copy in simulated social-platform chrome. Single template with 4 layouts (x-tweet, ig-post, sms-thread, reddit-comment) x 3 aspect ratios (1:1, 4:5, 9:16). Layouts differ on platform chrome — pick with layout prop. Differentiation guardrails: body never carries an offer number (vs offer-first-banner), never opens with Dear X (vs letter), always includes platform chrome (vs case-study), uses authored peer copy not real UGC screenshots (vs ugc-overlay). Native-style chassis: per Harrison 2026-05-11 (msg 19e17eca147c73f7), Pass 1 brand-styling is exempt — chrome stays platform-native (system font fallback, X/IG/SMS/Reddit visual rhetoric preserved). Only the chassis-level brand-mark below the platform card uses the Blueberry wordmark image (Amendment C, msg 19e18bdac7b88b8f) — old text+dot replaced 2026-05-11. Compliance: stylized-not-counterfeit platform chrome, our own @blueberrypediatrics handle by default, Sponsored label in finePrint where the ad could be read as organic, pediatrics is text/call only (NEVER video — all bubble/comment defaults audited 2026-05-11).

split-screen canonical render

split-screen

4 layouts

Split-screen — SAME entity in two states (chaos vs calm).

Layouts: top-bottom-dividerleft-right-dividerphone-screen-pairdiagonal-split

Default variant: square_1_1 · 12 renders

Show all 12 renders
diagonal-split · portrait_4_5
diagonal-split · square_1_1
diagonal-split · story_9_16
left-right-divider · portrait_4_5
left-right-divider · square_1_1
left-right-divider · story_9_16
phone-screen-pair · portrait_4_5
phone-screen-pair · square_1_1
phone-screen-pair · story_9_16
top-bottom-divider · portrait_4_5
top-bottom-divider · square_1_1
top-bottom-divider · story_9_16
Full description

Split-screen — SAME entity in two states (chaos vs calm). One template with 4 layouts (top-bottom-divider, left-right-divider, phone-screen-pair, diagonal-split) × 3 aspect ratios. Differentiation guardrails: SAME entity in two states (NOT a chronological before/after with explicit BEFORE/AFTER labels — use `transformation`); NOT cross-entity contrast — Blueberry vs urgent care (use `comparison-vs`); NOT a problem-only frame (use `problem-agitation`). Rhetoric: 'WebMD spiral → clean chat with a pediatrician', 'cluttered counter → tidy counter on the same device.' The default layouts pair a browser-results card (chaos) with a doctor chat bubble (calm); these can be replaced via the search-results and doctor-message props. Source: extracted from TR-PA-01 (WebMD spiral) — peace-of-mind-ads-v3 TRIAGE renders. Research input: data/templates/batch2/split-screen-research.md.

stat-card canonical render

stat-card

3 layouts

Stat-card — single huge stat as the hero.

Layouts: hero-numbernumber-with-photobig-numeral

Default variant: square_1_1 · 9 renders

Show all 9 renders
big-numeral · portrait_4_5
big-numeral · square_1_1
big-numeral · story_9_16
hero-number · portrait_4_5
hero-number · square_1_1
hero-number · story_9_16
number-with-photo · portrait_4_5
number-with-photo · square_1_1
number-with-photo · story_9_16
Full description

Stat-card — single huge stat as the hero. One template with 3 layouts (hero-number, number-with-photo, big-numeral) × 3 aspect ratios. hero-number is a full-bleed branded card; number-with-photo places the number alongside a lifestyle photo; big-numeral is pure typography on a clean ground. Differentiation guardrails: ONE number is the entire ad (NOT 3 supporting stats — use `infographic`; NOT 2 numbers contrasted — use `stat-comparison`). Use when ONE number is enough to carry the message: '24/7', '14 min', '$20/mo', '50 states'. Source: data/templates/batch2/stat-card-research.md.

stat-comparison canonical render

stat-comparison

2 layouts

Stat-comparison — TWO numbers placed adjacent for direct contrast (pricing math, time math).

Layouts: big-vs-bigstacked-numbers

Default variant: square_1_1 · 6 renders

Show all 6 renders
big-vs-big · portrait_4_5
big-vs-big · square_1_1
big-vs-big · story_9_16
stacked-numbers · portrait_4_5
stacked-numbers · square_1_1
stacked-numbers · story_9_16
Full description

Stat-comparison — TWO numbers placed adjacent for direct contrast (pricing math, time math). One template with 2 layouts (big-vs-big, stacked-numbers) × 3 aspect ratios. Differentiation guardrails: TWO numbers (NOT three supporting stats — use `infographic`; NOT one hero number — use `stat-card`); the contrast IS the message; use for $ vs $, time vs time, count vs count. For non-numeric cross-entity contrast use `comparison-vs`. Source: extracted from TR-PR-01 (insurance math) — peace-of-mind-ads-v3 TRIAGE renders.

transformation canonical render

transformation

5 layouts

Transformation — Motion H&W spend-use scale format (#9).

Layouts: side-by-sidearrow-transitiontimeline-of-changesplit-diagonalstat-delta

Default variant: square_1_1 · 15 renders

Show all 15 renders
arrow-transition · portrait_4_5
arrow-transition · square_1_1
arrow-transition · story_9_16
side-by-side · portrait_4_5
side-by-side · square_1_1
side-by-side · story_9_16
split-diagonal · portrait_4_5
split-diagonal · square_1_1
split-diagonal · story_9_16
stat-delta · portrait_4_5
stat-delta · square_1_1
stat-delta · story_9_16
timeline-of-change · portrait_4_5
timeline-of-change · square_1_1
timeline-of-change · story_9_16
Full description

Transformation — Motion H&W spend-use scale format (#9). Two discrete states (BEFORE/AFTER) presented adjacently with a direction signal. For Blueberry, the transformation is an access/time lifestyle shift (3am ER waiting room -> short pediatrician text or call), not a medical outcome. Single template with 5 layouts (side-by-side, arrow-transition, timeline-of-change, split-diagonal, stat-delta) x 3 aspect ratios (1:1, 4:5, 9:16). Differentiation: transformation shows an EXPLICIT state change (vs offer-first-banner's price/offer), uses authored brand typography (vs social-post-mockup platform chrome), is comparative/paired (vs letter's single-state first-person), is two-states-at-a-glance (vs case-study's narrative arc), is explicit-with-labels (vs billboard two-line-contrast's implied opposition), works typographically with no photo dependency (vs ugc-overlay's photo requirement). All five layouts share one prop schema so meta-ad-creative can bulk-fill across layouts without branching.

ugc-overlay canonical render

ugc-overlay

6 layouts

UGC overlay (Motion H&W #7 spend-use) — full-bleed UGC photograph with authored typographic overlay.

Layouts: bottom-text-barsticker-captionhandwritten-annotationmeme-textscreenshot-captionsnap-caption

Default variant: square_1_1 · 18 renders

Show all 18 renders
bottom-text-bar · portrait_4_5
bottom-text-bar · square_1_1
bottom-text-bar · story_9_16
handwritten-annotation · portrait_4_5
handwritten-annotation · square_1_1
handwritten-annotation · story_9_16
meme-text · portrait_4_5
meme-text · square_1_1
meme-text · story_9_16
screenshot-caption · portrait_4_5
screenshot-caption · square_1_1
screenshot-caption · story_9_16
snap-caption · portrait_4_5
snap-caption · square_1_1
snap-caption · story_9_16
sticker-caption · portrait_4_5
sticker-caption · square_1_1
sticker-caption · story_9_16
Full description

UGC overlay (Motion H&W #7 spend-use) — full-bleed UGC photograph with authored typographic overlay. Six layouts (bottom-text-bar, sticker-caption, handwritten-annotation, meme-text, screenshot-caption, snap-caption) × three aspect ratios (1:1, 4:5, 9:16). Typography is the ad layer; photograph is the trust layer. Three layouts intentionally use non-brand fonts because the chassis rhetoric requires them: handwritten-annotation uses a cursive/script stack, meme-text uses Impact, snap-caption uses Helvetica/system-sans (native Snap caption register). The other three layouts and all chassis-level chrome use Poppins (headings) + Inter (body) via {{{brand.fontsHref}}}. Amendment C wordmark (2026-05-11): chassis-level brand identity uses the wordmark image — white by default, since every layout sits on a photograph. Differentiation guardrails: overlay never wraps in platform chrome (vs social-post-mockup), never includes a separate quote card (vs case-study / quote-card), never opens with 'Dear X' (vs letter), never leads with a numeric offer (vs offer-first-banner), always photograph-based (vs billboard). Compliance: photograph release is assumed upstream; overlay is authored peer-voice copy (not verbatim customer quotes unless released); fine print is for 'Individual results vary.' style disclaimers, NEVER 'Sponsored' (Meta auto-renders that label). Ad-copy compliance contract — Gates A–F walked on every default copy string: Gate A (business model): text/call only — NEVER 'video'. The previous default ('Our 11pm fever turned into a 14-minute video visit') REMOVED; replaced with 'a 14-minute call with our Blueberry pediatrician'. memeBottom's '3 MIN' specific-response-time claim replaced with canonical '14 MIN' (the library's substantiated response-time claim used by billboard, case-study, social-post-mockup, etc.). Gate B (DTC, not MCO/payer): the legacy CTA 'Check my benefit' reads as MCO/employer 'is it covered by your plan?' framing — REPLACED with 'See plans' (the DTC consumer-subscription CTA used across billboard, pediatrician-expert, etc.). Gate C (no trial language): clean. Gate D (specific claims): 14-minute call-back time is the canonical Blueberry response time (library-wide ratified claim, paired with 'Individual results vary.' disclaimer). Gate E (FB policy / no Sponsored language): finePrint stripped of 'Sponsored' per memory/feedback_no_sponsored_language.md — Meta renders the label as platform chrome. finePrint is now 'Individual results vary.' only. Gate F (Naive-Scroller Read — composition-level anchors): every default copy slot is framed as personal-experience ('Our 11pm fever → 14-min call with our Blueberry pediatrician', 'the otoscope shows us what the doctor sees', 'no more urgent care runs') rather than category-claim. The chassis-level wordmark image (white, layout-gated) names the brand on every layout. Capability claims that reference the home kit ('handwrittenNote: the otoscope shows us what the doctor sees', 'handwrittenSubject: KIT') carry the F2 mechanism anchor inline. The caption's 'with our Blueberry pediatrician' phrasing implicitly names the unlimited-subscription mechanism (membership IS the moat). Layouts with only a single short line of overlay (meme-text top/bottom, sticker-caption left/right, snap-caption single line) lean on the chassis-level wordmark + 'Blueberry' in-copy reference for both anchors. Default imagery (Pass 4): bundles a 9:16 portrait UGC photograph (mom holding sleepy toddler at night, warm bedside-lamp light, real bedroom, phone visible in her hand) — generated via Gemini Pro 3 with a prompt for 'authentic, approachable, not-stock, centered composition with negative space top and bottom'. Photo crops cleanly into all three aspect ratios (1:1, 4:5, 9:16) via background-size: cover with centered focus. Briefs can override via `photo: 'file:///…' | 'https://…' | ''` (empty triggers the placeholder gradient).

x-tweet-screenshot canonical render

x-tweet-screenshot

1 layout

X (Twitter) screenshot — full-bleed recreation of a long-form X testimonial post.

Layouts: default

Default variant: square_1_1 · 9 renders

Show all 9 renders
default-light · portrait_4_5
default-light · square_1_1
default-light · story_9_16
default · portrait_4_5
default · square_1_1
default · story_9_16
with-media-otoscope · portrait_4_5
with-media-otoscope · square_1_1
with-media-otoscope · story_9_16
Full description

X (Twitter) screenshot — full-bleed recreation of a long-form X testimonial post. The render IS the X card, edge to edge: avatar + display-name + verified tick + @handle + overflow dots, multi-paragraph tweet body with inline bold + configurable yellow text highlights, optional attached-media card (rounded-corner image between body and meta — pass `mediaImageUrl` or `media: { imageUrl, alt }` to attach), timestamp/date/views meta row, engagement breakdown (reposts / quote tweets / likes / bookmarks), and the action bar (comment / retweet / like with optional filled heart / bookmarks / share). Two themes: `lights-out` (default, X dark — black canvas, white body, brand-yellow highlight) and `light` (white canvas, near-black body, same brand-yellow highlight). A bundled `media-otoscope-hero.jpg` ships at `assets/media-otoscope-hero.jpg` for the with-media-otoscope reference look. Use to mock the kind of viral parent-testimonial post that gets screenshotted and reshared. Differentiation: vs social-post-mockup.x-tweet, this is the long-form testimonial format with inline highlights + full engagement breakdown + theme switch + optional media card + no surrounding brand band; the social-post-mockup x-tweet is the short single-line tweet inside a branded canvas with CTA. Fidelity mode: no canvas, no brand band, no Sponsored fine-print — Meta overlays its own Sponsored label.