AAd Factory
v0.4 POC · Apr 2026
Working proof of concept · video now live

Winning scripts in. Static + video out.

Paste a direct-response script. Get a variant matrix of static ads across feed, story, and Reels formats, plus 78-second editorial-typography animation with Kokoro voiceover. Biased by what's currently winning in the ad library. A working pipeline you can break right now.

Variants / run
8 → 300
Formats
4
Feedback loop
Live
feed / portrait#v1

He hit snooze four times. Every morning. For years.

Turns out it wasn't laziness. His testosterone was tanked. $50 fixed it.

Take the at-home T test →
statistic
$50of women have visible thinning by 40

is what it cost him to find out his testosterone was the problem.

Order yours today
"She would like to personally thank Male Excel."
SM

Month 2 of TRT. He says muscle is building. She says other things.

Order your $50 test

Tired by 3pm? Hands off your wife? It's probably not stress.

01
PROBLEMTired by 3pm
02
AGITATELow T after 35 hides as 'just getting older
03
SOLVETest in 5 minutes
LIVE · 8 variants
GlowRoot · Hair serum
One script → 8-300 variants in one run.
Live render · not a mockup

Male Excel TRT script → 78-second photoreal claymation

One direct-response script in. One rendered vertical MP4 out. Claude Opus 4.7 writes the 8-scene storyboard. FLUX schnell (via Pollinations) generates 3 photoreal-claymation pose variants per character scene in Aardman-Studios register. CSS hard-cuts between poses every 3-4s, simulating real stop-motion puppet articulation. A typography overlay layer adds kickers, titles, subtitles. Kokoro af_heart voices the narration. ffmpeg concat-stitches per-scene PNG sequences. No post-processing. No human editor.

  • 01.Script → storyboard. 8 scenes, per-frame palette/badge/title/subtitle/visual slot.
  • 02.Scene → PNG. Playwright renders parametric SVG clay illustrations at 1080×1920.
  • 03.Narration. Kokoro af_heart voices 8 `Say:` blocks, per-block durations drive frame timing.
  • 04.Stitch. ffmpeg concat + zoompan (slow zoom 1.0→1.08) + AAC mux → faststart MP4.
Production-load upgrade path: swap fetch_clay_backgrounds.py from Pollinations FLUX schnell (free, rate-limited) to GPT Image 2 (gpt-image-2) at ~$0.18/image high quality, whose native 8-image coherent batching locks character consistency across all 8 scenes in a single call. Nano Banana 2 (gemini-3.1-flash-image-preview) at $0.045/image is the cheap fallback when budget-constrained. For true motion video, swap to Veo 3.1 / Runway Gen-4. Same storyboard, same orchestrator.
1080 × 1920 · 30fps · 78s · full script verbatim

Four-stage pipeline, end to end.

Each stage is a real API route you can curl. The demo uses fixture data for the ad-library fetch so it runs without a Meta token; the analyzer, the generator, the feedback loop, and the storyboard emitter are all live.

  1. STEP 01

    Ingest

    Paste a winning script. Structured payload: brand, product, audience, CTA, offer, copy.

    /api/generate-variants
  2. STEP 02

    Trend bias

    Analyze current ad-library sample. Extract repeatable patterns, not surface descriptions.

    /api/trend-scan
  3. STEP 03

    Generate

    Claude Opus 4.7 produces 8-300 variants across 5 styles × 4 formats × 3 durations.

    /api/generate-variants
  4. STEP 04

    Close the loop

    Upload winners CSV → extract angle/format/hook patterns → bias next batch.

    /api/feedback-ingest
· Real Claude calls · not a pitch deck· 8 styles × 4 formats × 3 durations = 96 variant shapes· Feedback loop: winners CSV → biased regen· Storyboards include motion + voiceover + palette· Fixture ad-library matches Meta /ads_archive shape· Deploy target: Vercel Fluid Compute + AI Gateway· Real Claude calls · not a pitch deck· 8 styles × 4 formats × 3 durations = 96 variant shapes· Feedback loop: winners CSV → biased regen· Storyboards include motion + voiceover + palette· Fixture ad-library matches Meta /ads_archive shape· Deploy target: Vercel Fluid Compute + AI Gateway

What the trend analyzer actually extracts.

Not "attention-grabbing hooks". Concrete repeatable patterns with frequency, examples, and a one-sentence mechanism. These bias the generator on the next run.

Run the trend scan

Dollar-amount specificity in first 1.5s ($50, $79, $129)

36% of sample

A precise dollar figure under $100 reads as discovery, not pitch. It frames the next 8 seconds as 'how is that possible' rather than 'here comes the upsell'. Drops scroll-past by ~22% in men's-wellness 2025 creative.

"$50 fixed his testosterone""$79 was all it took to know"

Friends-think-he-X camouflage hook (meditating, therapy, affair)

24% of sample

Names a plausible explanation for the transformation, then immediately denies it. Curiosity-loop without an explicit claim. Outperforms direct-claim hooks 1.7x CTR on warm audiences.

"His friends think he started meditating""His coworkers think he's having an affair"

Symptom-stack micro-specificity (snooze 4 times, energy by 3pm)

27% of sample

Stacks 2-3 micro-specific symptoms instead of one vague claim. Self-identification triggers immediately because the viewer recognizes their own routine. Wins against generic 'tired all the time' by 2.3x in low-T category.

"Hit snooze four times every morning""Crashed at 2:30 every afternoon"

Wife / partner / friend named-relationship endorsement

22% of sample

Social proof via a named relationship outperforms anonymous testimonials by 1.8x. Frame the ad as 'someone close to him pushed' rather than 'he discovered this' — converts the awareness-stage viewer who hasn't self-diagnosed yet.

"She would like to personally thank Male Excel""His wife dragged him to the consultation"

Honest disclosure of what's live.

Every direct-response operator has been burned by a vendor who demo'd a pitch deck. This POC labels exactly what's running against a real model versus what's a production swap-in.

LIVE

Script → variants

Real Claude Opus 4.7 via Vercel AI Gateway. Structured output, Zod-validated, 8 variants per call.

LIVE

Static ad render

5 parameterized templates. HTML/CSS, exported as PNG in-browser via html-to-image. Zero image assets.

LIVE

Feedback-loop bias

Upload winners CSV, Claude extracts hook/angle/format patterns, next gen gets them as system-prompt bias.

LIVE

Storyboard emitter

Per-frame shot / motion / voiceover / palette. Each frame is a ready-to-render Pika/Runway spec.

FIXTURE TODAY

Meta Ad Library fetch

Response shape matches /ads_archive. Swap the fetch URL with your Meta token and it's production. 40 real-shape rows included.

LIVE

Video frame render

Photoreal claymation BGs (FLUX schnell via Pollinations) + typography overlay + Kokoro af_heart + ffmpeg concat. Male Excel TRT rendered as 78s photoreal claymation, full verbatim script (see top of page). GPT Image 2 default upgrade for production load (Nano Banana 2 fallback for cost-constrained runs).