← Back to Portfolio

Case study

Creator OS

A one-person production studio for AI content: it writes, draws, narrates, edits, publishes and measures video, and it runs most of the work on a local GPU instead of a metered API.

Role
Solo: product, architecture, UI/UX and full-stack engineering
Timeline
Aug 2026 – present
Tech Stack
Next.js 16, React 19, TypeScript, Prisma, PostgreSQL, FFmpeg, Python GPU servers, MCP
  • ~130klines of TypeScript
  • 19MCP tools for an LLM
  • 31database models
  • 4social platforms
  • 12provider integrations + local models

The challenge

Running a faceless content business means doing a dozen different jobs: finding topics that have not been covered, writing and fact-checking a script, drawing consistent characters, narrating, editing, adding sound, publishing to four platforms on a schedule, and then learning from the numbers. Each job normally lives in a different tool, and each tool bills you per use.

I wanted one system where the whole loop lives together, where the cost of every step is visible before it is spent, and where an LLM can drive the creative work while the application does the heavy production safely.

The solution

Creator OS is a Next.js application with a background job queue, a local-first model layer and an MCP server. It turns an idea into a finished vertical or horizontal video through a staged pipeline, lets me review the output at every stage, and publishes and measures the result.

The expensive stages (images, voice, sound effects, transcription, upscaling) run on models hosted on my own GPU. Paid providers are optional per stage, and an estimated cost is shown before anything is spent. A single laptop does the production while a small VPS keeps the public side online, both sharing one PostgreSQL database.

From idea to published video

Every stage can be inspected, redone on its own, switched off or routed to a different model.

  1. 01

    Topic

    Verified, non-duplicate topics with sources

  2. 02

    Script

    Scenes, hook and the creator’s own angle

  3. 03

    Cast

    Fixed characters with researched traits

  4. 04

    Keyframes

    One image per shot, redrawable

  5. 05

    Motion

    Animated shots or camera moves

  6. 06

    Voice

    Narration, subtitles and word timing

  7. 07

    Sound

    Effects, ambience and music

  8. 08

    Montage

    Transitions, inserts, captions

  9. 09

    QA

    Automatic and LLM review

  10. 10

    Publish

    Schedule, post and measure

Modules and features

The application is organised in modules. These are the ones that matter, with the real interface. Click any screenshot to enlarge it.

Create

Three ways to produce original video, from a one-minute short to a ten-hour ambient loop.

Create with AI: short videos

/create

From a single idea to a 60-second vertical video with a script, a fixed cast, twelve shots, narration, music and captions. The gallery filters by review state, curated clips and the ones that passed the MCP quality check.

  • Story tab: the idea, an opening title burned into the first seconds, the script with its sources and an optional “Your angle” so the video carries the creator’s opinion.
  • Formats: story, educational, tutorial, on-camera presenter and ad, with selectable pacing, duration, visual style, language and music mood.
  • One video per language: ticking more languages redoes only narration and subtitles and reuses the shots, so the second language costs a fraction of the first.
  • Opening headline generator, saved style presets and a character library that can be reused across videos.
  • Regenerate a single shot, redraw only the image, lock a shot, or rebuild the whole video from the same card.

Storyboard, cast and render control

/create/[id]

The video card is a full editing room. It exposes every decision the pipeline made and lets me change any of them without starting over.

  • Storyboard: per-shot text, camera framing, transition, duration, regenerate/redo image only, “use my own file” and the prompt behind each image.
  • Inserts: AI-drawn objects that pop in exactly on the spoken word that names them, with their own shape, entrance and exit animations.
  • Per-shot sound design: effects from the library or written by hand, plus cut hits (whoosh, impact, pop) at the transitions.
  • 14 transitions in 11 distinct styles with a preview gallery and an automatic planner that uses every style before repeating one.
  • Cast: characters are researched when the script is written, and their traits and seed are copied into every prompt so faces stay consistent from shot to shot. Voices can be designed, picked from local catalogues, or recorded by hand.
  • Render: every stage (voice, motion, lip sync, upscale, music, keyframe review) can be toggled, with a live cost estimate and per-stage model tuning against a recommended default.

Long videos

/largos

Horizontal pieces from a few minutes to hours, written by chapters, with a constant presenter, narration, music and ambience. A camera moves over each image looking for the faces and the objects the narration mentions.

  • Three modes: sleep stories (20 min to 3 h with rain underneath), relaxing sounds (30 min to 10 h with no narration) and horizontal explainers.
  • The explainer example in the screenshot is 9 minutes, 7 chapters and 84 scenes, with chapters exported ready to paste into a YouTube description.
  • Relaxing videos assemble one five-minute cycle and repeat it without re-encoding, so ten hours cost almost the same as one.
  • “Prepare the scenes and review them” writes everything and stops before spending any credit; producing is a separate decision.
  • Optional animated scenes with Google Flow (Veo), looped to last as long as the narration, plus up to five layered sound beds and optional music.

Playground

/playground

An isolated sandbox for trying styles, models, voices and sounds without touching the production timeline. Anything worth keeping can be sent to a real video.

  • Image lab with more than 15 visual styles, five aspect ratios, a prompt enhancer and engines from local FLUX.2 Klein, Z-Image Turbo, SD 3.5 and a 3D-cartoon checkpoint to cloud models.
  • Video lab for dynamic camera and effects, with a generated image sent straight from the image lab.
  • Voice lab with audition cards for a curated set of voices, plus voice design from a text description.
  • Audio lab for effects and music, and an MCP studio that builds and validates the exact payload an LLM would send.
  • Isolated history stored in the browser, so experiments never pollute the production library.

Repurpose and sound

Turn existing footage into shorts, and generate every sound layer on the same machine.

Clips: long video to shorts

/clips

Paste a link or upload a video and get ready-to-post vertical clips. The model picks the moments, and everything mechanical is done by FFmpeg locally.

  • Transcription with Whisper, automatically using a local GPU server when it is running and falling back to the OpenAI API when it is not. The interface states which one is in use before you press the button.
  • Moment detection and scoring on hook, rhythm, value and trend, with an explanation of each score.
  • Auto reframe from 16:9 to 9:16: it follows whoever is speaking, shows two people stacked when they answer each other quickly, and fits slides or screens on a blurred background instead of cropping text.
  • Tighten the cut by removing silences and filler words, with automatic punch-in zooms placed on the jump cuts so edits look intentional.
  • B-roll chosen by a text model and fetched from a stock library, burned captions with presets, translated subtitles per language, a branded outro card with voice, and a brand kit with logo, handle and colours.
  • A clip editor with a timeline, a transcript you edit as text, subtitles, titles, resources and hook tools, and saved presets for the whole panel.

Sound and music

/sfx

Three layers that sound in a video, generated on the local GPU and saved in a searchable library: the effect of a shot, the continuous ambience and the music track.

  • Effects up to 30 seconds with MOSS-SoundEffect, ambience beds, and music from Lyria, ElevenLabs Music or local models.
  • The library keeps prompt, duration, model, number of videos using each track and an audio player, with trim-and-save to create a new asset.
  • The same pipeline the renderer uses, so what sounds good here sounds identical inside a video.

Commerce

Three modules that turn the same generation tools into products people can buy.

POD AI: print on demand

/pod

Designs for t-shirts, sweatshirts, stickers, mugs and posters: drawn, reviewed twice, converted into a print file and published, then tracked until sales show which designs earn money.

  • State machine from drawing to published, with review of the candidate and a second review of the final print file over the garment and over grey.
  • Real-ESRGAN upscaling to print resolution (4500×5400 at 300 ppp), clean cut-out from the background and automated checks for halo, holes, cropped edges and ink coverage. A failed check blocks approval.
  • Titles and tags for each listing, grouping, filters by potential score and batch export, plus publishing through Printify to Etsy.
  • Economics tab: AI spend, cost per winning design, per-model comparison for A/B tests, break-even assumptions and the conditions to decide when to scale.
  • An LLM can create and review designs through MCP while drawing stays on the local GPU.

Stock Tagger

/stock

Turns a batch of JPG files into agency-ready uploads: two sizes, AI title, description, keywords and categories embedded as metadata, and the CSV each agency expects.

  • Resizes to a 4K and a Light version, embeds XMP and IPTC metadata with ExifTool and writes the CSV.
  • Targets Adobe Stock, Dreamstime, Shutterstock, Freepik and Pond5, with each agency’s own rules for AI-generated content.
  • Vision models from Gemini or a local Ollama server, with live elapsed time, cost counter and terminal log.
  • Metadata viewer, CSV optimiser and repair tool, and a history of past runs.

Stock video assets

/assets

Video clips for stock marketplaces made with Google Flow credits and no paid API. A connected LLM proposes the clips and judges the results; the app draws, animates, finishes, measures and exports.

  • The LLM reviews every keyframe before a single credit is spent and reviews the finished clip before it writes the title and keywords.
  • Credit meter with a configurable cap, default models, a queue and a check that Flow is signed in.
  • A blacklist of subjects to avoid and a best-sellers list that steers new ideas.
  • FFmpeg removes audio, trims, upscales to 1080p and measures each clip; one button exports numbered files, the metadata CSV and a readme with the upload checklist.

Publishing and growth

Publishing is not the end of the loop: the results feed back into what gets made next.

Publishing, scheduling and accounts

/calendar · /accounts

Each publication keeps one target per connected account, with its own state. A scheduler fires them at their time and a worker uploads the real file to every network.

  • OAuth connections for YouTube, TikTok, Instagram and Facebook, with encrypted tokens and per-platform app credentials.
  • Instagram does not accept a file upload, so the app opens a temporary tunnel and hands Meta a signed, expiring URL tied to that exact file.
  • Monthly calendar with a per-day detail and a live queue; state lives in the database so a restart never loses a post.
  • Copy generation per network with tone variants and platform limits for title, body and duration.
  • An originality check before anything goes out: the creator’s own angle must be present, daily volume is capped and the opening, closing, music or topic cannot repeat the last upload.

Analytics and insights

/ · /analytics

A dashboard that answers what to change next time, not just how things are going.

  • Filters by period, platform and account, with followers, views, interactions and views-after-publishing curves.
  • Views are never added across networks. Each post is ranked inside its own platform in standard deviations of log views, and nothing is concluded below a minimum sample.
  • Four questions answered from existing data: does the model’s score predict results, which copy tone performs best, what time to publish and which of two copy variants wins.
  • Per-scene retention for YouTube: the retention curve is cut by the same timeline the montage used, so a drop becomes “scene 5, the lateral whip”.
  • History import and manual refresh of metrics.

Platform and operations

The parts that keep a large, GPU-hungry application cheap, safe and understandable.

Model routing and API keys

/admin/modelos

Each task in each flow has its own model, with its price per million tokens next to it.

  • Separate choices for copy and SEO, moment detection, scoring, subtitle translation, b-roll planning, naming styles and characters, and topic mining.
  • Recommended defaults, a “restore the catalogue” action and a warning when a chosen provider has no key.
  • Twelve provider families behind one registry: fal, OpenAI, ElevenLabs, Google (Gemini, Veo, Lyria), Google Flow, Anthropic, DeepSeek, Moonshot, Qwen, Zhipu, Ollama and Pexels, plus local servers.

Resources, logs and local servers

/system · /logs

Live CPU, memory, disk and network of the machine, and real timings of every pipeline stage.

  • A pipeline timings table with hundreds of measurements per stage and model; the median is what powers the queue’s time estimates.
  • Local image, voice, sound and Whisper servers can be started from the interface, run in their own hidden console with their log saved, and only load a model when the first job needs it.
  • Hardware care: one heavy job at a time, progressive throttling by GPU temperature, low-priority efficiency mode for FFmpeg and servers, and a keep-awake request while the queue is busy.
  • A searchable system log and in-app notifications.

MCP server

/api/mcp

The app exposes 19 tools so an LLM client such as Claude Code or Antigravity can drive the creative work while the app produces.

  • Video flow: get the plan, check topics against everything already made, create videos, review every keyframe, submit verdicts, start the montage, review the final result and submit QA.
  • The same plan, create, review and verdict loop exists for stock assets and POD designs, and long videos can be planned and created through the same server.
  • Anything launched through MCP is locked to local models. The server only answers requests from the development machine, and returns 403 from the VPS, the tunnel or a web page.
  • Videos that pass the final QA get a “QA MCP” badge in the gallery.

Settings and security

/settings

Because the tool has to be reachable from the internet for Instagram, everything behind it is protected as if it were a public service.

  • Password gate only when the app is published, with a signed session cookie that lasts five hours and does not slide.
  • Two-factor authentication with TOTP and backup codes, lockouts by IP address and by device, and a list of blocked access.
  • Fail-closed default: if the app is public and the password is missing or short, nobody gets in.
  • AES-256-GCM encrypted OAuth tokens with a read-only list of alternate keys so two instances sharing a database can both read them.
  • Security headers including no framing, no sniffing and no indexing.

Engineering decisions

The choices that shaped the architecture, and why.

01

Local-first model layer

Keyframes, voice, sound effects, transcription and upscaling run on my own GPU, behind four small Python servers. Each server keeps one model in VRAM at a time and loads it on demand, so a single card can serve all of them.

02

Thermal-aware queue

A laptop hit 88 °C during long renders. The queue now runs one heavy job at a time, slows diffusion steps progressively as the GPU heats, rests between jobs by temperature and runs FFmpeg in efficiency mode. Careful mode is the default and full speed is the exception.

03

Cost visible before it is spent

Every video shows an estimated cost by stage before rendering. Stages can be switched off, models are routed per task, and prices are only compared inside the same stage, never between a model billed per image and one billed per second.

04

MCP as the creative brain

An LLM researches topics and writes scripts through MCP, looks at the generated keyframes, orders bad ones to be redrawn and passes judgement on the final cut, while the app only produces. A local-only lock keeps paid providers out of that loop.

05

Platform-policy guard

Mass-produced template content gets channels demonetised, so originality is checked in code before publishing: a creator angle, a daily cap and no repeated openings, closings, music or topics.

06

Two instances, one database

The laptop has the GPU, the VPS has a public address. They share PostgreSQL through an SSH tunnel, a media mirror copies finished files to the VPS, a flag decides which side publishes, and a GitHub Actions workflow deploys on every push.

07

Resilient jobs and content fingerprints

Job state lives in the database, so a restart never loses work, and finished stages are reused when a video is relaunched. File names carry a fingerprint of their inputs, which makes cache invalidation automatic.

08

Honest analytics

Views from different networks are never summed. Posts are compared inside their own platform on a log scale, and the dashboard says how many more posts it needs instead of drawing a conclusion from five data points.

Measured results

Timings and costs measured on the production machine (Intel i5-13450HX and an 8 GB laptop RTX GPU).

WhatBeforeNow
Keyframes for one short~$0.30 with a cloud model$0 on the local GPU
One minute of narration850–1,220 s~80 s (CUDA graphs)
Montage of a 47 s short480 s216 s (NVENC, four pieces in parallel)
One sound effect42–45 s20–23 s
One keyframe on the image server49.7 s28.3 s
Transcription of an hour of video~$0.36 with the cloud API$0 with local Whisper
A ten-hour relaxing videoTen hours of encodingOne five-minute cycle, repeated

In-app totals when this case study was written: 150 generated shorts (51 with MCP quality approval) and 638 print-on-demand designs, 497 approved, with $0 of AI spend.

Tech stack

App

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Zustand
  • Recharts

Data and infra

  • Prisma 7
  • PostgreSQL
  • Docker
  • GitHub Actions
  • SSH tunnel
  • ngrok

Media

  • FFmpeg
  • NVENC
  • ExifTool
  • Sharp
  • Real-ESRGAN
  • LTX-Video

Local models

  • FLUX.2 Klein
  • Z-Image Turbo
  • Stable Diffusion 3.5
  • Qwen3-TTS
  • Whisper
  • MOSS-SoundEffect
  • Ollama

Cloud and protocols

  • Model Context Protocol
  • Gemini, Veo, Lyria
  • OpenAI
  • ElevenLabs
  • fal
  • Google Flow
  • Printify

Integrations

  • YouTube
  • TikTok
  • Instagram
  • Facebook
  • Pexels

Need something like this?

I build AI-powered products end to end: pipelines, queues, integrations and the interface on top.

Creator OS is a private tool and is not publicly available. The screenshots are from the real application.