About AURA
Ambient wellness check-ins for elderly care, built with Google ADK 2.0 for the Kaggle Agents for Good capstone. Natural-language conversations update structured wellness metrics, escalate critical cases to caregivers, and keep LLM agents away from direct database writes.
The problem
Patients living independently often go unmonitored between caregiver visits. Missed medication and undetected mood decline drive preventable hospitalizations. Caregivers need early warning without turning daily check-ins into surveillance or storing unnecessary health narrative in telemetry.
How it works
Each patient message runs through a state-driven ADK workflow. LLM nodes handle language; deterministic Python nodes handle persistence and escalation routing.
log_input_node
Records the patient message, resolves the active profile, and injects the medication
schedule with id= keys for downstream extraction.
MedicationExtractorNode
Maps natural language to exact medication ids and outputs
medication_updates plus a compliance flag. No database write tools.
CompanionNode
Generates an empathetic reply and mood score (1–10). Reads extraction output but cannot persist metrics itself.
persist_metrics_node
Merges companion mood with extractor output, validates against a server-side allowlist, and writes the only permitted fields to patient JSON via MCP.
EscalationNode
Updates consecutive missed-cycle counters and routes to alert when
consecutive_missed_cycles ≥ 2 or mood_score < 3; otherwise
normal. No LLM call for this decision.
Tool isolation is enforced in code: companion and extractor agents never receive write tools, so a prompt injection cannot push arbitrary data into the secure store.
Privacy by construction
The MCP metrics path accepts only mood_score, medication_compliance,
and medication_updates (taken / missed /
pending per med). Extra keys or invalid values are rejected before storage.
Patient dashboard JSON is passcode-gated and scoped to one profile at a time. Longitudinal
telemetry history is keyed by a one-way subject_hash of the patient id, separate
from the human-readable dashboard record. Activity logs track agent runs without exposing
passcodes in API responses.
Demo surfaces
- Patient view (/) — passcode unlock, companion chat, live patient JSON, agent activity sidebar, guided demo prompts.
- Provider view (/provider/) — roster, alert inbox, patient drill-down, and demo CRUD behind a provider passcode.
- Reset demo data restores clinical seed data from
app/seed_db.jsonfor repeatable judge walkthroughs.
Demo passcodes are configured on the server via environment variables. See the competition writeup or video for judge access.
Why it matters
Caregivers hear about problems when thresholds are crossed, not on every routine check-in. Patients interact through conversation instead of forms. And because persistence and escalation are deterministic and testable, the safety model can be reviewed in source — important for anything touching health data.