Inspiration

Elijah had occupational and speech therapy as a child. His family usually had time to practice at home, but no quick way to start. The instructions were in a folder somewhere, and a caregiver still had to work out which activity fit the materials on hand. By then, the free five minutes were gone. Research shows how important early intervention and practice are for the child in therapy, and families don’t need more exercise ideas. Families need a fast path from “we have a few minutes before dinner” to the first step of what the therapist actually assigned.

What it does

A caregiver says something like “We have a few minutes before dinner” and gets two activities from the child’s assigned plan. Naming a material or picking an option starts the activity right away, with its stored instructions delivered one short step at a time by voice or text. Help comes only from authored plan content and never from invented techniques. Afterward, the caregiver can dictate a practice note.

How we built it

The server is Python with FastMCP, exposing six MCP tools over Streamable HTTP for plans, activities, help, and notes, all backed by curated data validated against JSON Schemas. The browser is a TypeScript page built on the official MCP SDK, acting as a real MCP client with no separate product API. OpenAI gpt-4.1-mini maps what the caregiver says to a fixed set of validated actions but never writes guidance, while gpt-4o-mini-transcribe and gpt-4o-mini-tts handle voice in and out. Safety lives in the application, not the prompt. Notes persist locally with atomic writes, and every paid API call reserves its worst-case cost in a shared ledger before running, so spending can’t exceed the team budget when testing.

Challenges we ran into

Our first live conversation failed even though every mocked test passed. The model returned malformed actions and sometimes skipped safety checks, and prompt changes didn’t reliably fix it, so we moved those decisions into application code. We also had to find the right amount of caution: an early version asked seven setup questions before the first step, which was safe but defeated the purpose of getting the caregiver to an activity quickly. Voice brought race conditions, including a microphone that could stay open if Stop was pressed at the wrong moment, which we fixed and covered with regression tests.

What we learned

Passing mocked tests is not live evidence, and an early live check would have saved us days. Letting the model interpret while the application decides made the product predictable and measurable: the final prompt passed all 26 synthetic conversation cases across our last two runs for about $0.07. Building on MCP meant we could test plans, help, and notes without a model at all. Above all, we judge the product by one thing: how quickly it gets a family from a free moment to the first step.

Share this project:

Updates

Submission history