LEAD UP · AD SYSTEM

How our ads are made

One approved script in, a 50-second vertical ad out. AI makes the imagery and the motion, code makes every letter and number, and the edit cuts it all on the spoken words and the music beats. Everything below comes from the real camera ad.

01The principle

Each part of the ad is made by the tool that is best at it, and nothing else.

AI makes imagery and motion

Nano Banana 2 draws the characters, sets and first frames. Gemini Omni animates them. They never write text: AI lettering comes out wrong.

Code makes everything exact

Captions, headlines, prices, the map of Tunisia, the phone, the calendar and the logo are React code in Remotion, pixel-checked, right to left where needed.

The edit makes it human

27 short shots, each cut on a spoken word and snapped to the beat, with a designed sound on every action. That's what stops it from feeling AI-generated.

02Nine gates, one approval first

Every gate ends with something to see or hear. Nothing that costs money starts before the owner approves the script.

  1. 1

    Brief

    Offer, audience, CTA keyword, the facts that must be true.

    ads/<slug>/brief.mdfree
  2. 2

    Script

    8 lines on the Hormozi structure, Tunisian Derja, lint at 0 issues, 2-4 hooks. Nothing is spent before the owner says “ok”.

    script.mdfreeowner review
  3. 3

    Voice

    Gemini 3.1 TTS (Sadachbia), 3 takes per line; forced alignment + transcript check pick the best.

    8 lines, word timingscents
  4. 4

    Timing

    27 cuts anchored to spoken words, snapped to the 127.8 BPM beat grid.

    timeline.jsonfree
  5. 5

    Reference kit

    Style frame, character sheets, sets, then one 2K first frame per AI shot. Never any text.

    22 images≈ $2.5owner review
  6. 6

    Code scenes

    Every letter, number, map, phone, chip and caption is React code in Remotion.

    pixel-checked stillsfreeowner review
  7. 7

    AI shots

    Gemini Omni animates each first frame, 720p, at most 2 takes; the best 1-2 s are kept.

    16 shots · 31 takes≈ $12owner review
  8. 8

    Finish

    Sound on every action, shake and punch-ins, grade, render, master −14 LUFS, WhatsApp copy.

    QC reportfreeowner review
  9. 9

    Publish

    Private source repo (LFS) + public page and release.

    linksfree

03The system

The voice and the music build a single timing file. Every picture and every sound is placed from it.

Script · 8 linesTunisian Derja · owner says “ok” VoiceGemini 3.1 TTS · 3 takes MusicLyria 002 · 127.8 BPM Word timingsforced alignment + QC Beat grid64-beat loop timeline.json27 cuts on words, snapped to beats Reference kitNano Banana 2 · 2K Code scenesRemotion · all text & UI First frames1 per AI shot AI shotsOmni · 720p · ≤ 2 takes Captions · SFXRTL checked · owned SFX Remotion render1080×1920 · 30 fps · BT.709 Master + WhatsApp−14 LUFS · 720p under 16 MB Published
8voice lines, 3 takes each. The pick is the take whose transcript matches the script, with clear French words.
27shots in 50 s, about 1.9 s each, every cut placed 60 ms before its word and snapped to the beat.
16AI shots from Gemini Omni, each from its own 2K first frame, at most 2 takes, 720p.
11code shots where exactness matters: the freeze-frame tag, map, call, stopwatch, checklist, calendar, stamp and CTA.
128BPM music bed from Lyria, looped on an exact 64-beat grid, ducked under the voice and cut to silence before the stamp.
0words written by an AI model on screen. All text is code.

04The real timeline of the camera ad

Drawn straight from timeline.json. Yellow shots are AI, blue shots are code. Green blocks are the 8 voice lines, with a tick on every word.

SHOTS VOICE BEATS MUSIC 0s 5s 10s 15s 20s 25s 30s 35s 40s 45s 50s a01 · omni · 2.21s — NIGHT: bullet camera snaps toward us, red strobe, sirena01 a02 · omni · 1.22s — CCTV POV: the masked Boost-button thief sprints across the shop streeta02 a03 · code · 1.26s — freeze frame, red target box locks on the thief, tag BOOSTa03 a04 · omni · 1.41s — the thief lifts banknotes from the installer's tool belt while he worksa04 a05 · omni · 1.62s — installer hands 3 notes, the thief snatches them; counter 300 DTa05 a06 · omni · 2.26s — phone on the van dashboard buzzing; likes + «Prix caméra?» bubbles burst outa06 a07 · omni · 1.61s — installer slumped on the van bumper among unsold boxes; «0 CLIENT»a07 a08 · omni · 2.02s — on the ladder, turns to camera; «CAMÉRAS · ALARMES ?»a08 a09 · omni · 1.28s — finger on the alarm keypad; 30-second ringa09 a10 · omni · 2.48s — close-up, curious; client cards pop around hima10 a11 · omni · 2.08s — steps off the ladder toward us; «ما تخلّص حتى شي؟»a11 m1 · code · 3.09s — Tunisia map, chip 1 · PUB CIBLÉE, house and shop pins with shieldsm1 a13 · omni · 1.23s — villa at dusk: owner closes the gate, glances at the streeta13 a14 · omni · 1.87s — night: shopkeeper pulls the shutter down, worrieda14 p1 · code · 1.12s — phone: NOUVELLE DEMANDE a16 · omni · 1.24s — Lead Up call agent on the phone, energetica16 p2 · code · 1.88s — stopwatch stops at 4:12, chip 2 · APPEL < 5 MINp2 p3 · code · 3.73s — checklist ticks: دار ولا محل؟ ✓ قدّاش من caméra؟ ✓ جدّي؟ ✓p3 p4 · code · 3.34s — calendar fills, chip 3 · RDV CONFIRMÉp4 a19 · omni · 0.88s — installer walks up to the shop, shopkeeper waves him in a20 · omni · 0.84s — drill fixes a dome camera a21 · omni · 0.98s — handshake at the shop front z1 · code · 1.19s — hard silence, black: «و الخلاص؟» z2 · code · 1.07s — stamp SLAMS 0 DT z3 · code · 2.84s — kinetic headline «ما تخلّص كان كي تبيع»z3 e1 · code · 1.72s — phone: types CAMERA, sends, double tickse1 e2 · code · 3.54s — end card: LEAD UP + «ابعثلنا» CAMERAe2 c1 c2 c3 c4 c5 c6 c7 c8 silence → stamp siren
AI shot (Gemini Omni)Code shot (Remotion) Voice line + wordsBar (4 beats)Music level

On a phone, scroll the timeline sideways. Hover or tap a shot to see what it shows.

05From one frame to a finished shot

Each AI shot starts from a still composed for it, with the character sheets as references. Omni animates it. The edit keeps the best second or two, and code adds the words.

The thief lifts the cash from the tool belt

Nano Banana first frame
1 · First frame
Nano Banana 2, 2K, text-free
Gemini Omni frame
2 · AI shot
Gemini Omni, 720p
Final frame of the ad
3 · In the ad
trimmed, zoomed, code on top

The first frame is composed for the shot: the character sheets keep the technician and the thief on model. Omni animates the theft; the edit keeps 1.4 s of it, zoomed 1.3× onto the action.

Likes and «Prix caméra?» burst out of the phone

Nano Banana first frame
1 · First frame
Nano Banana 2, 2K, text-free
Gemini Omni frame
2 · AI shot
Gemini Omni, 720p
Final frame of the ad
3 · In the ad
trimmed, zoomed, code on top

Omni only makes the phone buzz and flash on the dashboard. Every bubble, like and number is drawn in code on top, timed to the spoken words.

The call-out: «CAMÉRAS · ALARMES ?»

Nano Banana first frame
1 · First frame
Nano Banana 2, 2K, text-free
Gemini Omni frame
2 · AI shot
Gemini Omni, 720p
Final frame of the ad
3 · In the ad
trimmed, zoomed, code on top

Omni turns the technician toward the viewer and makes him point; the headline slams in code on the word «تركّب», inside the safe top band.

06The cast and the sets

One style frame sets the look: matte clay, one warm key light, chalk-white Tunisian walls, cobalt and one sun-yellow accent. Then the character sheets keep everyone on model in every shot.

Style frame
Style frame: the look of the whole film
Technician character sheet
The technician
Boost button thief character sheet
The “Boost” thief: the hook's villain
Shopkeeper character sheet
The shopkeeper, the client
Villa set
Set: the villa
Shop set
Set: the shop street

…and the 16 first frames, one per AI shot:

First frame a01First frame a02First frame a04First frame a05First frame a06First frame a07First frame a08First frame a09First frame a10First frame a11First frame a13First frame a14First frame a16First frame a19First frame a20First frame a21

07All 27 shots

A frame from the middle of each shot of the final master, in order.

NIGHT: bullet camera snaps toward us, red strobe, siren
a01AI shot2.2s
NIGHT: bullet camera snaps toward us, red strobe, siren
CCTV POV: the masked Boost-button thief sprints across the shop street
a02AI shot1.2s
CCTV POV: the masked Boost-button thief sprints across the shop street
freeze frame, red target box locks on the thief, tag BOOST
a03code1.3s
freeze frame, red target box locks on the thief, tag BOOST
the thief lifts banknotes from the installer's tool belt while he works
a04AI shot1.4s
the thief lifts banknotes from the installer's tool belt while he works
installer hands 3 notes, the thief snatches them; counter 300 DT
a05AI shot1.6s
installer hands 3 notes, the thief snatches them; counter 300 DT
phone on the van dashboard buzzing; likes + «Prix caméra?» bubbles burst out
a06AI shot2.3s
phone on the van dashboard buzzing; likes + «Prix caméra?» bubbles burst out
installer slumped on the van bumper among unsold boxes; «0 CLIENT»
a07AI shot1.6s
installer slumped on the van bumper among unsold boxes; «0 CLIENT»
on the ladder, turns to camera; «CAMÉRAS · ALARMES ?»
a08AI shot2.0s
on the ladder, turns to camera; «CAMÉRAS · ALARMES ?»
finger on the alarm keypad; 30-second ring
a09AI shot1.3s
finger on the alarm keypad; 30-second ring
close-up, curious; client cards pop around him
a10AI shot2.5s
close-up, curious; client cards pop around him
steps off the ladder toward us; headline slam
a11AI shot2.1s
steps off the ladder toward us; headline slam
Tunisia map, chip 1 · PUB CIBLÉE, house and shop pins with shields
m1code3.1s
Tunisia map, chip 1 · PUB CIBLÉE, house and shop pins with shields
villa at dusk: owner closes the gate, glances at the street
a13AI shot1.2s
villa at dusk: owner closes the gate, glances at the street
night: shopkeeper pulls the shutter down, worried
a14AI shot1.9s
night: shopkeeper pulls the shutter down, worried
phone: NOUVELLE DEMANDE
p1code1.1s
phone: NOUVELLE DEMANDE
Lead Up call agent on the phone, energetic
a16AI shot1.2s
Lead Up call agent on the phone, energetic
stopwatch stops at 4:12, chip 2 · APPEL < 5 MIN
p2code1.9s
stopwatch stops at 4:12, chip 2 · APPEL < 5 MIN
checklist ticks the three questions exactly on the words
p3code3.7s
checklist ticks the three questions exactly on the words
calendar fills, chip 3 · RDV CONFIRMÉ
p4code3.3s
calendar fills, chip 3 · RDV CONFIRMÉ
installer walks up to the shop, shopkeeper waves him in
a19AI shot0.9s
installer walks up to the shop, shopkeeper waves him in
drill fixes a dome camera
a20AI shot0.8s
drill fixes a dome camera
handshake at the shop front
a21AI shot1.0s
handshake at the shop front
hard silence, the stamp hovers
z1code1.2s
hard silence, the stamp hovers
stamp SLAMS 0 DT
z2code1.1s
stamp SLAMS 0 DT
kinetic headline builds word by word with the voice
z3code2.8s
kinetic headline builds word by word with the voice
phone: types CAMERA, sends, double ticks
e1code1.7s
phone: types CAMERA, sends, double ticks
end card: LEAD UP + CAMERA, green button
e2code3.5s
end card: LEAD UP + CAMERA, green button

08Text never comes from the AI

Every word sits in a zone that the platform's own buttons and captions never cover.

platform UIy 0–270 px headlines · chips · HUDy 290–640 px captionsy 1060–1230 px platform UI · buttonsy 1250–1920 px
  • Captions follow the voice word by word: Lalezar with a thick black outline, the active word in yellow, never glued across a pause.
  • No word appears twice. When a headline or bubble already shows a word, its caption is hidden.
  • Right to left is measured, not eyeballed. French words inside Arabic lines are isolated so they keep their order.
  • Numbers are digits on screen (300 DT, 4:12, 0 DT), and spelled out in words for the voice.
  • The first frame is the thumbnail: something is lit and readable at frame 0.

09Sound

Half of the feel is sound: a clear Derja voice, a beat the cuts lock to, and a designed sound on every action.

Voice

Gemini 3.1 Flash TTS, voice Sadachbia, directed as “Karim”, a young business owner from Tunis. Takes are checked by forced alignment and a second model's transcript.

Music

An instrumental from Lyria 002, beat-tracked at 127.8 BPM and looped on an exact 64-beat grid, so a cut never lands off the beat.

Sound effects

All synthesized in code, so they're fully owned: siren, CCTV glitch, lock-on beeps, cash rustle, keypad, gate clank, shutter, drill, pops, stamp, impacts.

Mix

Music ducks under the voice, goes silent before the stamp, then everything is compressed and mastered to −14 LUFS with a peak limiter.

10Quality gates

Measured on the published camera master before release.

CheckTargetCamera ad
Loudness−14 LUFS (Meta / Reels)−14.5 LUFS
True peak≤ −1.5 dBTP−2.9 dBTP
Video formatyuv420p, BT.709, TV range (plays on every phone)yuv420p · BT.709
Frame1080×1920, 30 fps1080×1920 · 30
WhatsApp copyunder 16 MB12.3 MB
Brightnessaverage luma ≳ 90/255, lit first frame101 · first frame lit
Derja scriptInfoLab lint, 0 issues0 issues
Sound reviewno masked voice, no harsh soundssiren, glitch, stamp softened

11Cost and time

Per ad, on Google Cloud credit. The code, the sound effects and the map are free and reused from ad to ad.

StepModel / toolVolumeCost
Voice + checksGemini 3.1 TTS · Gemini 2.5 Pro24 takescents
MusicLyria 0022 candidatescents
ImagesNano Banana 2 (2K)22 images≈ $2.5
AI shotsGemini Omni (720p, 4 s takes)31 takes · 16 shots≈ $12
Motion design, captions, render, masterRemotion · ffmpeg (local)1,500 frames$0
Totalabout one night, gate by gate≈ $15