AURA

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 Med extractor Companion Privacy guard Escalation Alert / normal
Pre-process

log_input_node

Records the patient message, resolves the active profile, and injects the medication schedule with id= keys for downstream extraction.

LLM

MedicationExtractorNode

Maps natural language to exact medication ids and outputs medication_updates plus a compliance flag. No database write tools.

LLM

CompanionNode

Generates an empathetic reply and mood score (1–10). Reads extraction output but cannot persist metrics itself.

Deterministic

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.

Deterministic

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

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.