← STUDIO

01 · Generated video

The Evolution of Financial Decisions

Working title Old Brain, Young Money. A documentary built shot by shot from generated video, with the narration recorded before any picture and every quoted claim traced to an archived source.

The thesis, in Tony's words: money is a young, man-made object next to the long history our bodies evolved in. Fear and greed were built for lions, not markets, and the modern world amplifies the misfire. The way through is to understand human nature, transfer risk to institutions, time and a diversified market, and practise small decisions often.

9:29.8 dev cut 1 · 1 Oct 2026
47 generated shots · cold open + 4 chapters
9:06 narration · Fish Audio voice "Anthony"
27 / 27 quotes audited against archived copies
8 script drafts, each marked up by Tony
Not yet released three gates still open, listed at the end

The pipeline, in order

1  Thesis 2  Sources 3  Script 4  Narration 5  Shot list 6  Character 7  Model tests 8  Shots 9  Edit 10  Sound 11  Verify 12  Assemble
01

Start from the owner's thesis, not a prompt

Tony stated the thesis in one capture on 25 September. It was filed verbatim and became the spine of the film. The ending was decided before a single shot existed: the truth stays in the film, the invitation goes on the end card.

apex-philosophy/captures/2026-09-25.md · Linear project "The Evolution of Financial Decisions" · quality bar: a high-end documentary reference clip Tony supplied

02

Research under one rule: nothing enters the narration unless it traces to a row

A sources file holds every person and fact. Quotes marked VERBATIM must be exact substrings of the archived copy of the page, and a script checks that mechanically. Paraphrases say they are paraphrases. The file also records what the script may not say: Markowitz's 50/50 split is stated only for 1952, because he later said "Now I don't do that"; Ted Benna does not blame the 401(k) for killing pensions.

Measured 27 of 27 quotes passed the audit on the full script. Sources archived under research/raw with provenance notes; Markowitz 1952 and 1991, Benna NPR 2009 and Fortune 2024, Kahneman and Tversky 1979, Kuhnen and Knutson 2005, Fliessbach 2007.

research/sources.md · research/audit_quotes.py · research/raw/

03

Eight drafts, each marked up by the owner

Draft 01 was the cold open and chapter one. Draft 06 was the full film at 9:57. Tony approved a target near 9:15 and draft 07 made four cuts to reach it. The structure that survived: a cold open at two in the morning, then One · Built for Lions, Two · Fear and Greed, Three · The Storm, Four · The Way Through, and a close.

script/draft-01.md … draft-08.md · script/directions.json (per-line pacing)

04

Record the narration first. It is the clock for everything after

Tony picked the voice from Fish Audio: "Anthony", at speed 0.85, sentence by sentence. A voice tool caches every sentence take keyed by voice, speed, model and text, so a re-rendered draft only re-records the lines that changed. A re-roll tool takes several takes of a line and keeps the one nearest the target pace. Every clip is checked with Whisper clip by clip, because Whisper on the long joined file both loops and drops words.

Measured Narration 9:06.1. The computed total from the take cache matched the rendered file to the frame, which is what lets the shot list be timed before any picture exists.

tools/voice.py · tools/reroll.py · audio/cache · audio/drafts/draft0N-narration.mp3

05

A shot list timed from the cached takes

Every row starts at the sentence it illustrates and carries its kind: B-roll, character, clock, UI, scan, graphic or reuse. The kind decides the route: generated video for B-roll and character shots, designed screens for phone UI and data cards, real anatomy for the brain scans, HyperFrames typography for chapter cards. The edit adds a 4 s pre-roll and a 9 s title and end card.

Measured About 382 seconds of generated picture across 31 B-roll, 7 character, 4 clock, 6 UI, 15 graphic, 8 scan and 3 reuse rows. Film length computed before production: 9:19.

script/shotlist.md · script/shotlist.json · tools/shotlist.py

06

Lock the character before generating a frame

The film follows one woman. Her identity is carried by a canonical FACE paragraph pasted verbatim into every prompt; only wardrobe and scene blocks change. A character sheet of stills (front, three-quarter, profile, eye close-up, full body, morning and night wardrobe) is the reference set for every later reference-to-video call.

visuals/character/her.md · sheet A-01 … A-07 · Seedream 5 Pro stills via Renoise

07

Test each model on each shot type before spending on production

A paid test batch ran the same shots through Seedance 2.5 and MiniMax H3 Max. Seedance gave smooth motion and the best identity, but a scene reference hijacked the composition. H3 Max gave strong B-roll but inserted a hard cut inside a two-action character shot. Rules that came out of it: characters get identity references only and one action per shot; B-roll goes to H3. Price lists for every route were read from the vendors' own pages and recorded next to the decision.

Measured Test batch 02: 520 credits. HeyGen Video 1 (a post-trained MiniMax H3) later ran chapters two to four on the subscription login at about 0.43 credits per generated second, one take per shot, balance read before and after every job so the cost is measured, not estimated.

visuals/tests · tools/runway_i2v.py · tools/heygen_video.py · tools/gen.py · tools/rn (Renoise CLI)

08

Generate the shots, chapter by chapter, keeping the record beside each file

Each generated clip is written with its prompt, its request, its task record and a line in the chapter log. Where a real object exists it is used instead: the first coin is a real Lydian gold stater from The Met's open-access collection; the brain is real MNI152 anatomy swept by a scan tool with glows placed at published coordinates; the payment screens are a captioned reconstruction of the 2007 experiment.

Cold open · 4 shots · Seedance 2.5 ×3, H3 ×1 Ch 1 · 10 shots · Seedream still → Runway H3 image-to-video Ch 2 · 11 shots · HeyGen Video 1 · 29 credits Ch 3 · 15 shots · HeyGen Video 1 · 35 credits Ch 4 + close · 7 shots · HeyGen Video 1 · 23 credits

visuals/coldopen · visuals/ch1 … ch4 · visuals/scan · tools/scan.py · each clip: .mp4 + .prompt.txt + .request.json + .task.json + LOG.md

09

Edit in HyperFrames, one project per chapter, cuts on sentence beats

Each chapter is a HyperFrames project with a sub-composition per scene. The timeline is generated by a build script from the take cache, so every cut lands on the sentence it belongs to. Screens that must be accurate are designed, not generated: the phone lock screen with fictional alerts, data cards from the Fed, SSA, CDC and BLS, a Benna NPR card, an assistant chat scrolling at two pixels a frame. Chapters two to four share one library so the timeline code exists once.

edit/cold-open · edit/ch1 … ch4 · edit/lib/timeline.py · edit/lib/comps.py · tools/build_index.py per chapter · npx hyperframes check

10

Sound pass: a bed carved under the voice, effects measured by peak

A generated music bed is carved under the narration with a voiceover group so the voice always wins. Clock, heartbeat, wind and the lion were generated as sound effects; two hits came from a stock library. One lesson is now a rule in the script: asking a sound model for something "quiet" returns a near-silent file, so every effect's peak is measured before it is placed.

carve.mjs (group voiceover) · tools/runway_sfx.py · tools/audio_levels.py (fails on a lane mismatch)

11

Verify by instrument, then by the owner's eye

A chapter verifier was calibrated first on a chapter known to be good and a version known to be bad, so a pass means something. It transcribes the delivered render and requires every narrated word to be recognised under the mix, requires no sentence to be buried, and reads loudness. Tony's review then fixed what no instrument flagged: a slow zoom that made phone text shake, and a scanner hum that ran too loud and too long.

Measured Calibration: chapter one v4 scores 214 of 214 words with nothing flagged; v3 correctly flags the buried scanner sentence. Every chapter render: all words heard, music and effects at least 12 dB under the voice in every sentence, about −14 LUFS.

tools/verify_chapter.py · ch1-v4 · cold-open-v5 · ch2-v1 · ch3-v1 · ch4-v1 · phone copies for review on Remote Control

12

Assemble, levelled in the joined file

An assembly tool joins the cold open and four chapters and levels each part by plain gain to −14.0 LUFS as measured in the joined file, peak −1.0 dBFS. The result is dev cut 1 at 9:29.8 with a 480p phone copy for review. The end card still reads "text to come".

tools/assemble_film.py · edit/film/renders/old-brain-young-money-dev1.mp4 · git: every step is a commit in the project repo

Gates before anyone outside sees it

  • Narration re-rendered on a paid Fish Audio model. The free model is licensed for non-commercial use only, and development ran on it by Tony's choice.
  • HeyGen Video 1 commercial terms confirmed for the generated shots.
  • Tony's end-card text.

What this workflow taught the studio

  • A vendor's documentation sentence licenses nothing about what a given login can do. One authenticated call settled in a minute what three doc reads could not.
  • In the renderer a volume lane is absolute gain; sixteen tracks had played at full level until a tool was written to fail on the mismatch.
  • Keep the scratch work in the project repository. Sources saved to a temporary folder were lost on a session resume once, and never again.