← projects

Project case study

How we made the Injester launch film

shipped

A 90-second launch film in under a day. Script, character sheet, production bible, AI shots, coded graphics and a custom song, all cut to one beat grid.

film · 2026 · live ↗
Claude CodeFigJamRunwaySunoPlaywrightffmpeg

We made Injester’s launch film for Hacker News in one sitting: about 20 hours from a voice note to the web versions going up. Four masters came out of it, a 1:30 and a 30 second cut, each in 16:9 and 9:16.

Most of what made it work wasn’t a tool. It was a method I picked up at an AI artists workshop in SF, and a habit of watching every cut like a stranger would.

The method, in six steps

  1. Story first. A script before any pictures.
  2. One character, done properly. A character sheet and a world bible before any generation.
  3. One board for everything. A production bible in FigJam: story, cast, look, storyboard, shot list, score.
  4. AI for people, code for words. Generated video shows people, hands and light. Every word, number and logo is rendered in code.
  5. One grid for picture and sound. The song and the cuts share a 96 bpm beat grid.
  6. Watch it like a stranger. Thirty rounds of notes, each a short preview and a quick fix.

The story

The film follows Maya, who makes one backpack in a small Oakland studio. A commuter’s strap snaps, he asks his AI assistant for a replacement, and Maya’s bag, the right answer, never shows up, because the agent can’t confirm two facts her page never states plainly. Injester reads her store, she approves two updates, and the same request runs again. This time she’s in the answer.

The script came from three competing drafts, scored by three judges (a creative director, a target merchant and a Hacker News skeptic) and merged into one. Then a truth pass: every line on screen checked against what the product actually does. A few lines changed so the film never claims more than Injester delivers.

Page one of the screenplay Page one of the screenplay, in Fountain format.

Before anything was final, we rendered style frames to agree on the look: dark and quiet, one gold point of light for the shopping agent, Injester blue for the brand.

The first style frames The first style frames, rendered to agree on the look. The shop name, the copy and the numbers all changed later.

Maya and her world

Maya got a full character sheet: who she is, what she makes, what she wants, and the details that never change on screen (the mustard bandana, tortoiseshell glasses, a pencil in her hair knot). Every generated image starts from that sheet and a reference turnaround, which is what keeps her the same person across seven shots.

Maya's reference sheet Maya’s reference turnaround: front, three-quarter and profile.

Maya's seven first frames The seven first frames, all generated from the same sheet.

The bag got the same treatment. Generated versions drift (a pocket appears, the colour shifts), so every frame was checked against the reference.

The hero bag against two versions that drifted The hero bag, next to two generated versions that drifted.

The bible set the rules of the world: three moods (warm morning, the agent’s cold void, night), trains always moving left to right, seven colours with one job each, and the hardest rule of all, that no generated shot ever has readable text in it.

The production bible

The whole film lived on one FigJam board I could read from my phone: the four acts, the cast, the visual system, a storyboard built from real frames, the shot tracker and the score map.

The four acts The production bible: the four acts.

Who this is about Who this is about: Maya, the commuter, the agent’s spark, the Ribbon J and the bag.

How it looks and moves How it looks and moves: seven colours with one job each, type and motion rules.

The 1:30 storyboard and timeline The 1:30 storyboard, built from real frames, with the timeline underneath.

The pictures

Each live shot started as a still, generated from the character sheet with the same look line on every prompt (35mm film look, natural skin texture, shallow depth of field, no text, no logos). Runway’s Seedance model animated each one as a cheap 480p draft so we could judge the motion before paying for resolution, then upscaled the keepers to roughly 4K.

The seven shots that shipped The seven live shots.

Two fixes taught the most. The strap shot first ran as a wide of a man climbing stairs while his bag slid off, and it looked generated. A tight close-up of the webbing fraying and snapping worked. When the model scuffed his coat as the strap whipped, the fix was editorial: end the shot mid-whip.

The strap shot, before and after The strap shot: the wide that looked generated, and the close-up that shipped.

For vertical, cropping a wide shot cut Maya down to an arm. Runway’s Aleph extended those shots above and below the frame instead, so she stays whole in 9:16.

9:16: the crop that cut Maya off, and the extended shot Vertical: the crop that cut Maya down to an arm, and the extended shot.

All in, 33 Runway generations and about 1,950 credits.

The graphics

Everything that isn’t Maya’s footage is code. The film is a single web page where every scene is a function of time, and a script steps it forward one frame at a time and records it. That meant any note could be fixed by changing a line and rendering again, and a frame-by-frame diff could prove nothing else had moved.

The logo reveal got three versions side by side. The pick: the word injester lands, then the j’s hook becomes the Ribbon J, and the jester hat pops on the next beat.

The three reveal options Three reveal options, side by side.

The reveal The pick: the j’s hook becomes the Ribbon J.

The numbers scene took three designs. Every figure was traced to its source, and three tempting numbers were cut because they didn’t say what they seemed to. The final version keeps one bar and two numbers: $21B bought through AI in 2026 (eMarketer, US) and up to $5T in consumer goods orchestrated by AI agents by 2030 (McKinsey, global).

Earlier stats designs Earlier designs of the numbers scene. Both were replaced after the figures were checked at the source.

The final numbers scene The final numbers scene: one bar, two sourced numbers.

The last fix was small and very human: long messages ran out of the chat box. Now it grows upward, like iMessage.

The chat box after the fix The chat box after the fix, in 16:9 and 9:16.

The music, synced to the picture

The score is a custom Suno track: a sly swing tune with a Harmon-muted trumpet. I briefed it like a film composer’s spotting notes, tied to the picture’s act times, generated takes and picked one.

Then the sync. We mapped the song’s beats (96.48 bpm, first downbeat at 2.0 s) and its sections bar by bar, then fitted it to the edit by whole bars only, stretched by less than 1%, as one continuous take. Picture and music share the grid, so every cut lands on the music.

TimePictureMusic
0:00Maya’s studio, the strap snaps at 0:13.75Intro, then the muted trumpet
0:45The logo revealThe song turns: piano and vibes
1:05”Same request. Now Maya’s in the answer.”The open trumpet comes in
1:30End cardFinal hit, exactly on the frame

The song's sections against bar lines The song’s sections against its bar lines: the turn at bar 19, the breakdown and the open trumpet.

The brief asked for two dramatic silences. On the first real listen, both felt like mistakes, so the music now plays straight through.

The first 52 seconds of music, before and after removing the gaps The first 52 seconds of music, before (amber) and after (blue) removing the two gaps.

Thirty rounds of notes

Thirty notes shaped the film, and most were one line: “looks too AI”, “awkward cutout in the music”, “just zoom out to capture Maya completely”, “the words go off the text box”. Each one came back as a short preview of just the changed section, usually within half an hour. For taste calls, I got two or three real options side by side and picked one.

The finished 1:30, frame by frame The finished 1:30, frame by frame.

What I’d tell anyone making one

  • Watch it like a stranger. None of the real problems showed up in a spec. All of them showed up on a fresh watch.
  • Make it re-renderable. When every graphic is code and every cut is a line in a list, a late note is a five-minute fix.
  • Put picture and sound on one grid from day one.
  • Check every number. A launch film is the worst place to be wrong in public.
  • Ask generated video for simple things. A tighter shot beats a better prompt.
  • Build options, then pick. Choosing between real versions is faster than arguing about one.

Thanks to James Yin for the workshop that started it.