
The situation
We needed to send short screen recordings to franchise owners and staff, and every tool we tried either charged per seat, watermarked the free tier or made the viewer sign up to watch. We built a recorder inside Axis for ourselves.
It was good enough that we pulled it out into its own product, with its own name, pricing and sign-up, in a few weeks.
What we built
- Record in the browser: screen, camera, or both, with no install.
- Upload while recording: by the time you press stop the file is already in storage, so a long recording is not lost to a closed tab.
- Branded intro and outro cards burned into the video, so what you send looks like it came from your company.
- Share a link that plays on a phone, with view counts.
- Free plan of 25 recordings, and Pro for $5 a month with unlimited recordings, on Stripe.

How it is built
The recorder streams chunks to object storage as they are captured. When the recording ends, a worker transcodes the file, adds the intro and outro, and publishes a link. Billing is Stripe subscriptions with a customer portal for upgrades and cancellations.
For the engineer reading along: MediaRecorder in the browser, S3-compatible multipart upload during capture, ffmpeg transcode with concatenated intro and outro, Stripe Checkout and Billing Portal with webhook-driven plan state, its own repository and server, deployed independently of Axis.
What it does today
Zoomin launched in 2026 and is early. We use it for every walkthrough we send to a client, and the recordings embedded in the Axis onboarding email series are made with it. The plan is to grow it slowly on the back of our own use rather than spend on acquisition.
Running it
Its own server, its own deploy script, monitored by Watchdog with checks on the web process, the transcode worker and storage. Stripe webhooks are verified and idempotent, so a replayed event cannot change a plan twice.
Have something that needs building, or running?
Tell us what you are trying to do. We reply within one business day, and the first conversation is free.