Two years ago, I was waiting for the annual BeReal recap video to drop at the end of the year. I wanted to see my year compressed into a fast-paced montage. When they finally released it, it was a letdown. It was nothing like the high-energy recap from the year prior.
So I did what any impatient engineer would do: I built my own in a Jupyter notebook.
The Prototype
The initial proof-of-concept was scrappy. I scraped my images using a third-party site, picked a song, and booted up an .ipynb file. I used librosa for audio analysis, numpy for math, and moviepy to stitch it all together.
The real challenge was not just layering images over an audio file. It was making the video feel dynamic. A naive approach would simply divide the song's duration by the number of images and cut blindly on a timer. The result of doing that is usually lifeless.
Instead, I used amplitude thresholding and segment-based peak analysis. By leveraging librosa to analyze the audio's onset envelope, the algorithm maps out the acoustic energy, basically locating the hardest drum hits and bass drops. It calculates how many images you uploaded and intelligently distributes them so that visual transitions snap precisely to high-energy acoustic moments.
From Notebook to Web Platform
Once the math worked locally, I wanted to turn it into a product anyone could use. I decided to turn the PoC into a full-fledged web platform, which is now live at RecapGen.
Taking it to the cloud meant solving a new set of problems. Heavy digital signal processing and multi-frame 1080p FFmpeg video transcoding instantly crash standard web servers and trigger timeouts on modern edge proxies.
To make it work, I decoupled the architecture. The sleek UI sits on the edge (Vercel), while all the heavy audio math and parallel video rendering gets handed off to ephemeral serverless containers (Modal). I even built a custom interactive clapperboard interface to make the creation process feel like you are actually directing a cinematic cut.
RecapGen: Decoupled Serverless Architecture
Summary
What started as a frustration over a missing social media feature evolved into a deep dive into acoustic analysis, parallel video encoding, and decoupled serverless architecture.
It is a reminder that the best projects usually start because you just wanted something to exist, and then you figure out the engineering along the way.