Inspiration
Elective surgeries get cancelled on the day for reasons that were knowable a week earlier: pre-op blood work that's too old, a blood thinner nobody paused, no ride home, a new symptom nobody heard about. The facts exist, but they're scattered across the health record, the patient's phone and the OR schedule, and a coordinator has to stitch them together by hand, usually too late.
What it does
ReadyFor gives a surgical team one board for the next two weeks (or four or eight, for planning ahead).
- Record check. Reads each patient's health record, classifies every active medication through the NLM's RxClass, and applies documented, procedure-specific rules to list exactly what's missing. Every finding shows its source.
- Patients over iMessage, no app. ReadyFor texts the patient for what only they can provide. AI (Gemini) reads their replies and photos of outside lab reports, checking the date, the name and the required results, then queues the evidence for a nurse to verify.
- Staff stay in charge. The AI never clears anything clinical. Medication messages come from staff-approved templates that a nurse or surgeon fills in. Every action is tied to a signed-in person (Neon Auth), with role-based permissions: coordinators can't clear labs or medication.
- Urgent escalation. A reported symptom texts the on-call nurse. If nobody acknowledges within minutes, it escalates to the surgeon, then the next person. Staff accept with one tap or by replying ACK, and only then is the patient told who has their message.
- Backup patients. If a surgery is still at risk inside a week, ReadyFor suggests waiting-list patients for the same procedure and surgeon who could take the slot, so the OR time isn't wasted. Staff make every offer, and the original surgery is never changed automatically.
- Schedule checks. A FHIR scheduling feed flags OR booking mismatches, unconfirmed pre-op visits and missing anesthesia consults, separate from patient readiness. Staff can assign a fix or mark an item checked.
- Nothing fails silently. Every text is tracked as queued, delivered or failed, with retry. A daily recheck catches new problems, and asks for a re-review when the record changes after a staff decision.
- ASI:One. A Fetch.ai agent lets authorised staff ask "what's at risk this week?", see urgent alerts, and confirm actions in chat.
How we built it
- Core: Bun + Hono API with a written contract shared between team members.
- Data: Neon Postgres (schema upgrades on start) and Neon Auth (JWT verification against the branch JWKS, a staff allowlist, and separate service tokens for the iMessage adapter and the agent).
- AI: Gemini for message classification and lab-report extraction, with retries and model fallback.
- Messaging: Photon Spectrum for iMessage.
- Clinical data: FinchNode synthetic records and RxClass drug classes.
- Agent: a Fetch.ai uAgent on the Chat Protocol.
- Dashboard: a dependency-free web dashboard behind a same-origin gateway.
- Tests: 300+ automated tests.
Challenges we ran into
- Keeping the AI out of clinical decisions while still making it genuinely useful.
- Making failures visible. A retired Gemini model and an iMessage line that could only text registered numbers both tried to fail quietly; we made them show up instead of degrading silently.
- Authorising an agent that anyone on ASI:One can message.
- Honest wording: never promising a patient a callback that hasn't been arranged.
Accomplishments that we're proud of
- A full loop that works end to end on a real phone: record check → iMessage → lab photo → nurse verifies → readiness updates.
- An escalation chain that only tells the patient who has their concern once a named person has actually accepted it.
What we learned
- Healthcare software is mostly about accountability: who decided, based on what, and when.
- The best interface for an older patient might just be a text message.
What's next
- Live hospital integration: reading real FHIR/HL7 scheduling and EHR feeds instead of synthetic ones.
- Patient enrolment with a consent opt-in at booking.
- Texted standby offers.
- Per-clinic on-call rotas.
All patient data in this project is synthetic.
Built With
- agentverse
- bun
- css
- fetch-ai
- fhir
- finchnode
- gemini
- google-ai
- hono
- html
- imessage
- javascript
- jwt
- neon
- neon-auth
- photon
- postgresql
- python
- rxclass
- spectrum
- typescript
- uagents
Log in or sign up for Devpost to join the conversation.