- Where
- Independent
- When
- 2026
- Tags
- ElevenLabs API · Voice Design · Gemini API · Accessibility · PWA
- Try it
- saris.vercel.app

Why I built it
My cousin Sara has a cognitive disability that keeps her from speaking. Most voice apps are hard to use and not nice to look at.
I watched how she uses YouTube: big pictures, one tap and it plays. So I made Saris simple and beautiful, closer to a game than a tool, so she'd want to use it.
If it feels like a game, she'll actually use it.
What it does
Sara gets the board and a Type tab. A caregiver gets a composer on the same device. The product rules came first and everything else had to fit them:
- Tap = speak. No confirmations and no detail pages on the speaker's side.
- Image + label, always. The picture is a memory anchor; the label removes the ambiguity.
- One voice, one identity. The same voice speaks every phrase, in both languages.
- Nothing to sign up for. Opening the link means it works.
- Accessible first. Tap targets of 48 px and up, AA contrast, no hover-only actions and no double taps.
The system
- 01
Type or dictate
The caregiver inputs the phrase: typed, or dictated like a voice note.
ElevenLabs Scribe - 02
Structure
The transcript becomes phrases: Spanish and English text, a category, an emoji and an image prompt, returned through a forced tool call so the shape is always the same. There is always a review step before saving.
Gemini - 03
Paint the card
The card shows up right away with its emoji and category colour, and the illustration replaces it when it lands.
Gemini image → WebP - 04
Pick a tone
A row of faces (normal, happy, calm, serious, sad, annoyed). Each one maps to an audio tag, and the toned audio is made when the card is saved, so the first tap is still instant.
Eleven v3 audio tags - 05
Tap = speak
Anything typed or tapped is spoken at runtime. The built-in phrases ship with pre-generated audio and are cached for offline use, and the attention key plays a chime before Sara speaks.
Flash v2.5 · Sound Effects
The voice
The default voice, Saris B, was made with Voice Design: described in words, not cloned from anyone. It speaks Spanish and English and works on the free API plan. If a paid voice is picked and the API answers 402, the app falls back to Saris B instead of going silent, because an AAC app that stops talking is a broken app.
Card art
Every built-in card has an illustration in one soft, hand-drawn style, so the board reads as one set and a picture can be recognized before the label is read.
Guardrails
- Every paid endpoint is protected: an allowlist of voices, length caps on input and a per-IP rate limit, so a public link can't burn the credits.
- API keys live only on the server, in Vercel environment variables.
- No login and no database. Custom phrases live in the device's IndexedDB and settings in local storage, with a JSON export for backup.
How I like to work
Understand the problem, build it with the tools, and show it working. Saris went from idea to a live app in under a week, and it's open for anyone to try.