Inspiration

AI is moving into the spaces where families already live, and the hardest question is no longer what a model can do — it is when a model should stop. For parents, homework is a nightly negotiation of time, focus, and trust. Families told us the same thing repeatedly: a child needs room to practice independently, and a parent needs visibility without surveillance. No existing agent respected that boundary.

FadFada began as an Arabic-first family companion built on one conviction: a person must feel heard before they can be helped. The Alexa+ track gave that conviction a second surface — ambient, hands-free, and woven into the household routine. Family Flow is our answer: an agent that plans homework, earns a parent's explicit approval, and only then hands off to the child.

What it does

Family Flow converts an open-ended request — "25 minutes of math before bedtime" — into a structured, time-boxed routine:

  • The engine generates three steps (settle / guided practice / parent review) in an awaiting_parent_approval state.
  • Constraints can change on demand ("make it 10 minutes"). The plan rebuilds, completed progress is preserved, and the routine returns to awaiting_parent_approval because the child-facing plan has materially changed.
  • An explicit parent approval records the authorizing event. Only then can practice begin.
  • The child workspace receives approved output exclusively. Every parent-only route returns 403 PARENT_WORKSPACE_REQUIRED to a child-mode session.

The design principle is simple: no approval, no handoff. Safety is enforced structurally, not stated as a disclaimer.

How we built it

  • Next.js, React 19, TypeScript, Prisma, and Neon Postgres on the existing FadFada stack.
  • A deterministic Family Flow engine (src/lib/familyFlow.ts) — pure and unit-tested, so safety behavior is reproducible and provable.
  • A parent-only API (/api/parent/family-flow) with child-ownership checks. Routine state is persisted as append-only InteractionEvent records, preserving a full audit trail.
  • A self-hosted Streamable HTTP MCP server (/api/mcp/family-flow) built on the official @modelcontextprotocol/sdk, protocol version 2025-11-25, with bearer authentication and server-derived parent binding. Exposed tools: get_family_routine, create_family_routine, reschedule_family_routine, approve_family_routine.
  • Workspace-identity guards (src/lib/workspaceIdentity.ts) with dedicated unit tests, plus a parent-facing workspace surface (FamilyFlowPanel).
  • The demo video is generated entirely by our own pipeline: two-voice dialogue synthesis and per-line lip-synced avatars composited over live application footage.

A single approval-gated engine serves both the human parent UI and the Alexa+ MCP surface, guaranteeing the two channels can never diverge.

Challenges we ran into

  • Streamable HTTP is unforgiving. Requests returned 406 until we satisfied the specification's required Accept: application/json, text/event-stream header — a subtle detail that blocks naive clients.
  • Serverless and long-lived transport. We architect the MCP connection to be short-lived and stateless per request; authoritative routine state lives in the event store rather than in server memory.
  • Designing approval semantics. Rescheduling initially preserved approval. We revised the model so that any material change to the child-facing plan requires a fresh parent decision, and enforced this with unit tests.

Accomplishments that we're proud of

  • A production MCP server with a verified 2025-11-25 handshake and a complete create → reschedule → approve → read lifecycle recorded against real data.
  • Cross-surface consistency: a routine created over MCP appears in the parent UI API, and vice versa.
  • Verified isolation: in child mode, every /api/parent/* route and /api/profile returns 403 PARENT_WORKSPACE_REQUIRED.
  • Transparent engineering practice: a dated CHANGELOG.md and an honest FRICTION_LOG.md at the repository root for reviewers.

What we learned

  • A clean domain model — a pure routine engine — turns safety from an aspiration into something testable and explainable.
  • Append-only events kept two independent surfaces consistent without a schema migration.
  • Rigorous, honest packaging (friction logs, dated changelogs) is part of a credible submission, not an afterthought.

What's next for FadFada

  • Stronger localized crisis resources and escalation workflows.
  • Official cloud speech-to-text and text-to-speech for higher-fidelity Arabic dialect support.
  • Expanded parent reporting and child progress insights.
  • Live subscription checkout for founding beta access, alongside pilots with schools and community programs across the GCC.

Built With

Share this project:

Updates

Submission history