Inspiration

Independent living is often lost in the space between “everything is fine” and an emergency: a missed check-in, a small household problem, or a favor nobody clearly owns. Existing safety products can turn a resident’s life into monitoring, while ordinary home tools rarely coordinate the people a resident already trusts.

What it does

STAY gives an older adult one calm, accessible home for that middle ground. It combines a focused daily view, adaptive access preferences, resident-defined Safety Windows, ordinary Help Requests, household playbooks, a trusted Circle, privacy-filtered House Memory, and incident ownership.

The protected demonstration is deliberately deterministic: Sarah misses two Morning Safety Window checks; her saved plan opens Circle coordination; Sarah asks nearby helper Tom; Tom accepts; and every surface shows “Tom is on the way.” Bedrock does not decide the escalation order, disclose protected details, or close the incident.

STAY never claims to contact emergency services, diagnose a condition, detect a fall, or replace Alexa Emergency Assist. Weather, utility, device, maintenance, Ring, Smart Properties, and travel observations are visibly labeled simulations.

Why it matters

Independence is sustained by small, reliable acts: remembering one task, knowing that a path is lit, asking for ordinary help early, and making sure one trusted person owns a response. STAY supports those acts without continuous tracking or opaque automated escalation. The resident chooses the Circle, the order, and the disclosure boundary; the system makes that plan dependable.

How we built it

The safety plane is deterministic TypeScript. Every write requires an idempotency key and expected version. A DynamoDB transaction updates the aggregate, reserves the idempotency key, and appends an outbox event. DynamoDB Streams publish to a dedicated EventBridge bus; SQS-backed consumers deliver WebSocket hints, minimal SES email, and metrics with DLQs. WebSocket clients reconcile through REST after reconnect.

EventBridge Scheduler creates named one-time open, first-check, and grace-expiry invocations carrying the expected aggregate version. A resident check-in, cancellation, duplicate delivery, delayed delivery, or retry therefore becomes a logged no-op when no longer current.

Cognito uses authorization code plus PKCE for the public PWA client, a confidential account-linking client, token revocation, refresh rotation, and no identity pool. The public demo currently uses API Gateway plus a Lambda reader over a private KMS-encrypted S3 bucket because AWS has not yet cleared this account for CloudFront distribution creation; the CloudFront/private-S3 upgrade remains prepared in CDK. DynamoDB uses KMS, PITR, TTL, on-demand capacity, and Streams. Lambda uses Node 22, ARM64, X-Ray, structured logs, bounded timeouts, and adaptive AWS SDK retries. CloudWatch alarms and a $25 alert-only budget surface failures.

How we used AI

STAY uses AI only in its optional convenience plane. The Strands agent and Amazon Bedrock Converse integration are implemented for the exact Nova Micro profile in us-east-1, but the deployed account currently reports NOT_AUTHORIZED, so the live AI feature gate is off. When authorized, it interprets only a short redacted intent envelope and produces concise, non-critical guidance. Contact details, addresses, access instructions, location, and unrestricted House Memory are excluded. Every model-produced argument is schema-validated, and the deterministic application—not the model—executes commands.

There is no silent model fallback. If Bedrock is unavailable, Safety Windows, scheduled checks, Help Requests, Circle assignment, touch forms, privacy controls, and incident state machines continue to work. The submitted Alexa+ route is a self-hosted Streamable HTTP MCP server plus a web simulator; ten goal-level tools return accessible text, typed structured content, provenance, and hashed widget resources.

Key features

  • HOME: One Thing Mode, home check, path lighting, calendar context, ordinary Help Requests, and House Memory.
  • ACCESS: voice-first, touch-first, captions, extra response time, repeated information, high legibility, contrast, reduced load, and reduced motion.
  • WINDOWS: resident-created templates, two deterministic checks, grace periods, early closure, cancellation, resolution, versioned scheduling, and an audit trail.
  • CIRCLE: scoped roles, priorities, availability, acceptance/decline, response ownership, incident-limited protected details, Help Board, and privacy settings.
  • PLAYBOOKS: Power Outage, Water Leak, Extreme Heat, Severe Weather, and resident-authored offline plans, with every provider visibly marked live, simulated, or unavailable.
  • INCIDENTS: activation, verification, assignment, response, escalation, resolution, and an append-only timeline.
  • ALEXA+ MCP: ten goal-level tools over Streamable HTTP MCP 2025-11-25, with a legacy initialization compatibility path and accessible widget resources.
  • PUBLIC DEMO: four-hour browser- or DynamoDB-scoped synthetic sessions that cannot address authenticated household partitions.

Challenges and what we learned

The hardest problem was not generating language; it was making safety coordination coherent under duplicates, stale schedules, concurrent responders, disconnected clients, expired tokens, and unavailable providers. That led to a strict separation between deterministic safety policy and generative intent interpretation.

Alexa+ partner access is not generally available, and current Alexa examples reference a legacy initialization path while the track requires MCP 2025-11-25 or later. STAY therefore registers tools once and serves both protocol eras, and it submits the explicitly permitted simulator path without representing it as device evidence.

We also learned that accessibility settings cannot be a cosmetic preference panel. They must change the actual interaction model while leaving safety policy invariant. The same protected flow is therefore tested touch-only, keyboard-first, and at desktop, mobile, Echo Show 8, and Echo Show 15 dimensions.

Known limitations

  • Real Alexa+ add-on deployment, Local Inspector, account linking, and device tests require partner access and remain unavailable unless granted.
  • Weather, outage, maintenance, Ring, Smart Properties, smart-home devices, and travel estimates are simulated adapters.
  • STAY does not contact an emergency provider and is not a medical device or fall detector.
  • Nova Micro is regionally available but the AWS account remains NOT_AUTHORIZED, so the optional Bedrock intent layer is disabled with no silent model fallback.
  • SES is domain-authenticated for STAY <[email protected]> with DKIM, custom MAIL FROM/SPF, and DMARC. SES accepted the live sender test; the requested production-access details were sent, but the SES API still reports a denied review and the account remains in the sandbox.
  • CloudFront creation is account-provider blocked; the judge demo uses the deployed API Gateway/private-S3 fallback while AWS Support reviews account-verification case 178838741100092.
  • Manual screen-reader and physical-device testing remain release gates; automated axe checks are not presented as full assistive-technology certification.
  • Arabic content, payments, native mobile apps, biometrics, and real provider onboarding are outside this release.

Built With

Share this project:

Updates

Submission history