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

- 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.
- Days to build
- 3
- Tests passing
- 186
- Lines of code
- 24k
- Takes at once
- 4
From script to screen
Script
Paste a screenplay. The studio reads it and identifies every character.
Cast
Upload photos or generate portraits. Each character gets the same face from three angles plus an outfit, so they stay recognizable across shots.
World
Locations and props feed a “world bible” that pins down wardrobe and set dressing scene by scene.
Look
Choose from four visual treatments, each previewed with its own generated still.
Storyboard
Every shot is planned with direction, verbatim dialogue, and sound, ready to generate.
Generate and review
Render up to four takes per shot. Each is scored automatically and the best one is shown first.
Fix, upscale, download
Edit a take with one line (“make him look at her”), upscale it to 1080p on a GPU, and export.
Architecture
- InterfaceOne UI, two hosts
- React 19
- TypeScript
- Shared core: jobs, planner, review
- DesktopSolo, local-first
- Electron
- node:sqlite
- Typed preload bridge
- WebSmall teams, live sync
- Cloudflare Workers
- Durable Object + SQLite
- WebSockets
- R2 ⇄ Cloud Storage
- Models
- Gemini video
- Gemini planning + review
- Gemini image portraits
- UpscalerOn-demand GPU
- SeedVR2-7B
- Daytona sandbox
- RTX PRO 6000
Engineering details I’m proud of
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.