Inspiration

Dementia takes the people who knew you before it takes you. The cruelty is specific: the person who remembered is gone. What's left is a room at three in the afternoon, someone asking for a husband who died in 1998, and a daughter who has already answered that question four times today and has work in the morning. Answering honestly is worse. Every correction delivers the death again to someone who cannot keep it. Validation therapy has known this for forty years: meet the feeling, not the fact. But that takes infinite patience, and no human has it at 3am. We wanted something that could sit in that gap without lying about what it is.

What it does

Yadira is a companion on a tablet at the bedside. She talks — by voice or by tap — warmly, at any hour, without ever running out of patience. She never corrects a confused timeline. When someone asks for Beth, she knows who Beth was and what she meant, and she says so warmly while gently anchoring them in something present. She holds what she's told: a worry mentioned three afternoons running is met on the fourth by someone who already knows. She may speak about Beth. She may never speak as Beth. More on that below. For the family, everything she hears becomes a private view: mood and sleep patterns charted over time, an honest weekly summary, and a note when someone is being asked for repeatedly. In late-stage dementia there are sudden windows of clarity — a person knowing that someone has died, or what is happening to them. Yadira detects these, stops redirecting, answers honestly, and calls the family immediately. Those windows are brief and nobody gets them back. One tap reaches a real person — an actual phone call, not a notification. And a daughter three provinces away can record forty seconds of herself; Yadira offers it and says whose voice it is and when. The companion is free forever. The caregiver's reporting side is the paid product.

How we built it

React 19 + Vite 6 + TypeScript, Tailwind v4, and an Express server bundled to a single file with esbuild. Firebase Auth and Firestore for a per-family "care circle," deliberately client-only — the server holds no admin credentials and can never read a family's data. Gemini and OpenRouter drive the conversation, Inworld does speech and voice cloning, Stripe handles billing, CALL-E places the phone calls. It installs as a PWA, because the device that matters is a tablet on bad bedroom wifi. 611 tests — mostly not unit tests of helpers, but rules the product must never break, asserted in code.

Challenges we ran into

We deleted our best feature the night before submitting. Yadira had a "Vivid mode." She could take a dead loved one's name and voice and say "Hello, love. It's me, Beth." It demoed better than anything else we had. The app even recruited toward it: three mentions of a name and the caregiver was offered a button to invite them into the conversation. We removed all of it. A person who has died cannot consent to being represented, and no one can consent on their behalf — not a spouse, not a child, not an agent under a personal directive. That authority ends at death and never extended this far. The tell was in our own code. We'd built a warning under the toggle, an auto-revert after three idle hours, an emergency "switch to Lucid" button offered at the exact moment a relative saw through it, and prompt instructions for climbing back out of the lie. That's a lot of scaffolding. You don't build that much around something you think is fine. The rest were ordinary and instructive. An offline device could wipe its own data, because Firestore hands you an empty snapshot from a cold cache and we read that as a deletion. Auth tokens went stale after an hour and every request 401'd — silently, so the companion fell back to canned replies with nothing saying why. Accomplishments that we're proud of Removing Vivid mode, and writing down why, in a decision record addressed to whoever tries to rebuild it. There's an automated test that scans the source for the constructs that made it work and fails the build if any return. Not because someone will disagree with the ethics, but because someone will be wiring up a stage prop the night before a pitch. Also: the help button rings a real phone and works even on an expired token. The patient's side is free and always will be. And Yadira is a pygmy hippo — named for the hippocampus, the brain's memory-keeper and the first region dementia takes. What we learned Count your guardrails. If a feature needs a warning label, an auto-revert, an escape hatch and a paragraph of prompt telling the model how to climb out of it, the design already knows something you haven't admitted yet. Consent is not transferable, and the person who bears the cost of an illusion is rarely the person asked to approve it. And a control that ignores you is worse than one that isn't there — we shipped a voice picker where the buttons highlighted, played a sound, and changed nothing.

What's next for Yadira

Field testing. Every threshold in this app — three hours before a session refreshes, three mentions before the family is told — is our best guess, calibrated by nobody. We're in conversation with the Executive Director of the Alberta Continuing Care Association about a pilot at one member facility: two to four residents, six to eight weeks. Before that: multi-resident support (today one account holds one resident), Canadian data residency, and a help button that routes to whoever is on shift. We have no evidence base yet. That's the honest gap, and it's the next thing we want.

Built With

Share this project:

Updates