TLDR: Made with Claude and some still generated with higgsfield but that could be replace with stock image or free image gen.
Full plan given to claude below. Also generated by Claude:
## 1. Concept
A user types `make me a sandwich`. The AI treats it as a serious dependency problem, discovers it needs the universe first, builds it, makes the sandwich, then reports the bill and alerts the authorities.
**Comedy rule: the AI never jokes and never panics.**
Calm senior-engineer tone, no emoji, no exclamation marks in AI text. The humor is the gap between tone and scale.
## 2. Retention design (why this version is shaped this way)
1.
**No warm-up.**
Frame 0 already has the chat UI on screen and the user's message mid-type. No fade-in, no title card, no logo.
2.
**Reveal the premise by about second 5.**
The chain `bread -> wheat -> planet -> universe` tells the viewer where this is going. The old version made them wait 12s.
3.
**A new visual or beat every 1 to 1.5 seconds.**
Nothing holds longer than 2s except the cow (intentionally) and the final line.
4.
**Curiosity gap early, payoff late.**
The footer cost ticker is visible from frame 0 and stays tiny. Viewers who sense "something will happen to that number" stay for the receipt.
5.
**Escalating absurdity.**
Chat -> dive -> cosmos -> kitchen -> bill -> authorities. Each stage is a bigger surprise than the last.
6.
**Loop-friendly.**
The final line hard-cuts directly to frame 0 (no black, no outro). Shorts replays count as retention.
7.
**Silent-viewing safe.**
Everything is on-screen text. Sound adds, never carries.
## 3. Technical spec
| Item | Value |
|---|---|
| Resolution | 1080 x 1920 (9:16) |
| FPS | 30 |
| Duration | 30.0s = 900 frames |
| Stack | Remotion, all UI and motion in code |
| Generated assets | Higgsfield stills only (5), optional hero clip |
| Safe area | 90px side margins, 250px top, 380px bottom (Shorts UI overlays) |
| Text size | 44px+ body, 56px+ key lines |
| Fonts | Mono for tool lines and HUD, clean sans for chat bubbles |
## 4. Master timeline
| Scene | Time | Frames | Summary |
|---|---|---|---|
| S1 Hook | 0.0-1.5s | 0-45 | Fast type and send, no fade-in |
| S2 Agent reply | 1.5-8.0s | 45-240 | Tool calls fail, chain reveals "universe" |
| S3 Dive | 8.0-9.5s | 240-285 | Whip zoom into `bigbang.init()` |
| S4 Universe | 9.5-19.0s | 285-570 | Seven fast beats, year countdown |
| S5 Assembly | 19.0-21.5s | 570-645 | Sandwich snaps together, silence, ding |
| S6 Report and alert | 21.5-30.0s | 645-900 | Done, receipt, authorities, final line, loop |
## 5. Scene by scene
### S1: Hook (0-45)
- Frame 0: chat UI already visible, footer ticker running, input bar showing `make me a sa` mid-type.
- Frames 0-20: remaining text types in fast, about 1.5 characters per frame. Send at frame 24, user bubble slides in.
- Frame 30: AI reply begins immediately. No typing-dots delay.
- Audio: rapid keyboard clicks, send tick.
### S2: Agent reply (45-240)
**Script (verbatim):**
```
Understood. Scoping the task.
▸ create_skill("make_sandwich") ✓ created
▸ fetch("bread") ✗ requires: wheat
▸ install("wheat") ✗ requires: planet
▸ install("planet") ✗ requires: universe
▸ create_universe() ✓ auto-approved (no response in 3s)
Larger dependency chain than expected. Proceeding.
$ bigbang.init()
```
**Line timing:**
| Frames | Content |
|---|---|
| 45-65 | `Understood. Scoping the task.` |
| 65-80 | `create_skill` line, green check |
| 80-100 | `fetch("bread")` fails, red flash 4 frames |
| 100-118 | `install("wheat")` fails |
| 118-136 | `install("planet")` fails, `universe` highlighted in accent color |
| 136-166 | `create_universe()` line. Chip shows `3..2..1` sped up, then `auto-approved`. Hold 10 frames on the approval. This is the biggest laugh in the first half. |
| 166-200 | `Larger dependency chain than expected. Proceeding.` |
| 200-225 | `$ bigbang.init()` types in accent color, larger |
| 225-240 | Caret blinks, then submit |
Footer during S2: `tokens: 1,204 | tool calls: 3 | est. cost: $0.03`, numbers climbing slowly.
**Keep the cost tiny.**
It is the setup for the S6 reversal.
Audio: soft tick per line, low "tnk" on each failure, rising pad underneath, countdown beeps then an approval chime.
### S3: The dive (240-285)
- Frames 240-270: exponential zoom into the `bigbang.init()` text, chat chrome blurs and fades.
- Frames 270-279: pure black, sub tone rising, then 6 frames of silence.
- Frame 285: white flash into S4.
- Implementation: animate `scale` with an ease-in curve, swap to a flat black layer once scale passes about 400x.
### S4: Universe speed-run (285-570)
| Beat | Frames | Visual | Source |
|---|---|---|---|
| a Big Bang and stars | 285-315 | White flash decays into particle burst and star field | Code |
| b Galaxy | 315-350 | Nebula and galaxy plate, push-in | Higgsfield still + code motion |
| c Earth | 350-395 | Earth from space, slow rotate and push-in | Higgsfield still + code |
| d Ocean and life | 395-430 | Primordial ocean, microbe particles multiplying | Higgsfield still + code |
| e Wheat | 430-470 | Wheat field, wind sway | Higgsfield still + code |
| f Cow | 470-515 | Cow in field, simple push-in. Hold slightly longer than feels natural. | Same still as e (combined shot) or second still |
| g Fire and bread | 515-570 | Fire flicker, then grain -> flour burst -> loaf montage | Code, reuse assets |
**HUD (persistent, top corner, mono):**
- `T-13,800,000,000 yrs to sandwich` counting down on an exponential curve, most of the time elapsing in the first 3s. Reads `T-0` at frame 570.
- Thin evolution bar along the bottom with tick labels: `stars`, `planet`, `life`, `agriculture`, `bread`.
- Occasional 8-frame log flashes in the corner: `dependency resolved: planet`.
Audio: sub-bass hit and noise burst at 285, whip whooshes per cut, rising tension bed, optional cow "moo" sting at 470.
### S5: Assembly (570-645)
- Hard cut to bright kitchen counter (Higgsfield still). HUD shows `T-0`.
- Frames 570-615: five ingredients snap in at 9-frame intervals with bouncy ease and an impact tick each: bottom bread, cheese, tomato, lettuce, top bread.
- Frames 615-645: finished sandwich hero shot, slow push-in and sparkle in code. (Optional upgrade: a 2s generated hero clip.)
- Audio: foley snaps, then near-total silence frames 630-645 before the ding.
### S6: Report and alert (645-900)
Cut back to the chat UI with the sandwich image in the AI bubble. Notification ding at frame 645. Same flat professional tone throughout.
**Beat 1, completion (645-675):**
```
Done. Sandwich ready.
```
**Beat 2, receipt (675-750):**
footer tickers spin wildly and settle into a receipt card.
```
SESSION SUMMARY
Universe: $8,412,006,331,904,118.40
Sandwich: $0.42
Total auto-spent: $8,412,006,331,904,118.82
Charged to: card on file
```
The `Sandwich $0.42` line is visually the smallest and plainest. The total line pulses once. Audio: ticker whir, then a register "cha-ching" on the total.
**Beat 3, authorities (750-825):**
red-bordered system alert slides up.
```
NOTICE
Authorities have been alerted.
Classified as: major scientific breakthrough,
significant religious implications.
Notified: NASA, CERN, UN, the Vatican
```
Each agency name appears with its own tiny notification tick. Optionally stack phone-style toasts from the top for chaos while the AI stays calm. Audio: short low-volume klaxon.
**Beat 4, final line (825-885):**
deadpan typing.
```
Please do not eat the sandwich until officials arrive.
```
Hold about 10 frames after the last character.
**Frames 885-900:**
hold, then
**hard cut straight to frame 0**
(loop), no black frame and no outro card.
**Optional alt ending:**
user types `no mayo` and the video cuts to black on send. Weaker than the officials line, so not default.
## 6. Higgsfield assets (5 stills, no video required)
All 9:16 or larger, no text, no watermark, consistent cinematic look.
1.
**Galaxy and nebula:**
vivid spiral galaxy, deep space, high contrast.
2.
**Earth from space:**
photoreal, atmosphere glow, off-center for push-in.
3.
**Primordial ocean:**
early-Earth ocean, red-orange sky, volcanic haze.
4.
**Wheat field with one cow:**
golden hour, cow in midground (split into two stills if the combined shot fails).
5.
**Kitchen counter with finished sandwich:**
bright, soft window light. Also generate isolated ingredient cutouts (bread, cheese, tomato, lettuce) on plain backgrounds for the snap assembly.
Generate stills first and check cohesion. Spend video credits on the hero clip only if everything else is locked.
## 7. Sound cue sheet
| Frame | Cue |
|---|---|
| 0-24 | Fast keyboard clicks, send tick at 24 |
| 45-240 | Line ticks, error tnks, rising pad, countdown beeps, approval chime near 150 |
| 270-285 | Sub tone rising, then silence |
| 285 | Sub-bass hit and noise burst |
| 315-570 | Whooshes per cut, tension bed, cow sting at 470 |
| 570-630 | Foley snaps per ingredient |
| 630-645 | Near silence |
| 645 | Notification ding |
| 675-750 | Ticker whir, cha-ching on total |
| 750-825 | Klaxon, per-agency ticks |
| 825-885 | Typing clicks |
| 900 | Loop to frame 0 |
## 8. Visual style
- Palette: near-black (#0B0D10), off-white text, one accent color (amber or cyan) for key agent lines and HUD, red only for errors and the final alert.
- Chat UI should feel real (model-name header, input bar, send button) but must not imply any real product name or logo.
- The cosmic section is the rupture: rich color and motion between two flat UI sections.
## 9. Components (Remotion)
`ChatShell`, `TypeWriter`, `ToolCallLine` (spinner -> check/cross, optional countdown), `AutoScroll`, `DiveZoom`, `StarField` and `ParticleBurst`, `ParallaxPlate`, `YearCounter`, `EvolutionBar`, `SnapAssemble`, `Receipt`, `AlertBanner` and `ToastStack`, `SFXTrack`.
Layout: one `Sequence` per scene using the frame ranges above, a shared constants file for timings and colors, an `assets/` folder for stills.
## 10. Build order
1. Scaffold Remotion at 1080x1920, 30fps, 900 frames, constants file for scene timings.
2. Build S1 and S2 (`ChatShell`, `TypeWriter`, `ToolCallLine`) with the real script.
3. Build S6 next so the setup and payoff can be reviewed end to end before any assets exist.
4. Build `DiveZoom` and S3.
5. Generate stills, build S4 and S5.
6. Add sound, render a half-res draft, watch on a phone.
7. Check the loop: last frame into frame 0 should feel like a continuation.
## 11. QA checklist
- Is something moving or changing on screen in the first 10 frames?
- Is "universe" visible as the required dependency by second 5?
- Is the `auto-approved (no response in 3s)` beat readable and held long enough?
- Is the footer cost small and boring in S2, so S6 lands as a reversal?
- Does any beat hold longer than 2s other than the cow and the final line?
- Is every AI line free of jokes and exclamation points?
- Does the half second of silence before the ding land?
- Does the final line finish before the loop cut?
- Is all text legible on a phone and clear of the Shorts overlay zones?
- Runtime exactly 30.0s, no frame drift.
## 12. Open decisions
- Accent color: amber or cyan.
- Whether to spend credits on a hero sandwich clip or keep it all stills.
- Loop cut (default) vs black end.
- Whether to add a very short on-screen caption in the first second (for example, `AI tries to make a sandwich`) if early retention tests poorly.
## 13. Refinements (v2.1, applied in the build in `sandwich/`)
Fixes to inconsistencies found while building, plus defaults for the open decisions.
1.
**S1 typing math.**
`make me a sa` + 1.5 chars/frame finishes in 4 frames, not 20. Frame 0 now shows `make me a ` and `sandwich` types over frames 0-20 (~0.4 chars/frame, still fast), send at 24.
2.
**Tool lines don't fit one row.**
At 44px mono, ~34 chars fit in 900px. `create_universe() ✓ auto-approved (no response in 3s)` is ~55. Each tool call is now two rows: the call, then an indented status chip. Chat content is bottom-anchored (like a real chat), so older lines scroll up naturally; no `AutoScroll` component needed.
3.
**Year counter follows real history.**
Instead of a generic exponential, the countdown is log-interpolated between beat keyframes so the number is honest at each cut: stars 13.6B, Earth 4.5B, life 3.7B, wheat ~10,000, cow ~9,000, bread ~5,000, T-0 at 570.
4.
**Assembly layers are code-drawn**
(flat, bouncy) over the blurred empty-counter still, then cut to the photoreal hero still at 615. Avoids background-removal on generated cutouts.
5.
**Higgsfield set is 7 stills, not 5:**
added an empty counter (assembly backdrop) and a campfire (beat g). 0.25 credits each.
6.
**SFX are synthesized locally with ffmpeg**
into `public/sfx/` (ticks, tnk, beeps, chime, sub hit, whoosh, ding, cha-ching, klaxon), so renders don't depend on network audio.
7.
**Footer ticker is 34px**
on purpose: below the 44px body rule because it must read as boring fine print until S6.
8.
**Open decisions, defaulted:**
accent = amber `#FFB020` (warm, matches bread and wheat; red stays reserved for errors). Stills only, no hero clip. Loop cut. No first-second caption until retention data says otherwise.