Inspiration

New managers rehearse hard conversations alone: in the shower, in the car, in their heads. And in their heads, the other person usually nods.

Real conversations don't go that way. The friend you now manage goes quiet. The boss says "we'll discuss it later." The report agrees, then changes nothing. The difficult part begins when they don't nod, and that's exactly the part nobody gets to practise.

We kept hearing the same thing from first-time managers, especially people promoted over their former peers: they know the conversation is coming, they rehearse it over and over, and they still freeze when it arrives. They don't need another article or another script. They need somewhere private to try it, feel it go wrong, and try again before it counts.

What it does

Oswalo is a private rehearsal room for difficult workplace conversations. You speak out loud, and the other side answers in a real voice.

1. Set the scene in one sentence. Choose what you're trying to do (give difficult feedback, set a boundary, say no to a request, address tension, deliver a decision), who's on the other side (a former peer you now manage, your manager, a colleague, a senior leader), and what feels hardest. Then describe the situation in your own words.

2. Rehearse out loud. The other side starts the way a real person would on an ordinary day. When the hard part lands, they react the way that person might: hurt, defensive, guarded, or quietly open. They respond to what you actually say. They don't fold because you found the "right" words, and they don't stay hostile when you're fair.

3. See where it turned. Oswalo finds the single moment the conversation shifted and shows it plainly: what you said, what they said back, and what changed. For example: "You apologized twice before naming the deadline. They responded to the apologies." No score, no verdict. You see the cause and draw your own conclusion.

4. Try that part again, your way. Pick a direction (warmer, more direct, or more curious). None is marked correct. Go back in, say it in your own words, and hear it land differently. If you're stuck, "What could I try?" shows a few ways it could sound. They're examples, not a script.

5. Sit in the other chair. Switch seats. Oswalo plays your side, and you answer as the person receiving the message. Then return to your own chair with a feel for how your words land from the other side.

6. Check in with yourself. At the end, one question: how ready do you feel for the real conversation? It's your own reflection, not a score.

Private by design. No names are needed, rehearsals auto-delete after 7 days, and nothing is graded or ranked.

Why no scores

A hard conversation isn't a test you pass. We won't tell you that you scored 2 out of 5 on empathy, because leadership doesn't work that way and there's no single correct version of a human conversation. Instead Oswalo shows you what your words caused, lets you feel it from the other side, and lets you meet the moment again in your own voice.

The other side pushes back the way real people do, and the debrief draws on established feedback and listening principles (situation–behavior–impact, active listening, care with directness). But it describes rather than grades, so you build your own way of leading instead of memorizing someone else's lines.

How we built it

  • App: Flutter, designed in Figma.
  • Voice loop: speech-to-text and the conversation run on OpenAI; the other side's voice comes from ElevenLabs, with the delivery (pace, stability, emphasis) tuned per line to match the emotion of what's being said.
  • Three separate prompts, never merged: one plays the other person inside the conversation, one plays your side during the chair swap, and one stands outside the conversation to find the turning point. Keeping them apart stops the character from coaching and stops the debrief from role-playing.
  • Backend: Supabase for accounts and storage, with API keys held server-side in Edge Functions, plus automatic deletion after 7 days.
  • Monetization: RevenueCat powers the paywall and subscription. Every new user gets 3 free minutes of rehearsal, then a monthly plan with 60 minutes of rehearsal. Pricing is server-driven through RevenueCat, so we can test packaging without shipping a new build.

Challenges we ran into

  • Language models want to coach. Left alone, the debrief kept drifting into "try to be firmer next time." We wrote one rule every sentence has to pass: does this only make sense if something went wrong? If yes, it's coaching, and it gets cut.
  • The other side was always defensive. Early versions treated "Hey, got a minute?" as an attack. We rebuilt the character to start neutral and react in proportion, so different approaches get genuinely different responses. Without that, retrying would be pointless.
  • Finding one turn, not inventing one. The debrief has to pick the single moment that mattered out of a whole conversation, and admit when there wasn't one. A calm rehearsal shouldn't be turned into drama.
  • Making retries honest. Choosing "warmer" doesn't earn a warmer response. Only saying something warmer does. The outcome changes only when you actually change.

Accomplishments that we're proud of

  • A debrief that's specific enough to act on without ever grading the user.
  • A chair swap that lets you hear your own approach from the receiving end.
  • A voice that sounds like a person reacting, not a narrator reading.

What we learned

The most useful feedback in a hard conversation isn't a number, it's a consequence. When people see what their words caused and get to try again, they don't need to be told they improved. They can feel it.

What's next for Oswalo

  • A quiet reminder before your real conversation, so you can rehearse once more right before it matters.
  • Saved lines: keep the words you want to walk in with.
  • AI video rehearsal to manage facial expressions

Built With

  • dart
  • elevenlabs
  • figma
  • flutter
  • openai
  • revenuecat
  • speech-to-text
  • supabase
  • supabase-edge-functions
  • text-to-speech
  • voice
Share this project:

Updates

Submission history