Go BackOlma

The problem

Dictation meant choosing between fast and private

Olma is a dictation app for the Mac. You press a key, say the thing, and the text lands in whatever you were already typing in. I designed and built all of it, so the app itself but also the brand, the site and the payments.

I started it for the boring reason that I talk a lot faster than I type, and everything I tried asked me to make a trade I didn’t want to make. The good ones sent my voice off to a server somewhere. The ones that didn’t were slow enough that I stopped reaching for them. That bothered me more than it probably should have, because dictation is the most intimate way there is to get text into a computer. You use it for half-formed thoughts, and for things you haven’t decided whether to say yet.

Video

Hotkey to transcript

The constraint

Private by default, not private if you go looking for it

So Olma transcribes on your own machine. Nothing leaves it, there’s no account to make before you can dictate, and there’s no server sitting anywhere that could one day leak a recording it never received.

Cloud transcription is in there, but on your terms and only if you deliberately switch it on, which is the opposite of how this usually goes. Most products make the private option the one buried three screens into the settings.

Settling that on day one answered a lot of later questions without any argument, including some unpopular ones. Limiting the app to newer Macs reads like a technical shortcut and was really a product decision: it’s the thing that makes local transcription quick enough that you stop noticing it’s happening.

The interface

The best version of this is one you barely see

Dictation almost always happens while you’re doing something else. You’re part-way through an email, or a message, or a thought you’re trying not to lose, and any interface that pulls your attention over to itself has already failed at the one job it had.

So while it’s recording, Olma shows you one thing: a small floating pill telling you it’s listening. No window, no waveform theatre, nothing to look at. When you stop talking the text appears where your cursor already was and the pill goes away.

Most of the design work was subtraction. Everything I thought about adding got the same question, which was whether it helps someone who’s currently looking at a completely different window, and almost nothing survived it.

Image

Menu bar entry point

Image

Recording indicator

Image

Settings

Image

Rewrite modes

Onboarding

Asking for the two most alarming permissions on macOS

Olma needs your microphone, and it needs permission to type into other apps. Asked for cold, one after the other, that combination reads almost exactly like spyware, and a sensible person would quit right there.

So the first-launch flow earns each one in turn, explaining in plain words what it’s for immediately before the system dialog shows up. The alarming prompt is never the first time you find out why it’s needed. It’s a small amount of copy doing a lot of work.

This is the moment the product is either trusted or deleted, and it happens in the first ninety seconds. It mattered more than anything I designed after it.

Image

First-launch permission flow

Shipping it

Paid, and sold direct

Olma’s a subscription sold straight from the site rather than through an app store, which brought a whole layer of design nobody ever sees. A paywall that doesn’t punish someone halfway through a trial, and sensible behaviour for when the machine is offline and the licence can’t be checked at all.

That last one mattered more than it sounds. An app whose whole argument is privacy can’t then phone home aggressively to make sure you paid, so being offline had to be treated generously by default. The business model had to bend to the product’s promise rather than the other way round.

Where it landed

The private option, without the usual compromise

Olma’s live and does what it set out to do, which is be fast enough to use constantly and private enough to use for anything.

What I’d carry into other work is how much clarity one hard constraint buys you. Deciding on day one that your voice never leaves the machine settled dozens of downstream arguments that would otherwise have been had one at a time, slowly, and probably badly.