The brief#
Audiotextify took a recording and handed back text a person could put to work: a transcript, ready to be summarised or translated, or rewritten as a memo, a presentation, an article, a tweet or a thread.
The founder came to us with an idea, a logo, a product description and a plan for how it would make money, free at first with paid plans above. Saif Pasha designed and built it, starting with a brand around that logo and every screen.
An extension in front, a web app behind#
The Chrome extension was a thin front door. Sign-in, transcripts and payments were kept safe in the web app behind it, along with the plans, the Stripe subscriptions and a credits system for transcription hours and generations.
Rather than use a ready-made transcription service, Saif worked on OpenAI's models directly. whisper-1 handled transcription. Everything made from a transcript came from gpt-3.5-turbo, streamed and rendered as Markdown while still being written.

From the start, Saif wanted FFmpeg underneath. Whisper accepted only a few formats, under a size limit, and most transcription tools stopped at MP4 and the other common ones. Because FFmpeg reads nearly anything, Audiotextify could take formats nobody else bothered with.

The hard part: FFmpeg against Stripe#
FFmpeg in the browser depends on shared memory, and a browser grants shared memory only to a page isolated by two security headers. Headers on, FFmpeg ran and Stripe's checkout would not load. Headers off, the reverse held.
The difficult step was seeing it as one problem, since each failure pointed into the wrong code. Saif audited the Stripe integration line by line, down to every dashboard setting and environment variable, and the code held up. Something outside both halves was interfering. Suspecting security, he went through the headers and narrowed it to one header, Cross-Origin-Embedder-Policy.
Nothing online answered it. On their Discord, Stripe's own developers confirmed it: checkout did not support that header yet, with no date for when it would.
The fix: two deployments and a 5 MB hour#
Saif split the product in two. FFmpeg got its own deployment, which sent the headers it needed, while the main site, home to Stripe, never did. A file dropped into the extension opened a small FFmpeg window on that deployment, carrying the user's session so only signed-in users could upload. Finished transcripts opened on the main site.
Once live, transcription crawled. FFmpeg itself was the fix. In that window, on the user's computer, it stripped the video, mixed the sound to mono and compressed it for speech. An hour of audio left the machine as about 5 MB, which Whisper could take in a single request.
On a test of his own, Saif gave it a film 48 minutes and 17 seconds long and more than 2 GB, and its transcript was ready in under two and a half minutes.
The outcome#
When the founder tried it, he asked for his articles in French. Saif then made every type of post and article come out in whichever language the user picked.
It's what I want. Perfect Saif
The extension launched on the Chrome Web Store alongside its web app. Stripe went live, and the product had paying subscribers. The founder had arrived with an idea and a logo, and came away with a product that turned almost any recording into the text he needed.
