Inspiration
Becoming a parent changes how you see the world, and not always in the ways you expect. Somewhere in that journey watching how much can go unsaid between a parent and a child, and how much can hinge on a single word finally landing the idea for Mynah started to take shape. Not every child gets to say what they mean the first time they try.
We wanted to build something that gave back to the child: a board that waits, that never rushes to fill in the blank for them, and that treats a tap as the whole sentence it is — not a hint for an adult to interpret.
What it does
Mynah is an offline-first AAC (Augmentative and Alternative Communication) picture board for non-speaking and minimally speaking children aged 2–10. A child opens it and starts tapping no onboarding, no instructions needed in the moment they need to communicate.
- A fixed core board of 24 words stays in the same physical position every time, so a child's motor memory for "I," "want," "more," "stop" becomes automatic instead of being reset every session.
- Say More offers up to three complete, picture-only sentence strips after a single noun or verb, so a child can extend a thought without typing or spelling.
- A separate predictive suggestion row ranks fringe and personal vocabulary — it can suggest, but it can never reorder, hide, or replace a core tile.
- Conversation repair controls : "Excuse me, I have something to say," "Wait, I'm still saying it," "That's not what I meant", give the child tools to hold the floor and correct a listener, not just to request things.
- Caregivers can add custom words with a device-only photo, emoji, or text symbol and a generated voice clip, all without an account or cloud storage.
- Every stock tile has a pre-generated, offline voice clip, so the board speaks in the same voice every time, with no network required.
The one rule underneath all of it: the AI never speaks for the child, it only reshapes the options. Every utterance that comes out of the speaker was tapped, deliberately, by the child.
How we built it
Mynah is a Next.js App Router PWA with Tailwind, a service worker for offline caching, ARASAAC symbols bundled locally, and pre-generated ElevenLabs speech in public/. IndexedDB holds everything that shouldn't touch a server: usage history, session logs, caregiver settings, personal tiles, photos, and generated audio.
We used GPT-5.6 in two narrow, deliberately constrained places. /api/expand uses Structured Outputs with a strict schema and an intent enum : request, comment, refusal, feeling, question so the model is forced to consider genuinely different meanings behind a tapped word instead of returning three phrasings of the same guess. The server rejects anything with an unknown tile ID, a missing seed tile, duplicate tiles or intents, or unprompted distress language. /api/board uses GPT-5.6 only to rank fringe and personal candidates that already exist; it cannot invent vocabulary, reorder the fixed grid, or change the board without caregiver approval. A monotonic sequence token and sentence hash discard stale model responses if the child taps again before the network replies, and a deterministic on-device grammar-and-usage-count fallback takes over immediately when offline.
Codex scaffolded the PWA and helped keep the AI surface area small on purpose: the core grid component is architecturally isolated from anything AI-touched, symbols and voice clips are bundled for true offline use, and the caregiver vocabulary flow keeps photos and audio in IndexedDB only.
Challenges we ran into
The hardest problem wasn't the model it was resisting the model. It is very easy to build an AAC tool where the AI quietly starts finishing sentences for the child because it's "probably right." We had to keep drawing a hard line: GPT-5.6 reshapes and ranks, but a sentence only leaves the speaker if a child's finger put it there, tap by tap.
We also hit real product mistakes along the way. The core board originally used a three-column layout at every screen width, which pushed several of the 24 tiles below the fold exactly the kind of thing that breaks a child's motor memory the moment we said we'd protect it. We reworked it to 6×4 on desktop landscape, 4×6 on portrait tablets, and 3 columns on phones. An early offline fallback also ranked tied suggestions alphabetically, which is invisible to a developer testing in English but meaningless to a child we replaced it with deterministic, grammar-aware ranking that prefers personal vocabulary. And because ARASAAC's license is CC BY-NC-SA, we had to be honest in the README that a commercial release would need different symbol rights.
Accomplishments that we're proud of
We're proud that the app works completely offline, including the sentence strip and every stock tile's voice, because a child's ability to communicate shouldn't depend on a Wi-Fi signal. We're proud of the safety rails we built into the AI routes schema validation, staleness tokens, distress-language filtering because they were harder to build than the features themselves, and they're the part a judge can't see just by tapping the demo. Most of all, we're proud of holding the line on the one rule that mattered most: no matter how good the model's guess is, it never gets to speak for the child.
What we learned
We learned that the right use of a powerful model in a sensitive product is often to make it smaller, not bigger narrowing GPT-5.6 to ranking and reshaping, rather than generation, made the product safer and, honestly, more useful. We learned that the details that look like polish tile position stability, offline reliability, a repair phrase like "wait, I'm still saying it" are not decoration on top of the core product; for a child who communicates this way, they are the core product. And personally, this project was a reminder that some of the best ideas come from paying attention to the people who have the hardest time being heard, and building something that gives them back a little more control over their own words.
What's next for Mynah
- Bilingual speech.
- A caregiver debrief view that surfaces what a child expressed in a session and offers one warm, specific modelling tip never clinical, never diagnostic.
- Scene-aware boards (home, meal, school, park, bedtime) that shift the fringe/personal ranking without ever touching the fixed core grid.
- Photo-to-tile suggestions, with every candidate still requiring explicit caregiver approval before it ever reaches the child's board.
- Continued work with speech-language pathologists to pressure-test the conversation-repair vocabulary against real clinical AAC practice.
Built With
- arasaac
- elevenlabs
- gpt-5.6
- idb
- indexeddb
- next.js
- openai
- pwa
- react
- service-workers
- tailwindcss
- typescript
Log in or sign up for Devpost to join the conversation.