Inspiration

Charge nurses and nurse managers are expected to have some of the hardest conversations in healthcare telling a colleague their documentation was wrong, saying no to unsafe overtime, de-escalating conflict mid-shift — and almost none of them get trained for it. Clinical skills are rehearsed constantly before they're used on a real patient. Interpersonal leadership skills usually aren't rehearsed at all; the first real attempt often happens under pressure, with real relationships and real consequences on the line.

Every existing tool we found in this space is enterprise software — sold to hospital systems, not to the individual nurse who needs it tonight before tomorrow's shift. We wanted to build something a nurse could actually download and use on their own.

What it does

PrepRounds is a private practice space for the conversations charge nurses and nurse managers dread most. You pick a real scenario, have a live conversation with an AI colleague persona that responds the way a real person would — with resistance, defensiveness, and pushback, not just agreement — and afterward get a structured debrief: what you said that actually worked, quoted directly from your own words, and one concrete thing to try differently next time.

The app is personalized to your role (Charge Nurse, Aspiring Charge Nurse, or New Nurse Manager), tracks your practice history and confidence trend over time, and is explicitly grounded in real nursing leadership and communication frameworks — AACN's communication competency standards, AONL's Nurse Leader Core Competencies, and AHRQ's TeamSTEPPS tools (DESC and CUS) — cited directly in the app so it doesn't just feel evidence-informed, it is.

How we built it

React Native (Expo) on the client, with Supabase (Postgres + Row-Level Security, anonymous auth) as the backend. The AI persona and feedback generation run server-side through a Supabase Edge Function calling Google's Gemini API — the API key never touches the client. RevenueCat handles the entire subscription lifecycle: a shared pro entitlement across a Test Store app (for development) and a real App Store app (for production), one offering, and a custom-built paywall with a real free/Pro comparison table. OneSignal handles optional daily practice reminders, and Google AdMob powers rewarded bonus sessions for free-tier users.

The build process itself was an architect/implementation-agent workflow: Claude as spec-owner making explicit product decisions and recording them in versioned spec docs, Claude Code as the hands-on implementation agent — investigating, verifying, and flagging ambiguity back rather than deciding unilaterally.

Challenges we ran into

The honest version: several real production bugs, each one only fully understood after real investigation, not assumption.

The roleplay engine was ending conversations after one exchange. The model was emitting a scene-complete signal almost immediately — confirmed across three different scenarios, all collapsing by turn 2-3 instead of the intended 4-8. The fix was a combination of prompt rewrite and a deterministic server-side minimum-turn floor, verified with real transcripts before and after: baseline turns of 2/3/3 became a consistent 4/4/4, with personas holding position and introducing fresh objections rather than folding.

A feedback-generation bug with a 62% failure rate, traced through Supabase's actual server logs to a single missing schema constraint — the AI's response schema allowed empty arrays, but the validator rejected them. A genuinely good model response (real quotes, coherent reasoning) was being thrown away because the schema never told the model an empty try_instead array wasn't allowed. Tightening the schema to match the validator's actual requirements took the failure rate to zero.

A RevenueCat key mixed up between Test Store and production, caught live on a real device via TestFlight rather than in review — better there than in front of App Review.

Apple's own review process flagged a stale, unused tracking permission string and a default-on iPad device family neither of which reflected the app's actual behavior — both traced to source, confirmed via the compiled binary (not just the config), and resolved cleanly.

Accomplishments that we're proud of

Getting a real, working, multi-turn AI roleplay engine that holds a consistent persona under pushback — not a chatbot that agrees with everything the user says. Building a debrief that's evidence-grounded: every quote it shows the user was programmatically verified as a real substring of what they actually typed, not a plausible-sounding hallucination. And doing all of it with a debugging discipline that treated "it should work" as never good enough — every real fix was verified against real data, real logs, or a real device before being called done.

What we learned

That the gap between "looks right in a code read" and "actually works" is often exactly where the real bugs live — the feedback schema issue passed every obvious check and still failed 62% of the time in production. And that shipping something narrow and genuinely working beats shipping something broad and half-verified, especially against a deadline.

What's next for PrepRounds

A stateful persona engine with formal emotional variables (openness, defensiveness, trust) instead of prompt-only behavior; a five-dimension evaluation rubric (psychological safety, clarity, active listening, resistance handling, actionability) replacing today's prose-based scoring; a "Custom Round" generator letting Pro users describe their own real situation (with a privacy guardrail to keep patient-identifiable information out); and unit-specific scenario variation alongside the role-based personalization already shipped. All of it is scoped and written down — the next phase is building it.

Built With

Share this project:

Updates

Submission history