All projects

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
Cutroom’s public caption-style preview, with Clean, Highlight, and Bold controls beside its illustrated sample video.
The public caption-style preview on cutroom.ai.id, using curated sample footage. This is a marketing preview, not the full editor.View full-size Cutroom preview

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

  1. Bring a recording

    Paste a supported public video link or upload a file. Platform restrictions can affect link imports.

  2. 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.

  3. Review and edit

    Adjust clip boundaries, caption text and timing, appearance, and framing. AI suggestions remain a starting point for the edit.

  4. 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.

Next projectPhotobooth