Myles Franklin
Things I’ve built
Desktop + web

Vertical Generator

A studio for vertical drama. Paste a script and it casts, plans, generates, reviews, and upscales every shot to 1080p.

Role
Sole engineer
Built
3 days · Oct 2026
Ships as
Desktop + web
Output
1080 × 1920
Vertical Generator storyboard beside an upscaled 9:16 take of a woman in a rainy diner
  • Electron
  • Cloudflare Durable Objects
  • Gemini video
  • SeedVR2

Vertical micro-dramas are a booming format, but making one with AI video is still mostly copy-pasting prompts and hoping the lead actor has the same face in shot nine as in shot one.

Vertical Generator is a studio that turns a screenplay into finished vertical takes. You paste a script and it finds the cast, gives each character a consistent face, plans every shot with real coverage, verbatim dialogue, and sound design, then generates, scores, and upscales the takes. You stay the director: pick the best take, fix one with a single line of chat, and download it.

A full project, start to finish. Sped up 1.35×.
Days to build
3
Tests passing
186
Lines of code
24k
Takes at once
4
01

From script to screen

  1. Script

    Paste a screenplay. The studio reads it and identifies every character.

  2. Cast

    Upload photos or generate portraits. Each character gets the same face from three angles plus an outfit, so they stay recognizable across shots.

  3. World

    Locations and props feed a “world bible” that pins down wardrobe and set dressing scene by scene.

  4. Look

    Choose from four visual treatments, each previewed with its own generated still.

  5. Storyboard

    Every shot is planned with direction, verbatim dialogue, and sound, ready to generate.

  6. Generate and review

    Render up to four takes per shot. Each is scored automatically and the best one is shown first.

  7. Fix, upscale, download

    Edit a take with one line (“make him look at her”), upscale it to 1080p on a GPU, and export.

02

Architecture

  1. InterfaceOne UI, two hosts
    • React 19
    • TypeScript
    • Shared core: jobs, planner, review
  2. DesktopSolo, local-first
    • Electron
    • node:sqlite
    • Typed preload bridge
  3. WebSmall teams, live sync
    • Cloudflare Workers
    • Durable Object + SQLite
    • WebSockets
    • R2 ⇄ Cloud Storage
  4. Models
    • Gemini video
    • Gemini planning + review
    • Gemini image portraits
  5. UpscalerOn-demand GPU
    • SeedVR2-7B
    • Daytona sandbox
    • RTX PRO 6000
03

Engineering details I’m proud of

  1. 010 blind retries

    Never pays twice by accident

    Every video call costs money, so the job runner never retries an uncertain request. A clear error fails the job; silence gets flagged for a human instead of a second charge.

  2. 023 GPU tiers

    GPU fallback that can’t double-book

    The upscaler tries GPU tiers one at a time and moves on only after an explicit refusal. A timeout never triggers a second machine, because the first may already exist.

  3. 03~10 s cold start

    A GPU image built from code

    The upscaler server is baked into an inline Dockerfile with 16 GB of model weights. A test fails if the two drift apart, and a cold GPU is ready in about ten seconds.

  4. 044/4 blind wins

    Quality you can measure

    The world bible won 4 of 4 blind A/B tests, lifting wardrobe consistency from 4.3 to 7.0. Weak takes get their review notes rewritten into positive direction for the next try.

  5. 05−17% cost

    The cheaper GPU won on evidence

    An RTX PRO 6000 matched an H100’s output (SSIM 0.98) for about 17% less per upscale, so it became the default.

  6. 06live sync

    Safe for a team

    One Durable Object holds each studio and pushes changes over WebSockets. It catches a teammate editing the same project and shows a bar when a new version ships.