Inspiration
We cared for my grandmother, and the hardest part wasn't the caregiving itself — it was keeping track of it. Information about her lived scattered across private chats and family WhatsApp groups: did she take her medicine today? How did she feel this morning? Did she go for her walk? Every caregiver in the family had a different, incomplete picture, and things fell through the cracks constantly — not because anyone didn't care, but because there was no single place to see the full story.
We built CareRelay so no family has to reconstruct "what happened today" by scrolling up through a dozen chat threads ever again.
What it does
CareRelay replaces the family WhatsApp thread with a shared care app for iOS and Android:
- Today: the next task, who's on duty right now, and the most recent updates — the one screen everyone checks first.
- Timeline: every event — medication, meals, symptoms, mood, physical activity, appointments — in one shared, filterable feed.
- Plan: a shared task list (meds, calls, errands) grouped by day, so nothing is "someone else's job" by accident.
- Log: log an update by typing or recording a voice note — AI turns it into a structured event, but the family always reviews and confirms before it's published. CareRelay never diagnoses or gives clinical advice.
- Handoff: a clear summary of what happened and what's pending when care responsibility passes from one family member to another.
- Family: invite family members and caregivers with a code, assign roles, and know who's in charge at any moment.
- Profile: emergency contacts, medications, allergies, and preferences for the person being cared for, ready to hand to a new caregiver or bring to a doctor's visit.
- Family subscription: one subscription, powered by RevenueCat, covers the whole family circle.
How we built it
Family Care Relay is a single Compose Multiplatform codebase shared between Android and iOS:
- UI: Jetpack Compose + Material 3, one
composeAppmodule for both platforms, with a calm, generous-typography design system — red is reserved strictly for true errors, never used to alarm caregivers over routine updates. - Architecture: MVVM with one ViewModel per screen and Kotlin
StateFlow, dependency injection via Koin (AppModule,NetworkModule, and anexpect/actual PlatformModulefor platform-specific bindings). - Backend: a separate Ktor service (CareRelayBackend) backed by MongoDB, which calls OpenAI to turn a voice or text note into a structured timeline event proposal — the client never talks to OpenAI directly, keeping API keys off-device.
- Auth: Firebase Auth with Google Sign-In via KMPAuth.
- Voice-to-text: native on-device speech recognition on each platform (
SpeechRecognizeron Android,SFSpeechRecognizeron iOS) behind a singleexpect/actual VoiceTranscriberinterface, so the shared code never has to know which platform it's running on. - Monetization: RevenueCat KMP (
purchases-core+purchases-ui) powers the family subscription paywall on both platforms from one shared Kotlin implementation.
Challenges we ran into
- Keeping AI assistive, never authoritative. The whole point of CareRelay is trust between family members — so every AI-extracted event (medication, symptom, mood) is a proposal the family must confirm before it's published to the shared timeline. Getting that confirmation step to feel fast instead of like extra busywork took several iterations.
- One codebase, two native platforms. Voice transcription has completely different native APIs on Android and iOS. Wrapping that behind a single
expect/actualinterface so the shared ViewModel layer stays platform-agnostic took real Kotlin Multiplatform design work. - Designing for a hard moment without looking clinical. Caregiving apps easily end up looking like hospital software. We deliberately built a calm color palette and warm typography so families don't feel like they're operating a medical device — because they're not diagnosing anything, just talking to each other.
Accomplishments that we're proud of
- A real, working cross-platform app — not a prototype — built from one shared Kotlin codebase for iOS and Android.
- An AI logging flow that's genuinely useful (a 10-second voice note becomes a structured update) while keeping a human-in-the-loop confirmation step, so the app never publishes something nobody actually said.
- A calm, non-clinical design system that makes a hard topic — caring for someone you love — feel a little less overwhelming to use every day.
What we learned
- How much of caregiver stress is really just information loss — not knowing what already happened, or who was supposed to do what — and how much a shared timeline alone reduces that anxiety, even before adding AI.
- Practical Kotlin Multiplatform patterns for isolating platform-specific APIs (like native speech-to-text) behind clean
expect/actualinterfaces without leaking platform details into the shared ViewModel/UI layer. - That a paywall people are willing to pay for, for a family, needs to be framed around "protecting your family's peace of mind" — not "unlocking features."
What's next
We deliberately kept Family Care Relay's MVP focused: one person cared for at a time, no clinical claims, no doctor integrations. Next on the roadmap:
- Multiple people under care in the same account, for families juggling care for more than one relative at once.
- Doctor and caregiver collaboration features — starting with easier ways to share the Person Profile and the Relevo handoff summary with a professional caregiver or during a doctor's visit, without turning CareRelay into a clinical record.
- Publishing to Google Play alongside the App Store, since the app is already fully cross-platform.
- Growing with real families past the hackathon, and using what we learn from them to prioritize what comes next.
Log in or sign up for Devpost to join the conversation.