Inspiration

New managers often know what they want to say, but have never practised what happens when the other person pushes back. LeadRehearsal creates a private place to rehearse difficult workplace conversations before the stakes are real.

What it does

Users choose a realistic scenario—or describe a fictionalised custom one—set an intention, and respond in their own words. The conversation adapts to what has been addressed, what remains unresolved, and whether a workable next step has emerged.

After the rehearsal, coaching highlights strengths, improvements, and one quoted turning point. Retry the Moment returns to that exact challenge so the user can try a clearer response and compare both attempts. Optional contextual wording aids support practice without replacing it. English and French are supported, with optional system voice tools alongside text.

The free experience includes three full rehearsals per rolling 30 days, core coaching, Retry the Moment, and contextual aids. Pro expands repeated use, custom scenarios, advanced coaching, full local history, progress summaries, and voice rehearsal. RevenueCat's pro entitlement is the source of truth for premium access while Google Play handles payment.

How we built it

LeadRehearsal is a native Android app built with Kotlin and Jetpack Compose. Room and DataStore keep local history and preferences. Firebase Authentication with verified email and App Check protect the service. A FastAPI backend on Cloud Run uses structured Gemini models through Vertex AI, with Firestore-backed quotas and privacy-safe usage telemetry. RevenueCat connects Google Play subscriptions to premium access.

Challenges we ran into

A fixed three-question script felt artificial. We rebuilt the conversation as a bounded adaptive flow. Testing also exposed repetitive suggestions, a mobile authentication failure, and scoring that could reward meaningless answers. We corrected authentication, grounded suggestions in the latest partner response, tightened relevance checks, and made retry comparisons use the same coaching baseline.

Accomplishments we are proud of

  • A complete rehearsal-to-coaching-to-retry learning loop
  • Context-aware suggestions instead of static scripts
  • Meaningless responses are rejected instead of rewarded
  • Bilingual English/French experience with optional voice
  • RevenueCat-backed Free/Pro entitlement handling
  • In-app account and data deletion for GDPR-conscious users
  • Real Android closed testing with feedback-driven fixes

What we learned

Useful coaching is not a score alone. It must point to the user's actual words, explain the missed conversational move, and create another opportunity to practise. We also learned to treat authentication, privacy, cost controls, and subscription state as product quality—not launch-day paperwork.

What's next

We will continue improving scenario breadth, coaching calibration, accessibility, and production reliability from real user feedback while keeping the core experience focused: practise, learn, and retry.

Built With

  • cloud-run
  • datastore
  • fastapi
  • firebase-app-check
  • firebase-authentication
  • firestore
  • gemini
  • google-play-billing
  • jetpack-compose
  • kotlin
  • revenuecat
  • room
  • vertex-ai
Share this project:

Updates

Submission history