Soundstage

Demo video

Watch the product walkthrough

In-progressNext.js 16React 19TypeScript+9 more

Soundstage

A studio for Indian D2C brands and agencies: speak a brief as a voice note in Hindi, Hinglish or English, and get an on-brand 9:16 reel, written, voiced, rendered and scored by an AI reviewer before you see it

Timeline

November 2026

Role

Creator

Team

Solo

Status

In-progress
Live Demo

Technology Stack

Next.js 16
React 19
TypeScript
Supabase
PostgreSQL
Claude
Gemini
Gnani Prisma and Timbre
HyperFrames
Python
ffmpeg
Tailwind CSS

Key Challenges

  • Voice Brief to Finished Reel
  • An Honest AI Reviewer
  • Claims Only From the Catalogue
  • One Look per Reel
  • Many Reels on One Small Server
  • Agency Data Kept Apart

Key Learnings

  • Agent Loops With a Separate Judge
  • Video as Code (HTML Frames to MP4)
  • Code-mixed Speech in Indian Languages
  • Postgres as a Job Queue
  • Row-level Security in Practice
  • Product Film Production

Soundstage: your film crew, in a voice note

Overview

Soundstage turns a spoken brief into a finished brand reel. A marketer records a voice note the way they would on WhatsApp, in Hindi, Hinglish or English, rambling included. Soundstage writes a script from the brand's own catalogue, voices it, renders a 9:16 reel for Instagram Reels and YouTube Shorts, and has a separate AI reviewer score it before anyone sees it.

I built it solo for Gnani AI's Great Indian AI Internship Challenge. Gnani's models do the speech: Prisma v3.0 hears the brief, and Timbre v2.5 voices every line.

The video above is one real run, filmed unedited and sped up only while the AI works. The brands in it, Brewhouse and PulseFit, are demo brands, and the voice notes use synthetic voices.

The 52-second launch film.

Why I built this

A brand ad usually takes an agency about three weeks: a brief, a script, casting, a shoot and an edit. Small D2C brands make many reels a month and cannot afford that loop for each one. What they do have is a founder or a marketer who can describe the reel in thirty seconds.

The hard part is not generating a video. It is making one a brand can post: the right product, the right price, nothing invented, and a cut that holds attention. So Soundstage is built around a reviewer that is strict by default.

What it does

StepWhat happens
BriefSpeak or type the brief. Gnani Prisma transcribes it code-mixed: English stays Latin, Hindi stays Devanagari.
ScriptA Director agent writes a short script from the brand's catalogue and photos. It may only claim what the catalogue says.
ApproveIn story mode you approve a still for every shot, or change the plan in plain words. One typed note, "cafe mein karo" ("do it in a café"), moved the whole plan in 12 seconds.
RenderThe reel is built as HTML and animation timelines, then rendered frame by frame to MP4, with word-timed captions and Gnani Timbre voices.
ReviewA separate reviewer watches the render: 10 weighted criteria and 9 hard gates (no invented claims, no blank frames, no overlapping text, the right language), 85/100 to pass.
FixBelow 85, the reviewer writes fixes with timestamps, and the Director renders again.
LookPick a look from the style library: Kinetic, Diary, Risograph, Chalkboard, Keynote or Swiss. The same story changes paper, type, photo treatment, labels and cuts.

Results

  • A 14-second Hinglish voice note became a reel scored 91.8/100 in 3 minutes 36 seconds of real run time.
  • A rambling 35-second Hindi note scored 67.5 on its first round, was sent back with timestamped fixes, and scored 93.8 on the second.
  • A gym-brand reel went from 83.8 to 96 after the reviewer's fixes.
  • Across 59 measured runs, the median run took 6.1 minutes, and the Director's model cost was a median of $0.46 per reel.

How it works

Technical architecture

Core components, runtime flow, and durability boundaries.

The Studio runs on Vercel. Supabase holds the data and the files: agencies, brands, assets, reels, run steps and a job queue, with row-level security so each agency sees only its own work. The engine runs as a worker on a small VPS. It takes jobs from the queue, rebuilds the brand from Supabase, runs the Director, and uploads the finished reel and every step of the run, which the Studio shows live.

Engineering decisions

The judge is not the author

The Director and the reviewer are different models with different instructions. The reviewer starts from what the reel actually does, must name a time and a flaw for every point it takes away, and fails the reel outright on a hard gate, whatever the score. Its fixes go back to the Director as data, not as a suggestion.

Claims come from the catalogue, checked in code

Prices, offers and specs may only come from the brief, the brand's catalogue or its profile. The tools that write the script and build the reel refuse a number they cannot trace, so an invented price never reaches the render.

Video as code

Each reel is a web page with animation timelines keyed to the spoken words, rendered frame by frame to MP4. That makes every frame repeatable, testable and cheap to change, and it lets a look from the style library restyle every scene through one CSS layer.

Most of a run is waiting

A run spends about 84% of its time waiting on models: the Director, the reviewer and the voices. Only the build and the render use the CPU. So one 4-core worker runs several reels at once, and a lock lets only one of them render at a time.

Postgres is the queue

Jobs are rows. A worker claims one with FOR UPDATE SKIP LOCKED, renews a lease every 15 seconds, and a worker that dies loses its lease, so the job goes back to the queue. Leases belong to one attempt, so a worker that lost its job can never finish someone else's.

Agencies stay apart

Every table and file path is guarded by row-level security. Users write through database functions that check membership, limits and inputs. The worker holds the only service key, and it refuses any file path outside the brand it is working on.

Testing

The engine has 551 automated tests, including the reviewer's rubric, the reel builder's refusal rules, the worker's path checks and the CPU lock. The database has SQL checks for the queue, access between agencies and file keys, each run in a transaction that is rolled back.

Access

The landing page is public, and the Studio is invite-only while it is in testing. The source code is private.

“A man who is master of patience is master of everything else.”

~ George Savile

Made with ❤️ by Mohit Goyal
© 2026. All rights reserved.