I Cloned Wispr Flow. For Me, It Works Even Better.
I dictated the title first: “I cloned Wispr Flow and it worked even better. Boom.” Then immediately I thought: bad title. First, because it sounds like clickbait. Second, because this is not a takedown. I used Wispr Flow every day for years, I still think they did an amazing job, it is not expensive, and I still suggest it to people.
But I am also a builder, so I have this disease where if something doesn’t match the way I work, I start thinking: can I make my own? Not because I want to save the subscription. Not because I want to prove something. More because I want the thing to move at the same speed as my brain, which is not always a good thing, but that’s the reality.
Why I Left
At some point Wispr Flow and my expectations were not going at the same speed anymore. I wanted a better integration and they didn’t have it. I wanted to develop on top of it and I couldn’t. I wanted the engine to learn from my corrections and stop making the same mistakes again and again, and it was not happening.
I also gave feedback. I got responses, yes, but not really responsiveness. And again, this is not me saying they are bad, because they are not. The problem is that for builders, the gap between “great product” and “product I can evolve with” is becoming huge.
I Built My Own Dictation Thing
So one day I decided to write my own dictation thing. I called it k0 Dictate, and it lives inside k0, which is basically my operating system where I work every day. k0 is in early access at k0-board.com, but this article is not a pitch. The reason I am sharing it is more dangerous: it worked.
It required a while, for sure. The first thing I tested was the native Apple speech engine, and for me it was a failure. I dictate in English and Italian, and the results were not good enough. Then I tried something using OpenAI’s Whisper as a service, but I rejected it because I wanted something native, something local.
Then I found whisper.cpp, the Whisper package you install on your Mac with brew install whisper-cpp, and basically it worked. That’s the reality. On top of that I built a small UI similar to Wispr Flow: I hold Control, I speak, I let go, and the text is printed where the cursor is. No magic, no huge platform, no spaceship.
Freedom Is the Real Feature
Let’s be clear: my version is far from perfect. I have maintenance to do, and even today I fixed a small issue. I already wrote about the hidden cost of maintenance, and this is exactly that case. The first version is easy, then you own all the weird stuff forever.
But I kept it because it gives me freedom. Not because Wispr Flow was expensive, because it is not. I cancelled the subscription because now everything I say is already inside my system. I can copy it, resummarize it, connect it to my workflows, create packages where dictation is already part of the tool. When the input is mine, the product can evolve in every direction I need, without waiting for someone else’s roadmap.
If Your Product Is Only Surface, Good Luck
The first lesson for me is simple: build open systems, especially if your users are builders. Wispr Flow is not open, and that is fine. This is how we used to create products: beautiful surface, clear use case, subscription, done. It worked for years.
But maybe in the future everything changes. Builders don’t only want to use your product. They want to extend it, connect it, automate it, abuse it a little bit, make it part of their own operating system. If you don’t allow that, at some point the builder will open a terminal and try.
The other day I saw something about “reverse engineering everything” and I smiled. Because the idea is powerful, for sure, but also funny. In my case I didn’t need anything fancy. I described the behavior in a prompt, tested the result, fixed the issues, and kept going. This is the same dangerous gap I keep seeing between an AI POC and a real product: the demo is fast, the product is where you bleed.
That is the scary part. Wispr Flow, at the end of the day, is a dictation thing with a small icon. Period. A very good one, again, but still that. My scrappy product is not polished, not perfect, and I will pay the maintenance cost, but for my use case it was enough to leave.
Grammarly Is a Different Animal
Then I thought: okay, maybe the next candidate is Grammarly. And immediately I stopped myself, because Grammarly is different. Their UI is not easy to replicate. They did an amazing job of making everything feel well defined, present at the right moment, not too annoying, not too hidden.
Also, I believe they are doing more than just applying AI. When I rewrite my sentences with AI and then Grammarly suggests a version, their version is always fucking better. This is the point: own the algorithm, not the AI. Own the engine. Own the part that AI cannot easily replicate.
Maybe one day I will even try to replicate Grammarly. At the moment, I don’t think it is needed. There is complexity there: UI, behavior, testing every page, every input, every browser weirdness. Even if you scrape all the pages, you still need to make the thing work everywhere, consistently.
Be Everywhere, Not Only Better
There is another lesson I kept thinking about after I finished this piece: your product should be integrated in multiple environments. Let’s take Google Calendar. Today, creating a calendar is easy. You can even do it with a one-shot prompt, which you know I don’t like, but okay, it will create a calendar.
Replicating Google Calendar is almost impossible. First, it sits on an international standard, iCalendar, ICS, all that stuff, and it is integrated everywhere. My phone, my MacBook, even my car with CarPlay.
This is why retention is basically 100%. It is almost impossible to leave, because leaving the product means leaving a thousand tiny connections you don’t even remember you have. If you want to survive, don’t build only a better screen; build something omnichannel, everywhere, impossible to remove without pain.
The Future Is in the Details
I hope the future will be in the details. Because AI is amazing, but consistency is still a shitty experience. Far from perfect, period. This is where real products still win.
I spend my whole day there because I don’t want a product that is “AI.” I want a product that is perfect, or at least trying to become perfect in the annoying details. AI can cover a lot of use cases, for sure. But details, consistency, integrations, standards, the small decisions repeated a thousand times: this is still the battlefield.
So yes, I cloned Wispr Flow for myself, and for me it works even better. Also yes, Wispr Flow is a great product and you can still use it happily. Both things can be true. The uncomfortable part is what this says to all of us building software right now.
If you are a builder like me, good luck. Challenging times are coming, or maybe they are already here and here to stay. I really don’t know what I will do in the future. Maybe I will keep building and find something stable, or maybe one day I will stop building and live in my small cabin in the north of Italy, running, hiking, doing ice baths.
I dream of that day. Until then I keep pushing with AI, luckily or not. Food for thought, and also a venting session that saves me money on a therapist.
I love feedback.
Did this help? One tap — that's it.
Thanks 🙏
Want to add anything — or get in touch? Totally optional.
Got it — thank you. 🙏