# UGC iPhone Creative — Static Generation Playbook

This is the canonical reference for the **UGC iPhone Creative** static format. Pin it. Future `/generate-statics` runs read this exact register.

Click the ★ **UGC iPhone Creative** button on [generate.html](../generate.html) to invoke it. Combine it with any other format tag (Comparison, Quote, Listicle, etc.) — the other tag drives *structure*, this one overrides *execution*.

---

## Why this exists

For most DTC brands, the static ads that earn the highest spend are **not** brand-considered studio compositions. They are native iPhone snapshots of real people in real environments — a kid in a puffer in front of a garage door, a mom standing next to her bike on a cracked driveway, two bikes leaning against a brick wall. Meta's algorithm rewards what looks native to the feed, and shoppers click what looks like a friend's photo, not a billboard.

When `/generate-statics` shipped its first Guardian Bikes pass, it rendered four studio-clean DR comps: floating products on white seamless, iPhone-Messages mockups, side-by-side comparison charts on off-white. The visual register did not match a single one of Guardian's top-5 winning statics (all UGC iPhone). Dean caught it; the re-run inherited the register and shipped production-ready creative. This doc locks in the lesson so it never regresses.

The canonical example is in [brands/guardian-bikes/statics/runs/2026-05-12-0247/](../brands/guardian-bikes/statics/runs/2026-05-12-0247/) — view those four files side-by-side with the winners they inherit from to feel the difference.

---

## The 10 hard rules

1. **Scene is real, never studio.** Real suburban driveway, sidewalk, garage, brick wall, kitchen, living room, hallway, car interior — whatever fits the brand's persona. Never a white seamless backdrop, never a clean studio shot of the product, never a graphic-design composition with floating product on solid color.

2. **Lighting is natural daylight** or honest indoor mixed light. No softbox lighting, no rim lights, no "golden hour", no color-grading vocabulary in the prompt.

3. **Talent is real.** Real-looking person in everyday clothes (puffer vests, tees, jeans, sneakers, casual dresses, baseball caps). Not posed for studio — candid, slightly off-center, real expressions, real body language. No founder concepts.

4. **Framing is iPhone-imperfect.** Slightly off-axis, real-world depth-of-field, occasional crop-tightness. The photo should look like the user grabbed their phone and snapped one frame — not like a crew was hired.

5. **Overlays only as one of these three:**
   - Rounded **white pill labels with thin grey leader lines** pointing at product features (Taryn winner mechanic).
   - A **single rounded white pill at the top** with a handwritten-feel soft sans-serif caption (1–2 short lines, real-voice register).
   - A **translucent dark band across the top** with a white sans-serif caption (Instagram-story register).

6. **CTA** is a single small black pill at the bottom with white text. That's the entire branded element. Nothing else.

7. **`medias` is multi-reference and MANDATORY:**
   - One winning Motion static (a UGC winner whose register you want to inherit) — pass the public Motion blob URL directly.
   - The actual landing-page product image — pass the public CDN URL directly.
   - `medias: [{value: "<winner_url>", role: "image"}, {value: "<product_url>", role: "image"}]`
   - `nano_banana_2` accepts https URLs natively; no upload step needed.

8. **Prompt vocabulary is casual-photo, not cinematic.**
   - **Yes:** *native iPhone photo, real-looking, candid, imperfect framing, natural daylight, suburban driveway, everyday clothes, mid-30s mom, slight cool color cast, asphalt with realistic texture.*
   - **No:** *studio, rim light, softbox, color graded, cinematic, push-in, gimbal, drone, golden hour, white seamless, graphic design composition, floating product.*

9. **Divergence still applies, but inside the register.** Each new concept must differ from its source winner by *subject / scene / angle / talent / outfit / overlay copy* — never by swapping photography for graphic design. The sniff test: *if my proposed concept could just as easily live on a glossy DTC homepage or a corporate brand campaign, I've left the register.*

10. **Default model** stays `nano_banana_2`. Its text rendering is best-in-class for the caption pills and bike/product accuracy is high when fed both a winner ref and a product ref.

---

## The recipe

```
For each concept:
  1. Pick a winning Motion static whose register you want to inherit.
     (Driveway? Garage? Sidewalk? Brick wall? Living room?)
  2. Pick the canonical product image from the landing page.
  3. Pick the structure tag (Comparison, Quote, Listicle, Ingredient
     Spotlight, Product Hero, etc.) — this drives what overlays exist.
  4. Write the image prompt using the casual-photo vocabulary above.
     Lead with: "A native iPhone photo of [subject] in [real
     environment], vertical 4:5, designed to look exactly like a
     casual moment captured on a modern iPhone."
  5. Pass BOTH refs as medias:
       medias: [
         { value: "<motion_winner_blob_url>", role: "image" },
         { value: "<guardianbikes_cdn_product_url>", role: "image" }
       ]
  6. Add explicit negatives:
       "NO studio backdrop, NO white seamless, NO graphic design
        treatment, NO attribution / watermark / agency name / date /
        source label / photo credit."
  7. Ship.
```

---

## What "good" looks like

| Source winner (UGC) | New concept (UGC, divergent) |
|---|---|
| Mom and dad high-fiving on sidewalk, autumn neighborhood, riding their adult Guardians | Single mom standing relaxed next to her adult Guardian on a driveway in front of a beige garage with a basketball hoop, caption pill `"$399. shipped flat. built it in 10 min."` |
| Two kids posed in driveway with their Guardians, 5 pill callouts | One kid in puffer + helmet on driveway with her mint Guardian 16", 4 different pill callouts |
| Dad and daughter mid-high-five on garage driveway, "winning at dad" overlay | Dad thumbs-up while daughter sits astride her mint Guardian 16", same "winning at dad" caption + 1-day subhead |
| Two boys' bikes leaning together against brick wall, fake-MSA blog headline | Worn old red/blue kids bike with rusty training wheels vs. new mint Guardian 16" against the same brick wall, handwritten caption `"left: 2 yrs of training wheels. right: rode solo in a day."` — no fake-blog frame |

In every case: **same register, different subject/scene/copy.**

---

## What "bad" looks like (the failure mode this doc prevents)

The first Guardian Bikes pass (run `2026-05-12-0236`) shipped:

- Adult bike on a clean grey-cream wall, no people, massive `$399` graphic-design text — **studio shot.**
- iPhone Messages mockup with no photography at all — **pure graphic design.**
- Two-column comparison chart on off-white BG with floating product images — **brand-campaign comp.**
- White-background listicle with a yellow Wirecutter roundel and floating product — **brand-campaign comp.**

All four would look at home on the brand's homepage. None would look at home in someone's Instagram feed. That's the gap.

---

## How to refer back

- **From the Generate page:** the ★ button is always available.
- **From this doc:** [generate.html](../generate.html).
- **From the canonical example:** [brands/guardian-bikes/statics/runs/2026-05-12-0247/](../brands/guardian-bikes/statics/runs/2026-05-12-0247/).
- **From the skill file:** `~/.claude/commands/generate-statics.md` § "UGC iPhone Creative — register override".
- **From memory:** `~/.claude/projects/-Users-deanlaptop/memory/feedback_statics_match_winner_register.md`.
