Inspiration
What it does
Inspiration
The idea behind OneTap is simple: during a busy shift, it is easy to lose track of where the time actually went. I wanted a way to record workload without adding another complicated task, so the basic interaction is just tapping the activity you are doing.
For this hackathon, I wanted to go one step further. Instead of only showing a report after the shift, I added a background agent that can look at the workload data over time and decide whether there is enough evidence to suggest a small experiment, evaluate an earlier experiment, or simply do nothing when the data is too weak.
What it does
During a shift, the user records activities such as direct patient care, documentation, coordination, administrative work and breaks.
When the shift ends, OneTap first creates the normal workload report. The calculations are deterministic: Python handles durations, percentages, baselines, thresholds and comparisons.
A background Workload Agent is then started automatically. It can:
- review the completed shift;
- compare it with recent comparable shifts;
- check whether a workload experiment is already active;
- create a small measurable experiment;
- evaluate an existing experiment; or
- defer when there is not enough reliable information.
The agent does not receive patient names, diagnoses, medications, clinical notes or medical records.
How I built it
The main application is built with Python and Streamlit and runs on Google Cloud Run. Firestore stores the workload data and agent jobs.
After a shift is completed, Pub/Sub sends the background job to a separate private Cloud Run worker. That worker runs a Google ADK agent with Gemini 3.5 Flash.
The agent only works through a small set of controlled tools. Those tools expose privacy-safe workload aggregates and keep the numerical decisions in deterministic Python code.
Challenges
The hardest part was making the background workflow reliable without changing the existing shift-reporting system. I also had to handle retries safely and make sure a failed agent job could never damage or replace the doctor's original report.
Another challenge was keeping a clear boundary between what Gemini can reason about and what should always be calculated by normal code.
What I learned
The main thing I learned is that an agent does not need to control everything to be useful. In OneTap, Gemini decides what action makes sense, but the calculations and safety checks stay in deterministic code.
I also learned a lot about connecting ADK, Pub/Sub, Cloud Run and Firestore into one background workflow.
Log in or sign up for Devpost to join the conversation.