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).