malahov.io

One Wallet for Three Products

I'm hauling dictation into the hub and trying to join three products on three different technologies into one subscription. So far the one thing their economics have in common is that it's negative everywhere.

By Georg Malahov

All through the last week of June I've been working on the dictation app. The idea is simple: you talk — you get clean text. One button, dictate, copy, paste. I like the minimalism and the design, but everything around it is one stumble after another. The start of the project was, as usual, fast and smooth, and then the bugs crawled out: requests going out too long, responses coming back in the wrong shape, the interface behaving differently from how it was meant to. A separate problem is background recording: in the browser you can turn the screen off and the recording continues, but in a PWA — a web app installed on the phone — the background microphone disappears.

The main decision is already made: dictation moves to my server and becomes part of the hub. It fits in well there — and that's also where I'm building the shared subscription and the ability to pay.

Along the way I had to change AI providers three times. At first I thought OpenRouter would cover everything — a middleman that sells access to different models through a single API. It turned out not to be GDPR-compliant — it doesn't pass the European data-protection rules — expensive, and unpredictable in speed: the model is a reasoning one, sometimes it answers fast, sometimes it thinks. I tried a European middleman, Requesty — for some unknowable reason it doesn't accept audio files. In the end I moved to Vertex AI, direct access to Google's models with a European region option. And that worked: one request — audio plus prompt — and back come both the text and the translation. Fast; I'm happy.

But now I have three tools on three technologies. The subtitles run on Deepgram — a transcription service that gives exact word-level timing, which a general-purpose model can't do. Dictation runs on Vertex AI. Call Copilot — an extension that transcribes calls — is on its own separate stack entirely. If a customer on my site has a single wallet and uses all three tools, the usage has to be counted in three different ways. The one thing this economics has in common is that it's negative everywhere.

Where I landed in the end: mandatory sign-up. Everyone gets a few free minutes to try things out — minutes are a cap I can put on any of the three technologies — and beyond that, a subscription with no limits. The only limit inside the subscription is the length of a single recording, so that nobody can forget a running microphone for three hours. I already got burned by this with Call Copilot: back then I also told myself "there are no users, why think about it, I'll sort it out later" — and it ended with me shutting down free access once I saw where the tokens were going.

It's funny, of course: dictation has no users at all yet, and here I am designing abuse protection. But that's exactly why I'm designing it — I don't want to make the same mistake twice.

And in parallel a thought about the extension keeps circling: since people steadily arrive at Call Copilot from the store, maybe I can gradually move them over to the main hub — and from the hub they'll find their way to the other products.

The amount of labour, thought, and reasoning all of this eats up is enormous — while there are still no users, and the costs are real. And it keeps feeling like just a little more — and the ecosystem clicks together.