Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AskFirst

A caretaking check-in companion built for a simulated Alexa+ experience — Amazon Developer Hackathon 2026, Alexa+ track.

The one rule it never breaks: it will not tell your family anything without asking you first.

What it is

A check-in companion for someone being cared for (e.g. an aging parent), and the family member who worries about them — but the care recipient is the one who talks to it, and the care recipient is the one who decides whether their family gets told anything.

  1. The person checks in by voice/chat whenever they want ("I'm doing fine today").
  2. If asked to notify a family contact, the agent never sends anything directly — it drafts the exact message first and shows it, unsent, for confirmation.
  3. Only on an explicit approval does anything leave the system — a real email to the family contact.
  4. The family member can ask for a plain-language weekly summary of check-ins, generated by AI — never raw data, never anything the care recipient didn't already choose to share.

This is not inferred from device or motion data, and it makes no health or symptom claims — purely explicit, schedule-based check-ins. Keeps it in reminder/companionship territory, not surveillance or medical-device territory.

Why propose_notify and send_notification are two separate tools

A tool that could both draft and send in one call can't be trusted not to send. The split is what makes "ask first" structurally true rather than a prompt-engineered promise: send_notification only ever acts on a proposal_id an earlier propose_notify call created, and the host's agent loop intercepts any attempted send unconditionally — regardless of what the model decides — until a human clicks Approve. The gate is in the code, not in the prompt.

Architecture

mcp-server/       the real MCP server — Streamable HTTP, MCP spec 2025-11-25
  tools:
    check_in           WRITE, free — self-report, no confirmation needed
    get_status          READ — last check-in, streak, missed?
    list_contacts       READ — who could be notified
    propose_notify      WRITE, gated — drafts a message, returns it unsent with a proposal_id
    send_notification    WRITE — only acts on an existing proposal_id; sends real email via Resend
    weekly_summary       READ — Cloudflare Workers AI (free), falls back to a computed summary
  storage: Cloudflare D1

simulated-host/    the "Alexa+ stand-in" — a small web chat surface
  - a real LLM (Cloudflare Workers AI) decides when to call mcp-server tools from natural language
  - renders the confirmation moment as an explicit approve/reject, not an auto-continue
  - this is what the demo video shows running

submission/        Devpost demo video + narration

Both Workers run entirely on Cloudflare's free tier (Workers, D1, Workers AI, Rate Limiting) — no AWS services and no billing setup required.

Running it locally

Each subproject has its own README (mcp-server/README.md, simulated-host/README.md) with full setup steps. Both need Node 22+ (.nvmrc pinned) and a free Cloudflare account.

cd mcp-server && npm install && npm run dev      # the MCP server
cd simulated-host && npm install && npm run dev  # the chat UI, in another terminal

License

MIT — see LICENSE.

About

AskFirst — a caretaking companion that asks before it tells anyone anything (Amazon Dev Hackathon, Alexa+ track)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages