-
-
ReplayLead — AI conversation rehearsal with real rewind branching
-
RevenueCat Pro entitlement restored in the verified Test Store flow
-
Start a focused difficult-conversation rehearsal
-
Choose realistic scenarios for feedback, boundaries, and saying no
-
Structured AI coaching on clarity, empathy, assertiveness, and actionability
-
ReplayLead app icon — 1024 × 1024, uncropped
Inspiration
New managers are often promoted for doing strong individual work and then immediately asked to give difficult feedback, set boundaries, resolve conflict, and say no fairly. Reading advice is not the same as finding the words under pressure. ReplayLead creates a private rehearsal space where the real conversation does not have to be the first practice.
What it does
ReplayLead is an Android conversation-rehearsal coach for new managers. The user chooses a realistic management scenario, rates how prepared they feel, and practices against an AI counterpart that responds to what they actually say. At any manager message, Rewind removes the later conversation and starts a genuine alternate branch. After practice, ReplayLead scores clarity, empathy, assertiveness, and actionability, identifies one strong moment, gives one focused improvement, and suggests a stronger response.
The app is resilient by design: it labels whether coaching comes from the secure cloud AI service or the deterministic on-device fallback, so a temporary network failure never destroys a rehearsal.
How we built it
- Kotlin and Jetpack Compose with a small state-driven Android architecture.
- RevenueCat Android SDK 10.19.1 for live Offering lookup, localized pricing, purchase, entitlement verification, and user-triggered restore.
- Cloudflare Workers and Workers AI for in-character replies and structured coaching reports.
- Server-side scenario allowlisting, transcript limits, output validation, and a 20-requests-per-minute per-IP limit.
- Gradle, Android unit tests and lint, Vitest, TypeScript typechecking, and GitHub Actions.
RevenueCat implementation
The paywall fetches the current RevenueCat Offering only when opened, displays the StoreProduct's localized price, and unlocks only when the configured replaylead_pro entitlement is active. Restore is always an explicit user action. Release builds fail if the public SDK key is missing or uses the Test Store test_ prefix.
For Google Play, monthly, annual, and lifetime products are active and mapped to the RevenueCat default Offering through the monthly, annual, and lifetime packages. Google Play real-time developer notifications cover subscriptions, voided purchases, and all one-time products; an end-to-end test notification was received by RevenueCat. The demo transaction uses RevenueCat Test Store, so it is simulated and is not presented as revenue.
Challenges we ran into
The first challenge was preventing Rewind from becoming a scripted visual trick. It therefore changes the underlying conversation state and preserves a real alternate branch. The second was honest monetization: the purchase button only enables after RevenueCat returns a real package and localized price. The third was AI reliability, solved with strict response validation, score normalization, rate limiting, and a clearly labeled local fallback.
Accomplishments that we are proud of
- A complete scenario-to-coaching journey that runs on an Android device.
- A real alternate-branch interaction that is understandable in seconds.
- Specific coaching tied to the Career Coaching criteria: realistic practice, useful feedback, and confidence building.
- Production-shaped RevenueCat and Google Play configuration without pretending that a simulated test purchase is revenue.
- A public MIT-licensed repository with passing Android and backend CI.
What we learned
Practice feels useful when feedback is narrow enough to act on immediately. One concrete improvement and a sentence the manager can actually say are more valuable than a long generic analysis. We also learned that monetization trust starts before checkout: live pricing, explicit restore, clear fallback states, and accurate claims matter as much as the purchase button.
What's next
Closed testing and a public Google Play release, followed by branch comparison, spaced practice plans, private progress history, voice rehearsal, and more scenarios for first-time team leads.
Built With
- android
- cloudflare-workers
- github-actions
- google-play
- gradle
- jetpack-compose
- kotlin
- revenuecat
- typescript
- vitest
- workers-ai
Log in or sign up for Devpost to join the conversation.