You know what to say.
Then you soften it.

DryRun is where you have the conversation badly first — with someone who pushes back, goes quiet, and doesn't let you off the hook.

LIVE ON THE APP STORE · IPHONE · ANDROID IN TESTING

A run, as it happens

Hey, what's going on?
I just wanted to maybe chat about how things have been going, sorry to bring it up
What do you actually mean?
The checkout file landed Thursday. Engineering needed it Monday. That's the third late handoff in two months.
They're not saying anything.

3 hedges · mostly "just"

Your hedging is underlined as you type

Just. Maybe. Sorry to bother you. I might be wrong but. Marked the moment you write them, with a running count of the one you lean on most. Not blocked — marked. The point is to see the shape of your own flinching before you send it, not to be corrected afterwards.

The detector runs entirely on your phone, so it never waits on a network and never sends anything to find a hedge.

And when you finally say it straight, they say nothing

Three full seconds of dead air. Most people fill it — and undo the thing they just did well. Sitting in the silence is the actual skill, so the app measures whether you did, on the device, as a fact rather than a model's opinion.

Then it tells you what you actually did

Four things, each quoted back to you word for word from your own transcript. No score out of a hundred, no grade, no encouragement you didn't earn.

Named the specific thing
Said what it cost
Left them room to answer
Held the point under pushback

Run it again and DryRun shows you the line that changed — your hedged version and your straight one, side by side. That comparison is the whole app.

What you type stays on your phone

The conversation you're rehearsing is about a real colleague. So there's no account, no name, no email — and no share button anywhere in the app, on purpose. Transcripts and scores never leave the device, and messages are sent only to generate a reply and are never stored. The privacy policy says exactly what that means, in the same plain words.

Seven conversations to start

Delivering feedback, setting a boundary, saying no. Or write the one you're actually dreading.

Keep as many as you need

Each conversation keeps its own runs and its own progress.

Today's line

One softened sentence a day, rewritten straight. Sixty seconds, offline.

One reminder, if you want it

The evening before your conversation. No streaks, no daily pestering.

Built in the open

Kotlin Multiplatform — nearly all of the code is written once and runs on both Android and iOS, including every screen. The API is a Cloudflare Worker and subscriptions run through RevenueCat.

The hedge detector is deterministic and offline, which means it can be tested properly — including against the daily drill's own content, where two invariants (every soft line contains a hedge, every straight answer contains none) caught an entire missing category: pre-emptive self-deprecation. I hope this isn't a stupid question. I'm probably being dense. The thing the app is about, and it was going undetected.