-
-
Set the intention and difficulty before practising.
-
Choose your focus and start a private rehearsal.
-
Adaptive conversation grounded in the latest response.
-
Full-session coaching based on the user's own words.
-
Realistic workplace scenarios for new managers.
-
Strengths, improvements and one decisive turning point.
-
LeadRehearsal app icon — 1024 × 1024, uncropped.
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
Log in or sign up for Devpost to join the conversation.