Inspiration

The project started with one of our teammate's father, who lives with Parkinson's disease along with several other health conditions. Watching his daily medication routine made us realize how complicated it really is. It's a lot more than just remembering to take a pill every morning. Rather, it's keeping track of multiple prescriptions at different times of day, sometimes with sometimes with different instructions or symptom based doses.

Missing a dose or accidentally taking one twice can have serious consequences, yet most medication management tools either rely on paper instructions or mobile apps that assume perfect eyesight, memory, or a caregiver constantly checking in. We wanted to build something that better reflects how people actually manage medication: easy to read, forgiving when memory slips, and backed by physical hardware instead of another notification that is easy to ignore.

What it does

GitPill is a medication management companion that combines AI software with a physical pill dispenser. Users can point their phone's camera at a prescription bottle, and Google Gemini automatically extracts the medication name, dosage, and schedule from the label. When a new medication is added, GitPill checks it against the user's saved allergies and immediately flags potential issues. It also analyzes the user's entire medication list for drug interactions and therapeutic duplication instead of evaluating each medication individually.

Each day, GitPill starts a conversational health check-in, asking users how they're feeling and logging those responses into a health summary that can be printed or shared with a doctor. On the hardware side, we built a four-compartment pill dispenser controlled by an Arduino. When it's time for a scheduled dose, GitPill can automatically open the correct compartment using a servo motor. The compartment stays open until the user confirms they've taken their medication, rather than closing after a fixed timer. For additional safety, the automatic opening feature can be disabled to prevent the dispenser from opening unattended around children or pets.

Accessibility was a priority from the beginning. The interface includes large, highly legible typography, multiple font options, adjustable text sizes, and a clean, high-contrast design that makes it easier to use for people with visual or cognitive impairments.

How we built it

Our team naturally divided the project based on our backgrounds in computer engineering, mechanical engineering, and electrical engineering. GitPill combines a web application with custom hardware to create a complete medication management system.

The software was built as a single-page HTML, CSS, and JavaScript application that communicates directly with the Google Gemini API. Gemini powers prescription label recognition, medication lookups, interaction checking, allergy verification, and the daily health check-in, all without requiring a backend server.

The physical dispenser was designed and 3D-printed from scratch, featuring a servo-driven four-compartment mechanism for dispensing scheduled medications. On the electronics side, servos were connected to an Arduino, with reliable USB serial communication implemented so the browser could control the dispenser directly through the Web Serial API.

The browser acts as the central controller for the entire system, maintaining medication schedules, triggering reminders, and sending simple OPEN and CLOSE commands to the dispenser whenever medication is due or confirmed as taken.

Challenges we ran into

One of our biggest challenges was dealing with changes to the Gemini API during the hackathon. We initially built around one model, only to discover that it had been deprecated for new API keys. That forced us to switch models midway through development while also tracking down an intermittent JSON formatting issue that only appeared under real usage. We also exhausted our free Gemini API quota through testing and had to migrate to another available model just to continue development.

On the hardware side, getting reliable communication between the browser and the Arduino took several iterations. We had to make sure commands weren't accidentally sent multiple times and that the application handled disconnected hardware gracefully instead of failing silently.

One feature we didn't quite finish was caregiver SMS notifications for missed doses. We had already integrated a Twilio relay, but the limitations of a trial account prevented us from sending fully customized text messages, and we ran out of time before we could adapt the implementation. The groundwork is there, but it wasn't fully functional by submission.

Accomplishments that we're proud of

We're especially proud that we built a browser-based application capable of controlling a real physical medication dispenser without relying on a backend server. When a scheduled reminder occurs, the correct compartment opens automatically and stays open until the user confirms they've taken the medication. It's more than a proof of concept, demonstrating a workflow that could realistically support someone managing medications every day.

We're also proud that accessibility wasn't treated as an afterthought. Every design decision, from typography to layout, was made with the people most likely to use the product in mind.

What we learned

This project reinforced how quickly AI platforms can change and why it's important to build software that can adapt to evolving models and APIs.

We also learned that once the right infrastructure is in place, adding meaningful safety features—like checking an entire medication regimen for interactions instead of evaluating medications one at a time—is much easier than it first appears.

Most importantly, we learned that designing for a real person leads to better products than designing for a generic user persona. Keeping an actual medication management experience in mind helped guide practical design decisions throughout the project.

What's next for GitPill

Our next goal is to finish the caregiver notification system, either by adapting to Twilio's messaging templates or switching to another SMS provider.

We also want to add sensors to the dispenser so it can detect when a compartment has actually been opened, allowing medication confirmation without requiring the user to interact with the phone. Beyond that, we'd like to expand interaction checking to account for existing medical conditions in addition to medications and, most importantly, begin testing GitPill with people who manage complex medication schedules every day so we can continue improving it based on real-world feedback.

Share this project:

Updates

Submission history