-
Household page, made-up data: one member's private limits beside the week's chore plan the whole household sees
-
Simulator, made-up family: a care plan after three private answers, with the MCP tool calls the assistant made
-
Voice-only mode in the simulator: asks who can hear, asks for consent, and never reads an answer back unless asked
-
My time, made-up data: the scheduling agent explains a clash, suggests a way out and waits for the person's choice
-
Private pages on a phone, made-up data: a member's own household page and a remote person's answer link
-
Chores, made-up data: a new chore offered privately to one person, the week's plan and the fairness report
-
Simulator, made-up group: a trip picked from three private answers; the server holds each answer and shows none
-
When someone never answers: a stated default is used, and with two people the app warns a number can be inferred
-
Technical architecture: simulator and private pages, REST API, household agent, MCP server, services, decision and privacy engines
-
One household, three sizes of load: care, chores and the occasional decision share the same people and private profiles
-
How a family decision works: the device agent (Alexa+ stand-in) calls the Huddle MCP server; a remote person answers by link
-
How a chore gets assigned: offered to the best-fit person; the household never sees who was asked or who declined
-
Deployment: one container locally (runs today, no AWS needed); the AWS path is the target design, not yet deployed
Huddle: a fair, private home
Everyone in the household tells Huddle privately what they can take on. Huddle proposes a fair plan, with the trade-off explained, without saying who set which limit.
Inspiration
In a home the load piles up on one person, and it comes in three sizes: the heavy (caring for a parent), the daily (the chores) and the occasional (a weekend, a trip). Each depends on numbers people find hard to say aloud: how much time they can really give, what they can spend, what they can't do. Whoever speaks first sets the group's limit; everyone else stays quiet or carries more.
The evidence on how unequal the load is:
- BLS American Time Use Survey 2025: on an average day women spent 2.8 hours on household activities and men 2.1, among those who did any.
- Pew Research Center, 2021: 59% of women said they do more of the household chores than their partner.
- Daminger, American Sociological Review, 2019: in interviews with 35 couples, one partner did more of the anticipating and monitoring behind household tasks.
- Ervin et al., The Lancet Public Health, 2022: in 11 of 14 studies, women reported more distress as unpaid labour demands rose.
- AARP and the National Alliance for Caregiving, Caregiving in the U.S. 2025: 63 million Americans provided ongoing care in the past year, at roughly $7,200 a year out of pocket on average.
None of these studies test Huddle. That Huddle eases the load is a hypothesis: we have not yet tested it with real households. Sources and what each does and doesn't show: evidence-household-load.md.
What it does
Huddle handles all three sizes the same way, private limits in, one unattributed plan out, in one household: the same people and one private profile each.

- The heavy: sharing a parent's care. Each person privately gives the hours they can cover (check-ins, appointments and transport, meals, paperwork, overnight cover), the money they can put in each month, and the tasks they can't do. The family gets who owns which task, the gap in coarse bands, and ways to close it. Each person sees only their own hours.
- The daily: chores. A fair agent plans each week from everyone's private availability, preferences and skills, and keeps a ledger of what people actually did. A new chore ("clean the gutters by Saturday, about an hour") is offered to the best-fit person, who can accept or decline. A decline, or 24 hours of silence, sends it to the next person. Nobody can see who was asked or who declined.
- The occasional: a weekend or a trip. One plan and the trade-off, nobody named ("Picked X; some of you preferred Y, but the budget ruled it out").
- Your own time. One private schedule across family, friends, work and personal life. A clash is explained and settled by conversation. Find a time returns a time and a trade-off, never who couldn't make which.
- They connect. The care you've taken on counts in your chore share, using only what the household already sees (who owns each care task and its total hours). Whoever carries heavy care gets an optional private hint when leisure is planned. A heavy week reported privately lightens the next.
People answer by voice at a shared device or on their own phone through a private link. Reminders are sent on a schedule, and if someone never answers, a stated default applies and the plan says so.
Huddle decides; it does not plan. It doesn't hire nurses, book providers, move money, split expenses, sync with external calendars, or give medical, legal or financial advice. Care mode collects no health data.
How a family decision works

How a chore gets assigned

How we built it
Technical architecture

Alexa+ track: a self-hosted MCP server plus a simulated Alexa+ experience.
- The MCP server uses the official Python SDK over Streamable HTTP, protocol 2025-11-25, and exposes 25 tools: seven for family decisions (
start_huddle,submit_private_answer,get_group_result,close_round,nudge_pending,submit_checkin,revisit_round), eleven for the household (create_household,get_household,set_my_profile,add_chore,plan_week,respond_to_assignment,hand_back_chore,complete_chore,week_checkin,start_household_decision,ask_household_agent) and seven for a person's own schedule (get_my_time,add_commitment,update_commitment,set_schedule_rules,start_gathering,answer_gathering,ask_schedule_agent). - It is written for a host that has never seen the repository. Its instructions tell a voice assistant to ask who can hear, never say an answer back unless asked, and ask for consent. Every tool has a title, explicit behaviour hints and an output schema. CI lists the tools from a second, non-Python client (the MCP Inspector CLI).
- Alexa+ developer tools are in preview for select partners, so the Alexa+ experience is a web simulator (React, Vite, TypeScript) whose source is in the repository. Its agent calls the MCP server over HTTP at runtime, and the simulator shows each tool call as it happens.
Privacy engine. Coarse bands, a rule that anything hinging on one person's limit needs three or more people, and an automated leak test that seeds distinctive values and calls every REST route and MCP tool as every participant, failing if anyone else's value (or their band next to their name) appears.
Decision engines. The care split is an integer program (SciPy milp) that maximises hours covered and then spreads the load, respecting each person's hours and dealbreakers. The chore planner is an integer program solved in strict order: hard limits, then a fair share in proportion to each person's own availability (with mental load such as planning and booking weighted up), then preferences and skills, then rotation of heavy chores.
Voice-only mode for a shared speaker. The assistant first asks whether anyone is within earshot and offers a private phone link or the screen. It never says a private value aloud unless asked. The draft stays on the server and is saved through the MCP tool. See alexa-fit.md.
Voice. Browser speech recognition, optional local Whisper, and SpeechBrain ECAPA speaker identification as a stand-in for Alexa person recognition. It separates profiles on a shared device; it does not authenticate anyone.
AWS (status stated plainly). In aws mode the agent is built on the Strands Agents SDK with Amazon Bedrock, and the same container matches what Bedrock AgentCore Runtime expects of an MCP server. A Strands agent can also act as the MCP host, discovering Huddle's tools over Streamable HTTP. This is wired and tested up to the model call. It has not yet been run against Bedrock, and nothing is deployed to AgentCore. The default mock mode needs no AWS credentials.
Everything else. FastAPI, SQLModel on SQLite, Docker, GitHub Actions. 289 automated tests and 30 Playwright browser tests, including an accessibility audit (axe, WCAG A and AA) in light and dark.
Deployment architecture
The same container image serves the simulator, the REST API and the MCP endpoint on one port. The local path runs today; the AWS path is the target design and is not yet deployed.

Run it
make install
make dev # API and MCP on :8000, simulator on http://localhost:5173
Or docker compose up --build and open http://localhost:8000. No AWS credentials are needed.
Challenges we ran into
- An unpinned install of the MCP SDK now resolves to a 2.x major with a different server API.
- Tools annotated
-> dictreturn no structured content, and adictparameter gives the host no input shape at all. A tool with no annotations is read by the protocol's defaults as destructive and open-world, so every hint is set explicitly. - Saying a private number aloud at a shared speaker can be overheard, which is why the voice-only mode asks who is nearby first.
The full list, in the hackathon's format: friction-log.md and product-feedback.md.
What's next
- Run the agent on Amazon Bedrock and host the MCP server on AgentCore Runtime, and report measured latency.
- Test with two or three real groups and report the numbers as they are.
- Measure speaker identification on real voices.
Tracks and pre-hackathon work
Primary track: Alexa+. Open source under the MIT licence. New project, started after Aug 31, 2026, with no prior code reused and no financial or preferential support from Amazon or Devpost.
Log in or sign up for Devpost to join the conversation.