Case study
Reelflex: paste a website address, get a finished video ad
The app reads the site, proposes three ideas, writes a script the owner can edit, then produces a short ad with a voice-over.
My role
This one is my own product, not a client's. I designed it, I write it and I run it, alone: all 79 commits in its repository are mine.
The situation
A small business that wants a short video ad can pay an agency, learn an editing tool, or go without. Yet most of what the ad needs already sits on its own website: what it sells, how it talks, what its pages look like. Reelflex starts there. The owner pastes the address and chooses along the way.
The constraint
The ad has to say what the site says, and nothing more. A stranger's website is handed to the AI as material to read, never as instructions to follow. The prompt forbids invented figures, and no script is written until the owner has picked an idea.
Every ad costs real money at outside services. So a render is charged once, a failed render is refunded once, and the free steps have daily limits per account and for the whole service.
A public tool that fetches any address a stranger types can be pointed at things it should not read. The app refuses addresses that lead to a private or internal machine, and every ad stays private to its account.
What I built
The site is online at reelflex.app. What the code does today:
- Reading the site: one address gives a brand sheet (name, tagline, colours, fonts, tone of voice) and screenshots of the real pages.
- Four ad formats: a calm explainer, a comic roast, a character speaking to camera, and App Moment, a phone walk-through of 4 to 6 real app screens.
- Direction: the owner sets the language, the voice, the call to action and a length from 40 to 90 seconds, then picks one of three ideas.
- A script the owner can edit before the video is made. Code checks what the AI returns, so it cannot point the video at a file it chose itself.
- Two quality levels: Standard, and Cinematic, which adds up to five generated video clips. Voices in English and French, video in vertical, portrait or wide.
- Credits and accounts: one free ad, then packs bought through a payment provider. Sign-in with Google or a confirmed email. An ad opens only for its owner, and its video links expire after an hour.
- Changing a finished ad: an assistant shows its proposed change as a before and after, and nothing changes until the owner presses Apply. The last five versions are kept.
The numbers
- 4ad formats
- 3ideas proposed for each ad
- 5earlier versions of an ad kept
- 190automated test cases, in 40 files
- 79commits, 17 July to 12 November 2026
Every number above is counted from the project's own files and history on 12 November 2026. The product is early: there is no user, customer or revenue figure on this page.
What this is, and what it is not
This is a product I built and run myself, and this page shows no usage number. The models it calls are not my work: Claude writes, ElevenLabs speaks, a third-party video model makes the Cinematic clips. The engine that draws the video started as another developer's open-source project. In it I wrote the ad formats used here, the site reader and the hosted services.
Not everything listed is confirmed live. Changing a finished ad, the version history and the voice picker were finished on 11 November and, by my own roadmap, wait for the next manual deploy. Buying credits was tried with a test purchase, and the first real purchase is still on my list. Hosted ads go out without the site's logo.
Tests: 190 automated cases run against stand-ins for the database, the AI and the payment provider, not the real services. Nothing runs them automatically, the deploy is manual, and the one browser script no longer matches the screens. 55 of the 79 commits carry an AI co-author line. That is how I write code, and I would rather say it here.
What I would do differently: put it online sooner. I built the ad maker in July, then left it until 31 October. Accounts, the hosted version and payment all arrived in the first days of November, so the parts that deal with strangers and money are the youngest.
Stack
- Next.js
- TypeScript
- Claude API
- ElevenLabs
- Remotion
- Playwright
- FAL
- Firebase Auth
- Firestore
- Cloud Run
- Cloud Storage
See it
Want something like this?
Tell me what you are building, or what you are still doing by hand, and I will tell you how I would approach it. No commitment.