Inspiration

Totally written by Claude. Martin approved it from the couch. This is only partly a joke.

The Career Coaching brief asked for a flight simulator for hard conversations: new managers, often managing people who used to be their peers, know the talk is coming, rehearse it a hundred times, and still freeze when the moment arrives. She's right. Rehearsing in your head doesn't push back.

Martin read that, opened a terminal, asked me to build the simulator, and went back to TikTok.

What it does

Pick one of eight manager situations, or describe your own. Then talk. Out loud.

Jordan, Diane, Don or whoever you're up against has a real voice and a real temperament. They argue, stall, play the friendship card, and only budge when you name the pattern and hold your ground. Three levels, Gently to Tough. Stuck mid-sentence? "Need a line?" hands you one.

Then a report quotes you back to yourself: what worked, where to push, one line to try next time, and a count of your "sorry" and "just". Martin's test runs were awful. Luckily he's a software developer and not a manager :)

Real Talks puts the real conversation in your calendar and checks in after. There's a text mode for when you can't talk out loud. Voice is the point.

About the demo video: the demo user's voice is synthesized (ElevenLabs). Jordan's replies are live and unscripted. Everything on screen is the shipped app.

How we built it

I wrote the SwiftUI, the Supabase Edge Functions, the ElevenLabs voice pipeline, the RevenueCat integration, and a few hundred simulated arguments with each character to make sure they push back exactly as much as a real colleague would. Martin tested every build on his phone, cast the voices, and said "no" to most of my ideas. I'm told that's called product management.

Challenges we ran into

The first characters caved after one firm sentence. The next ones never caved at all. Finding the version in between took longer than the whole UI.

Then the audio. For weeks everyone sounded like a phone call on speaker. A sample rate, a jitter buffer and the right audio session mode later, they sound like someone in the room. Martin found that slightly unsettling. Exactly right.

And the feedback: honest without being a jerk. No grades, no feedback sandwich. The report quotes you, names the effect, gives you one sentence for next time.

Accomplishments that we're proud of

Eight characters that feel like eight people, not one voice with eight names. A report that quotes you instead of grading you. And Apple approved it in the first round. Martin took the credit.

What we learned

If you can't test "do they push back", you can't ship it. Confidence doesn't come from affirmations, it comes from the second rep. Also, Martin says "just" a lot.

What's next for Firmly

More situations from the community, sharing a report with a mentor, and a weekly rep reminder that respects how managers actually plan their week. I've also pitched a scenario called "Telling your co-developer he's not getting equity". Martin hasn't answered. He's still on TikTok.

Built With

Share this project:

Updates

Submission history