Inspiration
Many older adults do not reliably use apps, portals, or passive reminders—yet families still need to know early when medication routines slip or when someone sounds unwell on the phone. MediCall was inspired by that gap: proactive voice check-ins that assume little more than answering a call, with clear escalation when the conversation or history warrants it.
What it does
MediCall coordinates daily outbound calls, brings in FDA recall / safety context matched to each patient’s medications, captures transcripts from the voice provider, classifies outcomes (e.g. took meds, missed meds, no answer, concern), and when rules fire, sends alert email to caregivers and clinicians via InsForge (with a mock mode for safe demos). A web dashboard surfaces patients, call history, alerts, and operator-visible errors when telephony or delivery fails.
How we built it
We used a TypeScript + Express backend serving the dashboard and JSON APIs. Vapi handles outbound calls and webhooks; the backend normalizes completion payloads and drives classification. Guild.ai runs a small coded agent that calls the deployed API to start the pipeline (defaults to production so demos do not depend on localhost). InsForge is integrated with the @insforge/sdk for transactional email on escalation. FDA-style grounding is implemented with in-service RSS/feed fetch and medication matching so the “live web context before the call” behavior is real and inspectable in the repo. We ship a public demo on Render.
Guild.ai — The Brain
Guild.ai is the backbone of MediCall. We built a fleet of four code-first autonomous agents running on Guild's auto-managed runtime — each one handling a critical piece of the patient care pipeline:
| Agent | What It Does |
|---|---|
| Call Pipeline Agent | Orchestrates the entire morning check-in flow — FDA fetch, voice call, result classification — in one trigger |
| FDA Monitor Agent | Pulls live recall data and matches it against each patient's medications |
| Alert Escalation Agent | Evaluates recent call history and fires caregiver/doctor notifications when risk thresholds are crossed |
| Weekly Report Agent | Generates compliance summaries for caregivers and physicians |
Every agent is code-first (AUTO_MANAGED_STATE), calling dedicated backend endpoints via fetch. No prompt engineering, no manual triggers — Guild agents wake up, do their job, and report back. The entire patient care workflow runs hands-free, on a schedule or on-demand.
TinyFish — Real-Time FDA Safety
TinyFish ingests the live FDA RSS recall feed in real time, cross-references every alert against a patient's active medication list, and surfaces matched recalls directly into the call context. If the FDA publishes a recall on a patient's medication at 8 AM, MediCall's voice agent is telling them about it by 8:01.
Vapi — The Voice
Vapi powers the actual phone calls. We use dynamic assistant overrides — injecting per-patient system prompts, medication context, and FDA recall data at call time. One Vapi assistant adapts its conversation to every patient's clinical profile. No manual configuration, no static scripts.
InsForge — Instant Escalation
InsForge powers our multi-channel escalation pipeline. The moment our alert engine detects a concern pattern — missed doses, symptoms like dizziness or chest pain — InsForge delivers real-time email notifications to both the caregiver and the physician. Seconds, not hours.
Challenges we faced
Telephony and provider limits fail loudly (HTTP 400s, quotas, number setup), so we invested in surfacing errors in the UI instead of silent failures. Environment defaults mattered: a Guild agent pointed at localhost would hit the wrong stack until we defaulted the backend URL to production and kept publish vs GitHub push mentally separate. Deploy hygiene on Render meant keeping private Guild npm packages out of the web service’s dependency tree while still publishing the agent through the Guild CLI (npx @guildai/cli also avoids the GNU Guile guild name collision on some machines). We also kept marketing language aligned with code—for example, InsForge in this build is primarily email delivery, while patient/call data for the demo path uses a structured in-memory store with explicit API contracts.
What we learned
The brittle part of “AI + autonomy” is often integrations: webhooks, public URLs, retries, and idempotency. Narrow sponsor roles (voice, schedule, email, grounded context) make both the architecture and the failure stories easier to explain to judges and users.
What’s next
Persist patients and call history in a real database with proper access control, add SMS where policy and budget allow, deepen monitoring and extraction for safety signals, and run user research with caregivers and clinics to tune escalation thresholds and copy for real populations—not just demo personas.
Built With
- guild.ai-(agent-sdk-+-cli)
- insforge-(@insforge/sdk)
- npm
- render
- tinyfish
- vapi-(voice-api-+-webhooks)

Log in or sign up for Devpost to join the conversation.