💡 Inspiration
Most elderly health emergencies go undetected until symptoms become critical. VitalWatch was born from a simple question: What if we could catch subtle vital sign changes before they become life-threatening? Instead of waiting for the next doctor's appointment, we wanted to create a real-time safety net that alerts both patients and their families the moment something abnormal is detected—giving precious minutes to respond before it's too late.
🩺 What it does
VitalWatch is an AI-powered real-time health monitoring system for elderly care that:
- Monitors continuously: Streams vital signs (heart rate) from wearable devices (Apple Watch, Fitbit)
- Detects anomalies instantly: Uses KSQL streaming analytics with 5-minute time windows to identify sustained abnormal patterns (e.g., heart rate below 50 or above 120 bpm)
- Explains in plain language: Vertex AI Gemini generates two personalized messages:
- Simple, calm language for the patient: "Hello Maria, we noticed your heart rate is lower than usual. Are you feeling okay?"
- Medical context for family: "LOW_HEART_RATE alert. Patient history: Asthma, Glaucoma. Potential medication interaction."
- Converts to voice: ElevenLabs TTS transforms text into natural, empathetic audio
- Delivers multi-channel alerts: Within 10 seconds, the system simultaneously:
- 📞 Makes a voice call to the patient playing the personalized audio
- 📱 Sends SMS to family members with alert details
- 📊 Updates a live caregiver dashboard with real-time vitals
🛠️ How we built it
Tech Stack:
- Data Ingestion: Confluent Cloud Kafka for real-time streaming
- Anomaly Detection: KSQL Stream processing with time-windowed pattern detection
- AI/LLM: Vertex AI Gemini for personalized message generation
- Text-to-Speech: ElevenLabs API for natural voice synthesis
- Notifications: Twilio for voice calls and SMS
- Storage: Google Cloud Storage for audio files
- Data Warehouse: BigQuery for historical analytics
- Dashboard: Streamlit for real-time monitoring UI
- Deployment: Cloud Run (serverless) for scalable, containerized services
Architecture Flow:
- Wearables stream vitals → Kafka topics
- KSQL analyzes patterns in real-time (5-min windows)
- Anomaly triggers 3 parallel Cloud Run services:
- LLM Processor: Fetches patient profile + generates dual messages
- TTS Generator: Converts to audio + uploads to Cloud Storage
- Notification Service: Calls Twilio API for voice/SMS + updates dashboard
- All events logged to BigQuery for analysis
🚧 Challenges we ran into
- Authentication complexity: Generating signed URLs for private audio files so Twilio could fetch them securely was more complex than expected—required careful GCS IAM configuration
- Real-time latency constraints: Keeping end-to-end response under 10 seconds while calling multiple external APIs (Vertex AI, ElevenLabs, Twilio) required:
- Parallel processing with Cloud Run services
- Optimizing LLM prompts for speed
- Pre-warming connections
- KSQL tuning: Balancing sensitivity (catching real anomalies) vs. false positives (avoiding alert fatigue) through time window adjustments
- Data format inconsistencies: Handling device IDs with special characters in Kafka messages
🏆 Accomplishments that we're proud of
✅ Full end-to-end pipeline working: From live data stream → anomaly detection → AI explanation → real phone call in 10 seconds
✅ Dual personalized messaging: Different messages for patient (calm, simple) vs. family (medical context) shows true AI understanding
✅ Modular architecture: Can swap out LLM providers, TTS engines, or telephony services without redesigning the system
✅ Real proof-of-concept: Successfully made live phone calls with context-aware voice alerts during testing
📚 What we learned
Integration is 80% of the work: Connecting managed services (Kafka, Vertex AI, Cloud Storage, Twilio) requires getting identity, permissions, and data formats exactly right—individual APIs are easy, but the glue code is hard
User experience for elderly matters: Clear, calm language is critical. Too many notifications become noise; confusing prompts are dangerous. Simplicity > features
Stream processing complexity: KSQL is powerful but debugging windowing logic and handling late-arriving data requires deep understanding of stream semantics
Real-time AI isn't instant: LLM inference adds latency—had to optimize prompts and use streaming responses where possible
🚀 What's next for VitalWatch
Short-term:
- ✅ Tune anomaly thresholds using real patient data to reduce false positives
- ✅ Implement two-way interactions: Let patients acknowledge or escalate alerts directly from the call ("Press 1 if you need help")
Long-term:
- 📱 Multi-modal alerts: Wearable vibrations, mobile push notifications
- 🧠 Expand to more vitals: SpO2, blood pressure, sleep patterns
- 🤖 Machine learning models: Personalized baselines per patient (Maria's normal HR might be different from John's)
- 🌍 Multi-language support: Generate alerts in patient's preferred language
- 🏥 EHR integration: Share alert history with doctors during appointments
Vision: Make VitalWatch the default safety net for aging-in-place seniors—proactive care that prevents emergencies instead of reacting to them.
🎯 Try it live: Demo Video
📊 View Dashboard: Live Demo
💻 GitHub Repo: Source Code
Log in or sign up for Devpost to join the conversation.