Inspiration
In 1955, Gran learned to ride her brother's big black bicycle. Nobody wrote that story down, and one day it will be gone. Meanwhile her 7-year-old grandson answers every "how was school?" with "fine", and his parents have no idea whether his speaking is growing.
Families already share one assistant in the room: Alexa. We wanted it to be more than a timer and a weather report. We wanted it to be the family's shared memory, where every generation's stories meet and help each other.
What it does
Hearth is a family voice journal on Alexa+. Everyone talks to it in a way that fits them:
- Kids get speaking practice. Alexa asks about their day, says their idea back a little more fully (a recast, the technique speech educators use), and asks one follow-up question. It never corrects them. Parents see words per answer grow (in the demo, from 7 to 27) and the new "big words" their child starts using.
- Adults keep a one-minute daily log. Hearth spots patterns ("you've mentioned feeling tired four times this week") and answers questions like "when is the plumber coming?"
- Grandparents record a memoir, one life-story question a day, organised into chapters.
What makes it a family app:
- Family Threads. Stories travel between generations. Gran's bicycle story becomes tonight's question for Leo. His answer goes back to Gran as tomorrow's question.
- Family Table. "Alexa, start a Hearth chat with Gran and Leo." Alexa hosts a conversation at the dinner table, often opening with a story waiting between two people, and saves each person's words to their own journal.
- Family Radio. A three-minute spoken recap of the family's week, with a highlight for each person, the kids' Word of the Week and a moment from Gran's memoir.
- Echo Show screens. The child's words with a "new big word" sticker, the progress chart, Family Radio and the family around the hearth.
- Opt-in care nudges. If a child mentions Mum seems tired, Dad gets a gentle nudge to check in. It never says who mentioned it.
Trust, enforced in code rather than in a prompt:
- Who sees what: children's journals are visible only to parents, private entries only to their author, and the household view shows only shared adult entries.
- A light PIN stands in for voice ID, only for parent-level actions.
- Parent consent is required before adding a child.
- "Alexa, delete what I just said" removes an entry.
- Retention limits: kids' and adults' entries are kept for a year; the memoir is kept until deleted.
- Possible safety disclosures ("someone hurt me and told me not to tell") are kept from everyone in the house and never sent to the AI. Alexa answers gently and points to a trusted adult or a helpline.
How we built it
- MCP server in TypeScript with the official
@modelcontextprotocol/sdk. It uses spec 2025-11-25 over Streamable HTTP (POST /mcp). It's stateless, checksOriginand the protocol version, and exposes 12 tools. - MCP Apps (
@modelcontextprotocol/ext-apps). Four tools carryui://hearth/screen.html, a 1280×800 Echo Show screen that renders each tool result. - Agent Skill.
skills/hearth/SKILL.mdfollows the open Agent Skills format and teaches any agent how to host Hearth: the journal flow, the exact-words rule, PINs, safety replies and voice style. - Simulated Alexa+ at
/sim, as the track allows. An Amazon Bedrock (Nova Lite) agent loads the Agent Skill and reaches Hearth only through MCP, using Converse tool use with the tool list taken fromtools/list. The page also has:- photo chips standing in for voice ID
- browser speech in and out
- a real MCP Apps host (
AppBridge) that renders the screen in a sandboxed iframe - a "What Alexa+ did" panel showing every MCP call
- Amazon Bedrock writes the story threads between generations, the summaries and Family Radio. Bedrock Guardrails (or an offline filter) checks anything headed to a child.
- Kids' metrics are computed in code, not by the AI. Words per answer, plus age-graded big words based on SUBTLEX-US spoken-word frequency and syllable counts.
- SQLite (
node:sqlite), Express 5, a family dashboard with live refresh, 37 end-to-end tests, and 6 tests against a mock Bedrock.
Challenges we ran into
- The 500 ms budget. Alexa+ expects an answer within half a second, and a model call takes about two seconds. So every tool answers straight away from code (the recast, the follow-up, the metrics) in about 20 ms. Bedrock enriches the entry in the background, and Family Radio is written ahead of time.
- A small model invented a child's answer. In testing, Nova Lite opened Leo's journal, made up "I felt happy and proud", and saved it as his entry. For an app built on a child's real words, that's the worst possible bug. Now Hearth refuses any entry that isn't the speaker's exact words. It also rejects third-person summaries ("Leo said he…"), and the simulator saves answers word for word without giving the model a chance to paraphrase.
- Privacy in a shared house. A family isn't one user. We had to model who can see what (parents, kids, grandparents, the whole household) and decide that some things, like safety disclosures, go to no one in the house.
- Rate limits on a new AWS account. Hearth falls back to templates and retries with backoff, so the experience never breaks.
Accomplishments that we're proud of
- The Family Threads loop actually works end to end: Gran's story becomes Leo's question, and his answer goes back to her.
- Speaking-practice numbers that are honest: they're computed from a child's real words, and labelled as practice indicators, not a diagnosis.
- A complete Alexa+ experience in the browser, with the screen and the MCP calls visible, that runs fully offline when there's no AWS key.
What we learned
- With MCP, the tool descriptions are the product: Alexa+ picks a tool based on how it's described.
- Rules that matter (privacy, safety, exact words) belong in server code, not in a prompt the model may ignore.
- Voice interfaces for kids need patience built in: one follow-up, never a quiz, never a correction.
What's next for Hearth
- Onboard to a real Alexa+ device with voice ID, retiring the PIN.
- Shared Threads between extended families in different homes, so a grandparent in one house can pass stories to grandchildren in another.
- Semantic recall ("what did Gran say about the farm?") across years of entries.
- A printed memoir book from Gran's chapters.
Built With
- agent
- alexa
- amazon-alexa
- amazon-bedrock
- amazon-nova
- amazon-web-services
- docker
- esbuild
- express.js
- mcp
- node.js
- sqlite
- typescript
Log in or sign up for Devpost to join the conversation.