How I built Easy Reels, and what I deleted on the way
A thousand commits across seven repos, and the most useful ones deleted something: transcription, AI images, transitions, two publishing targets and a smart mode that lived three days.
Easy Reels takes a folder of clips and a song and returns a vertical video with every cut on the beat. I started it on 9 July 2026, under the name video-generator-saas, with transcription, voiceover and AI images in the first week. None of those survived. What I learned building it was mostly about removal: the product got clearer every time I deleted a feature that did not serve the one job, which is cutting your footage to your music, again tomorrow, without rebuilding the edit.
The problem
Every reel you cut on the beat by hand, you cut again the next day. Posting every day is what grows an account, and a timeline editor makes you rebuild the same edit each time: scrub the waveform for beats, trim each clip, redo the grade and the text, export one video.
I run faceless accounts of my own, and for that kind of video the edit never changes. Only the footage does. So the product idea fits in a sentence: keep the edit, change the footage. If you want the manual method first, syncing video to music beats walks through all three ways, by hand included.
The first version wanted to be everything
The early commits read like a list of what was exciting in July:
- Transcription with Whisper, on day two.
- Voiceover with ElevenLabs.
- AI images for carousels with an OpenAI image model.
- Beat detection on 21 July, followed the same day by a commit called "improve beats".
Only the last one is in the product today. There is no transcription handler, the AI background controls are gone, and the landing page lost a claim about automatic word-by-word captions because the feature did not exist. A page that sells what the app does not do is a refund waiting to happen, so the relaunch of the site on 9 September had one rule: sell what the app actually does.
The template is the edit
The idea that made the product work arrived in late August: one recipe model, the template, holds everything except the footage. Up to twelve layers: audio, video, image, text and a filter. The video layer draws from a folder of clips, one clip slot per section of the song, and avoids repeating clips it used recently. The text layer can time its lines by percentage or by beat. Short clips are slowed to fit their section, with frame interpolation instead of duplicated frames.
I built that system behind a flag while the old one kept running. When the new one passed the full test suite, I ran a read-only audit task that answered one question, GO or NO-GO, and then deleted all of version one in two commits. Two days from green to gone.
Keeping both alive longer would have felt safer. It would also have meant every bug fix landing twice.
What broke
The plainest reel never rendered
Music plus clips, no text, no overlays: the simplest thing the app can make. After the rewrite, that job was routed to a handler I had deleted. The worker popped it off the queue and dropped it. From the outside it looked like a stuck queue.
Six tests asserted the broken behaviour. They passed because they checked the routing I had written, not the video a user expected.
Then the fix made those videos black. The new compositor sent footage nowhere when no layer explicitly placed it, so the file had the right length and the right audio and no picture. Two bugs in one day on the most basic output. Nothing teaches you to render a real file in your tests faster.
Jobs stuck in processing forever
When the render worker ran out of memory and was killed, it never called back, and the job sat in "processing" for good. I added a reaper for stalled jobs, then found its schedule had never been written down. It now runs on a Railway service that had been crash-looping and was given the maintenance job instead.
Detection overwrote people's edits
You can move, add or delete cuts on the waveform. A late detection job used to come back and overwrite those edits, and the video ignored what you had done. The fix became a rule: detection never runs unasked, each track's cuts are confirmed once at upload, and the newest edit always wins. The commit message puts it better than I can here: beats stop happening to a track and become someone's decision.
What I added and then removed
| Feature | What happened |
|---|---|
| Transitions and motion effects | Deleted on purpose. The docs say "gone on purpose, not pending". |
| TikTok and YouTube publishing | Removed. YouTube Shorts lasted under a week. |
| All publishing | Moved out of the editor into a separate app. |
| Smart clip matching with AI | Added on 29 September, removed on 2 October. |
| Auto-posting on the landing page | Marked as shipped, walked back to "coming soon" the next day. |
| Signups | Closed for a waitlist on 9 September, reopened on 13 September. |
The smart mode is the one I think about most. It captioned each clip with a vision model and had another model choose the copy, the hook and the clips. Three days later it was out of the API, the worker and the editor. What is left is a template that does what you set up, every time.
How it works now
- Upload music and pick a cut style for the track: every beat, every two beats, downbeats, or smart, which follows the energy of the song.
- Add footage and photos to folders.
- Build a template. This is the edit, done once.
- Optionally write a pool of captions for the template to rotate.
- Generate, one video or a batch, and download them.
Beat detection runs on the server with Beat This!, a transformer beat tracker, and falls back to librosa if that fails. Rendering also happens on the server: the API puts a job on a queue, and a Python worker renders it with ffmpeg and Pillow. The editor is a React web app on top of a Rails API, the same split I describe in the solo founder tech stack.
Across the seven repos that is around a thousand commits since July. The volume is not something to copy. Most of it is the price of finding out what the product was.
Who it is for, and who it is not for
For: people who post short vertical video every day, often several accounts, often without showing a face, and who make the same kind of video again and again with different footage.
Not for:
- AI video generation. It edits your clips. It invents nothing.
- Pre-edited footage. Clips with transitions baked in can look choppy.
- Story edits and talking videos. If every shot sits where it sits for a reason, or the cuts follow speech, you want a timeline.
- One video a month. Do it by hand.
BatchTone is the other video tool I build, and it went the opposite way: a small plan cut smaller before launch. bukpress shares its architecture with Easy Reels: a web app, an API and a Python worker on a queue.
Easy Reels, if cutting to the beat is eating your week
A note on fit first. If you post a reel now and then, a mobile editor is the full answer and you do not need another tool. Easy Reels does not write your hooks, pick your niche or send anybody to your page.
Easy Reels takes your clips and any song and cuts on the beat: beat detection you can correct, templates that hold the edit, clip folders that rotate, and a batch of finished vertical videos at the end. There is a 14-day trial, so you can test it on your own footage first.
Frequently asked questions
What is Easy Reels?
A web app that takes your clips and a song and returns a vertical video with every cut on the beat. You build a template once, and each new video swaps in different footage from your folders.
Is Easy Reels an AI video generator?
No. It does not invent footage. It finds the beats in your track and cuts your own clips onto them, using a template you set up.
How does Easy Reels detect beats?
With Beat This!, a transformer beat tracker, and librosa as a fallback. You choose a cut style per track, and you can move, add or delete cuts on the waveform.
What footage works best?
Raw clips. Footage that already has transitions baked in can look choppy once it is cut again on the beat.
Is there a free plan?
No. There is a 14-day trial instead, so you can run it on your own footage before paying.
The system behind this, written down
Everything above is the map. The Income Loop is the work inside it: modules 0–6 from the problem you solve to the offer that pays for it, plus ten traffic paths: the deeper post banks, the content sales systems and the full software build sequence, in one place.
Get The Income LoopNot ready to pay for anything? The Basic Income Loop is free and includes a complete seven-day starter for Threads, Instagram or software, enough to find out which one suits you before spending anything.