Inspiration

Helthee started because our founder lives with diabetes, and dinner was the hardest part of every day: what can we actually make tonight, with what's in the fridge, that fits the carb goal you set, and that the rest of the family will eat? The phone app plans the week. But the moment that matters is at the counter, hands covered in food, phone across the room.

What it does

Helthee for Alexa+ is a kitchen add-on that knows what is in your kitchen and who you are feeding.

  • "What can I make tonight with what I have?" It picks dinners from the pantry, fridge and freezer, skips anything someone in the family won't eat, and shows carbs per serving for each.
  • "Can we cut the carbs?" A carb-aware swap with the math shown in grams: "Swapping the quinoa for riced cauliflower brings it to about 17 grams of carbs per serving, down from 40." The numbers come from the recipe and USDA FoodData Central, never from the model.
  • Hands-free cooking mode. "Next." "Repeat that." "How much quinoa?" "Set a timer for 5 minutes for the riced cauliflower." When you cook with a swap, the steps change too: the step that boiled the grain becomes "Heat 1 tablespoon of olive oil in a skillet... cook the riced cauliflower for 5 to 7 minutes". Clear commands are answered by code in milliseconds, without a model call.
  • It remembers the household across days. "Zoe won't eat mushrooms." "Grandma Rosa is coming Sunday, keep it easy on the salt." "My carb goal is 45 grams per meal." The goal is always the person's own number; Helthee never suggests one.
  • The week plan and the grocery list fall out of it. "Plan our dinners for this week." "What do I need to buy?" The list subtracts what's already in the kitchen and groups by aisle.
  • Prompts that come from the plan, not from nowhere. Monday at 8 PM: "You planned salmon for tomorrow. It's in the freezer, so move it to the fridge tonight."
  • Honest about health. Questions about insulin, medicine, readings or what your carb goal should be get one calm line pointing to your doctor, with no model call. Packaged allergen questions get "please check the label". A test fails the build if anything Helthee can say makes a health outcome claim.

How we built it

  • A self-hosted MCP server (spec 2025-11-25, Streamable HTTP; also accepts 2025-03-26) with 13 kitchen tools over a SQLite store. Tools are plain code: 300 real tool calls over MCP HTTP measured p50 0.8 ms, p95 6.6 ms, max 95 ms (Alexa+ asks for under 500 ms).
  • An MCP App (ui://helthee/kitchen-<hash>.html) that renders the recipe carousel (3 to 5 items, strongest first), the step card, timers, the week plan and the grocery list, served by the MCP server itself. Buttons on the cards call tools back.
  • Account linking: OAuth 2.1 with PKCE (S256 only), refresh-token rotation, replay revocation, hashed secrets.
  • A simulated Alexa+ kitchen display in the browser (Amazon's Alexa+ developer tools are partner-only; the hackathon FAQ names this path): voice in, voice out, cards, timers, and a drawer that shows every MCP tool call.
  • An agent brain on Amazon Bedrock: Amazon Nova Lite (Nova Micro fallback) through the Strands Agents SDK, talking to the Helthee MCP server through a real MCP client. A spend breaker checks the budget before every model call.
  • Safety first in the pipeline: health guard, then a code router for short kitchen commands, then the model with guards that block data changes the person's words didn't ask for.

Challenges

  • Our own guard was the biggest problem, not the model. On a held-out set of 60 everyday kitchen phrasings written by someone who never saw our code, five of the misses were Nova picking the right action and our own "did the person really ask for this change" check blocking it, for phrasings like "tick off the oat milk" and "cancel this recipe, we're ordering takeout". First honest score: 40 of 60. We fixed by kind of miss, never by sentence, then had three more people who never saw the code write fresh sets: 49, 49 and 53 of 60 (82%, 82%, 88%). Every one of those is a first run; the higher scores we reached on sets we had tuned against are labeled as not independent.
  • Health wording is harder than it looks. Six red teams, each written by someone who never saw the guard: 176 of 235 on the first try (75%), then 177 of 190 (93%), 132 of 150 (88%), 129 of 150 (86%), 140 of 150 (93%) and 139 of 150 (93%). The fifth found the scariest miss of the night: a description of stroke signs got no safety line at all. It now gets the 911 line, along with every chest symptom. The sixth, written after our code freeze, found that a very low or very high reading said in words from a meter, with the person feeling awful, got the doctor line instead of the 911 line. The later sets were written to be harder: indirect wording, a medical question buried after fifty words of kitchen talk, misspelled readings, pregnancy, kidney diets, Spanish. On those first runs, 6 of 310 ordinary kitchen lines were blocked by mistake (1, 1, 2, 0, 1 and 1 per set; the fifth set's was a cookie cutter shaped like an insulin pump): the safe direction, but still a miss. Every miss became a category of fix and a test, never a one-line patch.
  • Real recipe math does not always add up. Some recipes' own carb numbers were lower than their starch alone. We refuse to show a swap when a recipe's numbers don't add up, instead of showing a confident wrong number.
  • Two Authorization headers. The Strands Agents SDK plus a Bedrock API key sent the key twice and every live call failed with an HTTP/2 header error until we let the SDK read the key from the environment only. (Friction log entry 4.)

Accomplishments

  • 5,384 automated tests with a mocked model: 5,361 pass, 0 fail, and 23 are marked to-do for known Alexa+ gaps we list openly (sign-in with real accounts, a few error lines).
  • A live Nova eval with an honest split: the tuned sets score 55/55 and 60/60 (not independent), and five held-out sets scored 40/60, 49/60, 49/60, 53/60 and 50/60 on their only honest run (the fifth was written after the code freeze).
  • Six independent health red teams (235, 190, 150, 150, 150 and 150 cases), with before and after numbers labeled.
  • An Alexa+ requirements audit, row by row against the published add-on requirements: 27 of 60 met locally, 27 partly, 1 not met, 5 that need a real Alexa host to test.
  • Total Bedrock spend for the whole overnight build, every live eval and recording included: $0.28 over 906 Nova calls (meter read 2026-10-19 06:28 EDT), with a hard $3 cap checked before every call.

What we learned

  • Write the test set before you tune, and keep a second one you never look at. Our score on the tuned set said 100%; the held-out set said 67%.
  • In a health app the safest answer is often a fixed sentence, chosen by code, before any model runs.
  • Short spoken lines are a feature: three sentences, numbers in grams, and the goal is always "the goal you set".

What's next

Running it on a real kitchen device for our own family; Spanish spoken lines (the health guard already understands Spanish questions); a photo of the fridge filling the pantry (Nova Lite takes images).

Built With

Share this project:

Updates

Submission history