Nothing has to crash for a workflow to fail.
Sometimes the right information arrives, the right person is capable of acting on it, and the review still happens late because nobody carried the context from one moment to the next.
That is the problem I kept thinking about while building Day Three.
A broad antibiotic can be started before a culture is final. Later, when the report is complete, a pharmacist may have better evidence for a review. I did not want to build another chatbot that summarized the report and disappeared. I wanted to build something that could remember why the review mattered, wake when it was due, gather the supporting evidence, and then get out of the pharmacist's way.
My first idea was wrong
I began with a dramatic premise: small hospitals do not have stewardship programs, so software should bring one to them.
The research did not support it.
The CDC's 2025 stewardship update says that almost all reporting acute-care hospitals had adopted the seven Core Elements in 2024. Smaller studies of selected rural and critical-access hospitals instead described practical constraints such as limited time, staffing, expertise, and electronic-record support.
That changed the project. Day Three was no longer about replacing a missing program. It became a way to help an existing team carry one recurring piece of work across time.
The distinction matters. It kept me focused on coordination instead of pretending that a model should practice medicine.
The agent's real job is remembering
In the public demo, a synthetic microbiology report arrives before the review is due. Gemini transcribes the report into structured fields. Direct identifiers are removed before model review, and retained facts stay connected to the words that support them.
The workflow then creates a durable course record and registers future work. At the review point, it wakes, retrieves the latest evidence, checks the local context, and prepares a draft for a pharmacist.
The draft is not an order. Day Three cannot prescribe, choose a dose, change therapy, contact a patient, or write to a medical chart. Its job is to bring the pharmacist back to a review with the evidence still attached.
That is what makes it agentic to me. It is not the amount of text it produces. It is the fact that it can carry state and responsibility from now to later without quietly taking authority along with it.
You can try the live Day Three workflow or read the source on GitHub.
A local number can look more certain than it is
I also wanted the pharmacist to see local susceptibility context, but this introduced another trap.
A tiny isolate count can still produce a neat percentage. The number looks scientific even when the sample is too small to deserve that confidence. A study of low-isolate antibiograms made this risk concrete.
So Day Three sometimes shows less. When the count is below the declared threshold, the percentage is suppressed and the reason is visible. The interface does not fill empty space with false precision.
This became a broader product rule: uncertainty should remain visible, even when hiding it would make the demo look cleaner.
The hardest bug was an empty string
The most important rule in Day Three is simple:
No quote, no claim, no rendered sentence.
Every factual sentence in the pharmacist draft needs a source reference, and the quoted text must be present in the stored artifact.
I thought that boundary was solid until I found a wonderfully ordinary Python problem. An empty string is considered to be inside every other string. A source object with quoted_text = "" could therefore pass a naive containment check.
The claim looked sourced. The reference object existed. The verifier said yes. But there was no evidence at all.
Fixing that one case led me to probe the whole evidence chain. I found another path where the application created a fallback quote when extraction returned none. The text could appear in the report, but it was not the model's extracted evidence. The application had silently repaired the gap and broken the chain of custody.
Both shortcuts are gone. Missing evidence now stays missing, and unsupported prose does not reach the pharmacist.
That work changed how I think about grounded generation. Finding a sentence somewhere in a document is not enough. Provenance includes how that sentence entered the system.
The architecture follows the boundary
Day Three runs on Cloud Run with durable records in Firestore and scheduled work driven by Cloud Scheduler. Gemini handles the bounded transcription task. Gemma performs a second privacy review after deterministic redaction. Cloud Trace and Logging make the workflow inspectable.
The roles are deliberately narrow: intake, redaction, transcription, curation, scheduling, reconciliation, verification, and pharmacist review. They share one workflow, but they do not share unlimited authority.
The CDC Core Elements for Small and Critical Access Hospitals informed the human role and local context. A review of antimicrobial de-escalation timing informed the review window. Neither source proves that this software improves clinical outcomes, and the project does not make that claim.
The full source-to-decision trail is in the repository's research ledger.
What I would carry into the next build
I started this project thinking the interesting part would be the recommendation.
It was not.
The interesting part was deciding what the system must remember, what it must be able to prove, and exactly where it must stop. A useful agent can be proactive without being sovereign. It can wake, gather, check, and prepare while leaving the consequential judgment with the person who actually has the authority to make it.
That boundary made Day Three smaller than my first idea, but much more real.
I created this piece of content for the purposes of entering the All Things Agentic Hackathon.
If you were designing an agent for a high-stakes workflow, where would you draw the line between useful preparation and human authority?

Top comments (0)