Inspiration

I am genuinely bad at remembering things. Deadlines, appointments, and yes, medicines. If my mom is around, I am fine, because she will remind me three times before I even need it. But the moment she is not around, I take my chances. I convince myself I will remember, and half the time I do not.

At some point I realized I am probably not the only one. A lot of people, especially anyone managing a chronic condition or looking after an elderly parent, do not have a "mom in the room" reminding them every few hours. So I asked myself what it would look like if that reminder could just exist, quietly, in the background, without anyone having to nag anyone. That is where MediMate started.

What it does

MediMate is a voice-first health companion. You talk to it the way you would talk to a person, and it keeps track of your medications, your daily schedule, your dose history, and how you have been feeling. It builds you an emergency health card you can hand to a doctor without having to explain your whole history from memory. And if something you say sounds urgent, it does not just log it quietly, it flags it.

It also has a Care Circle feature, so a family member can be looped in with permissions that you control and can take away at any time. Because realistically, the people who care about your health are not always in the room, and they should not have to be for you to be safe.

How I built it

The frontend is React, TypeScript, and Vite. All the real data, medications, schedules, dose logs, conversations, lives in Supabase, with Row Level Security locked down on every table so a patient can only ever see their own record. There is no mock data anywhere in the app; if you sign up, you are starting from a genuinely empty, real account.

The AI layer runs through a Supabase Edge Function rather than calling the model straight from the browser. That function checks the user's consent, pulls only the relevant slice of their record, and sends that to Groq for the actual response. For public medication information, it can pull from Tavily search rather than relying on the model to guess. Care Circle invites go out through EmailJS, and the whole thing is deployed on Vercel.

I built it in layers: auth and the database schema first, then the medication and dose tracking, then the voice chat and AI insights, and Care Circle right at the end once the core patient experience actually worked.

Challenges I ran into

Getting the AI to be genuinely useful without ever crossing into giving medical advice took a lot of back and forth. It is easy to make an assistant that sounds helpful and confident, it is a lot harder to make one that knows exactly where its job ends and a doctor's begins, and says so clearly instead of guessing.

Row Level Security also fought me more than I expected. Getting every table locked down so a user can only ever touch their own data, while still letting Care Circle members see the parts they are permitted to see, meant a lot of careful policy writing and a lot of "wait, why can this account see that."

And honestly, voice input in the browser is finicky. Getting speech recognition to feel reliable enough that someone would actually trust it with something as personal as their medication routine took more tuning than I expected going in.

What I learned

I learned that privacy cannot be an afterthought bolted on at the end, it has to be part of the schema from the very first migration. I also learned a lot about designing AI behavior around a hard boundary, teaching a model not just what to say but what to firmly refuse to say. And on a more personal note, building this made me think a lot more seriously about my own habits, and about the quiet, unglamorous kind of care that keeps people safe when no one is reminding them out loud.

Accomplishments that I am proud of

I got real security working, not fake demo data, actual Row Level Security so every patient's records stay private and every table is locked down to the right user.

I am also proud of the Care Circle feature actually working end to end, invitations go out, permissions can be set and revoked, and family members get EmailJS updates when something needs their attention. It turns MediMate from something you use alone into something a whole family can rely on.

The voice chatbot came together better than I expected too. It understands what you say, replies out loud, remembers your conversation history, and gives helpful, personalized answers based on your actual record, all while staying firmly within its lane and never diagnosing or prescribing anything.

And on top of all that, I shipped a fully working app end to end in the time I had, not a prototype, a real deployed product with a real database behind it.

What's next for MediMate

The reminders right now are check-in based, so the next step is real push notifications and smarter scheduling that actually adjusts if a dose gets missed instead of just firing once and moving on.

I also want to add support for more languages. A lot of the people who need something like this most are not always comfortable using a health app that only works in English, and I want MediMate to feel usable for them too, not just for one demographic.

And down the line, I would like to add direct pharmacy integration, so refills can be requested right from inside the app instead of being one more thing a patient has to remember to do on their own.

Built With

Share this project:

Updates