Answer First

Barbara Minto and the Pyramid Principle

Source on GitHub

3 min 50 s · square, made for the feed · captions burned in · no photographs, no stock, everything drawn from code

The idea

The Pyramid Principle is one of the few ideas from management consulting that has genuinely lasted, and the woman who wrote it down is barely known outside the industry. This is a four-minute film that tries to fix that, and it was made almost entirely by an AI team working under a human director.

Three constraints shaped it. The film had to be built in code, so that scenes could be inserted, removed or re-ordered by editing a file rather than a timeline. It had to practise what it preaches: answer first, then three supports, then next steps. And it had to earn its place in a feed that autoplays muted, so every idea had to land as a picture, with the voice as reinforcement rather than the other way round.

The director set the goals, made every taste decision and vetted every claim. The coordinating agent (Claude Code, running the Fable 5.1 model) did the research, wrote and rewrote the script, built the pipeline, and ran a team of sub-agents for building, reviewing and polishing. What follows is the honest version of how that went, including the cut that got rejected.

How we made it

Seven passes, in order. The full working documents, from the research dossier to every review, are in the repository under docs/process.

  1. Brief, then research

    We agreed the audience, the length ceiling, the square format, a text-to-speech narrator and the self-referential structure before writing a word. Then research: every biographical fact and every number went into a dossier with a confidence grade and a source, and anything the director could verify from experience was flagged for them rather than taken from a website.

  2. Script v1 and a first prototype that was rightly rejected

    The first script was written the way you'd write slide headlines: short fragments, one per beat. The first cut had one designed scene and eleven placeholders showing the narration as text, with a synthetic voice that ran straight through every full stop. The director's verdict was blunt and correct. The lesson stuck: never show scaffolding, and never let the words on screen be the words being spoken.

    The single designed scene of the first cut, on a paper-and-ink palette
    First cut · the one designed scene
    A placeholder scene from the first cut showing the narration as body text
    First cut · a placeholder scene
  3. Rebuild with a team, adversarially

    Script v2 went to an adversarial editor and a panel of three simulated viewers (a product manager, a sceptical ex-consultant, a second-year analyst, all on a phone with the sound off) before any audio existed. Their notes produced v3. Then five builder agents each took two scenes, working from a storyboard that specified what is on screen during every beat, with one rule above all others: nothing on screen may repeat the narration except the captions. Each builder verified their scenes with rendered stills and contact sheets before reporting.

  4. Review the render, not the plan

    The first full render was reviewed by the viewer panel again and by a motion-designer critique, both working from contact sheets (one frame every two seconds). They returned twenty-five ranked fixes with timestamps: top-loaded frames with dead space beneath, static holds while the voice moved on, a caption box that fought the page, colliding labels. Every fix went back to the builder who owned the scene.

    A contact sheet of the film, one frame every two seconds
    How an AI reviews a film · one frame every two seconds
  5. The script, again, as speech

    The picture was now good and the words were not. Fragments that read fine on a page sounded like nobody when spoken. A "clean editor" pass read every line aloud, rewrote the whole script as full sentences with natural connectives, put pauses only where a speaker would breathe, and removed every claim that had drifted past its source. Two whole scenes were cut at this stage because they were clever rather than useful, and the three closing "next steps" were rewritten by the director.

  6. Style, decided from stills

    The first dark palette drifted too close to a well-known consultancy's look, sweeping line-work and all. Rather than argue about it in words, we rendered the same three frames under every candidate: four palettes, six accent colours, five type pairings, three title treatments. The director chose from the sheets. Nothing was fully rendered until the look was settled.

  7. Polish and land it

    The remaining passes were the kind a human editor would make: a section tracker instead of a slide counter, a numbered margin that actually occludes the line behind it, a bridge sentence so the hook doesn't jump from a buried recommendation to a woman at McKinsey without a promise in between. Four renders later, it was done.

Style

Slate rather than navy. One amber accent, used only where something is the answer. Newsreader for the big statements, Jost for everything else. No photographs, because none could be sourced with clear rights; the origin chapter is told entirely in type and motion. Every colour and typeface is a token, switchable by environment variable, which is what made the comparison sheets cheap.

Four palette options rendered on the same frames
Palette options
Six accent colours rendered on the same frames
Accent options
Five type pairings rendered on the same frames
Type pairings
Three title treatments
Title treatments

Technical details

PictureRemotion 4. One React component per scene, assembled in a transition series with short crossfades. A recursive pyramid layout with a camera transform drives every tree, push-in and morph. Rendered with Remotion's bundled headless Chrome and ffmpeg on WSL2.
NarrationKokoro-82M, an open-source text-to-speech model, voice af_heart. The script is stored as beats; each beat is synthesised separately and followed by a real silence, which is how the voice breathes. Kokoro's word timestamps drive both captions and animation cues. An inline phoneme override makes MECE sound the way Minto says it.
Checking the voicefaster-whisper transcribes every generated clip and diffs it against the script, so a mangled word is caught without anyone listening.
SyncScene durations are derived from the audio manifest. Scenes key their motion to spoken words (cue(scene, "phrase")) or beat boundaries, so regenerating the narration never breaks sync and re-ordering scenes is a one-line edit.
Review toolingA Python script renders one frame every N seconds into tiled contact sheets with timestamps. That, plus single stills, is how agents "watched" the film.
OrchestrationClaude Code with the Fable 5.1 model as coordinator; forked sub-agents as builders (one per pair of scenes), adversarial editor, simulated-viewer panel, motion-designer critic and clean editor. Builders own files; reviewers write ranked fix lists with timestamps.
HardwareA desktop PC, Windows with WSL2, one consumer GPU for the TTS and transcription models.
FontsNewsreader and Jost via Google Fonts, loaded through Remotion's font package at render time.

The pipeline in one screen

src/scenes.json ──▶ scripts/narration/generate.py ──▶ public/audio/<scene>.wav
   (beats)                (Kokoro, edge-trim, pauses)      src/generated/narration.json
                                                             (durations, word + beat timings)
                                                                        │
src/scenes/*.tsx  ◀── cue() / beatStart() ◀── src/narration.ts ◀────────┘
        │
src/Root.tsx ──▶ npx remotion render ──▶ out/answer-first.mp4
        │
scripts/review/contact_sheet.py ──▶ out/review/*-sheet-NN.png  (what the reviewers read)

Reuse it

The repository is meant as a starting point for the next film. Change the script in one JSON file, regenerate the narration, and the scenes re-time themselves. Swap the palette or the type with an environment variable. Add a scene by adding a file and one line.

If you are an AI agent picking this up, read AI-START-HERE.md first. It is a note from the agent that made this to whoever makes the next one: what worked, what got rejected, and the questions to ask the human before starting.

The working documents

Everything below is in docs/process/ in the repository, lightly sanitised but otherwise as written during the work.

“The pyramid is a tool to help you find out what you think.”

— Barbara Minto