Project 04 / Personal
Cutroom.
From a long recording to clips worth sharing.
I built an AI-assisted editor that finds highlights, lets creators refine captions and framing, and exports videos for social platforms.
- My role
- Independent Product DeveloperSince October 2026
- Built with
- React 19 / TypeScript / Python / FastAPI / FFmpeg / SQLite
- Status
- Live product · Active development

01
Overview
I built Cutroom to make repurposing a recording less repetitive. Creators, podcasters, educators, and teams can turn a longer video into short clips, then review the captions and composition before exporting.
Finding a useful moment is only the beginning. A transcript may need correcting, the framing may miss a speaker, and captions need to suit the clip. I wanted those edits to stay in one workflow.
From recording to export
Bring a recording
Paste a supported public video link or upload a file. Platform restrictions can affect link imports.
Find useful moments
Whisper turbo transcribes the audio and DeepSeek suggests highlights. Request alternative highlights from the saved transcript when you want a different selection.
Review and edit
Adjust clip boundaries, caption text and timing, appearance, and framing. AI suggestions remain a starting point for the edit.
Export the clip
Render a captioned MP4 in the background or download the captions as an SRT file.
02
My work
As the independent product developer, I built the editing interface, AI processing pipeline, accounts and prepaid-credit system, and deployment. I continue to develop and maintain the product.
- Built imports, uploads, background progress, transcription, and highlight selection, including alternative suggestions from saved transcripts.
- Added caption text and timestamp editing, with Pop, Clean, Box, Karaoke, Impact, and Typewriter presets plus typography, color, placement, and layout controls.
- Built manual framing, face following, and assisted speaker-aware framing for vertical and horizontal clips, with zoom and position keyframes and timed image or video overlays.
- Added registration, email verification, password recovery, a limited trial after verification, and Paddle checkout for prepaid processing credits. Product pages are localized and currency presentation varies by region.
03
Technical decisions
A React 19 and TypeScript interface built with Vite talks to a Python/FastAPI backend. SQLite stores project and job metadata using WAL, transactions, and indexes. Separate worker pools handle import and transcription, and export and framing.
- Kept project lists small with summaries and cursor pagination, loading full caption data when the editor needs it. Status polling avoids overlapping requests and pauses in hidden tabs.
- Separated import and speech recognition from export and framing so long jobs use their own worker pools. Durable jobs, leases, recovery, and resource limits make interrupted work recoverable.
- Reserved disk working space before accepting processing work. Credit holds settle around processing results, failures release held credits, and the server handles payment notifications.
The stack in context
- Interface
- React 19, TypeScript, Vite, custom CSS, and Lucide icons for the editing controls.
- Media and AI
- FFmpeg and PyAV process video. faster-whisper with Whisper turbo transcribes speech, DeepSeek suggests highlights, and OpenCV supports face detection and framing analysis.
- Accounts and data
- FastAPI and SQLite manage projects and jobs. Paddle handles checkout; SMTP delivers verification and recovery emails.
- Delivery and checks
- Docker Compose on a VPS, Nginx ingress, Cloudflare DNS/TLS, and GitHub Actions. pytest and Playwright cover workflows, including real media fixtures.
04
Scope & status
Cutroom is live and under active development, with an import-to-export editing workflow and prepaid processing credits. I started building it in October 2026. The source repository is private.
- Transcripts and suggested highlights need review. Speaker-aware framing uses assisted detection and can need manual adjustment in difficult scenes.
- Link imports depend on the source platform’s restrictions. File upload provides another way to bring a recording into the editor.
What I learned
Giving people control over the transcript and framing matters as much as generating a first selection.
Processing capacity and credit accounting need to follow the same job lifecycle, including failures and recovery.