Inspiration
Sergeant David Okafor recorded 47 voice messages the night before he deployed to Afghanistan. One for each birthday his daughter might have without him. One for her graduation. One for the day she fell in love.
He came home. Most don't.
Maria had three months after her diagnosis. She spent the first one in denial, the second in treatment, and the third talking, really talking
- to her children for the first time. Her son was eight. He won't remember most of it. But EMBER will.
James is 34 and perfectly healthy. He just realised he knows almost nothing about his grandfather's life before the family emigrated. The man is 79, sharp as a tack, and has never once been asked to tell his story.
These are not edge cases. These are every family.
We built EMBER because love is not the problem. Time is. People mean to record these stories. They mean to ask these questions. And then one day they can't, and the silence that follows is the most permanent thing in the world.
Who it's for
The soldier shipping out tomorrow who wants his newborn to know his voice, whatever happens.
The parent with a diagnosis who has more love than time, and wants her children to have both long after she's gone.
The grandparent who assumes nobody wants to hear their stories, until EMBER asks the right question and they talk for two hours straight.
The grandchild who arrived too late, born after the person whose eyes they have, whose laugh they inherited. EMBER gives them a conversation they were never supposed to have.
You don't have to be dying to use EMBER. You just have to love someone.
What it does
EMBER is a real-time AI legacy companion with two sides:
FOR THE PERSON RECORDING THEIR LEGACY:
- Guided voice recording across 6 life chapters: childhood, young adult, parenthood, wisdom, values, and sealed letters for the future
- An AI companion powered by Gemini Live API that listens, prompts, and draws out deeper stories naturally, no forms, no typing, just talking
- Sealed Letters - time-locked voice messages that unlock on a specific date or milestone: "Open on your wedding day." "Open when you need me."
- Streak tracking to encourage consistent recording
FOR THE FAMILY RECEIVING THAT LEGACY:
- A real-time voice companion they can talk to naturally, ask about Dad's childhood, hear Grandma answer in her own words, grounded in her actual recordings via Vertex AI RAG
- Memory Journal with AI-generated paintings (Imagen 3) that turn spoken memories into warm, oil-painting style illustrations
- Family Tree with every recording organised by person and chapter
- A place where the people they love never fully disappear
How we built it
EMBER is built entirely on Google's AI and Cloud stack.
REAL-TIME VOICE LAYER (Gemini Live API): The heart of EMBER is a WebSocket-based real-time audio pipeline using gemini-2.5-flash-native-audio-latest. When a family member opens the Companion view, they're talking directly to a live Gemini session, with bidirectional audio, natural interruptions, genuine conversation. Not turns. Not text boxes. A real exchange.
AGENT LAYER (Google ADK + GenAI SDK): We use Google ADK to power the EMBER Companion Agent — a structured agent equipped with four tools: get_family_memories, get_recording_streak, get_chapter_prompts, and search_memory_by_topic. ADK handles intent and tool orchestration while the GenAI SDK handles the Live API audio stream. Both working together — ADK for thinking, Live API for speaking.
MEMORY GROUNDING (Vertex AI RAG): Every response the Companion gives is grounded in the family's actual recorded memories via Vertex AI RAG and Firestore. When a grandchild asks "What was Grandpa like when he was young?" EMBER doesn't hallucinate. It searches the recordings and speaks from them.
CREATIVE MEMORY LAYER (Imagen 3): In the Memory Journal, users tap "Paint this memory" on any voice entry. EMBER sends the description through Gemini for visual prompt refinement, then calls Imagen 3 to generate a warm, painterly illustration, soft golden light, oil painting style, intimate and timeless. One tap. One painting. One memory made visible.
INFRASTRUCTURE: FastAPI backend deployed on Google Cloud Run with automatic scaling. Firestore for all session and memory data. Cloud Storage for voice recordings and generated images. One-command deployment via deploy.ps1.
FRONTEND: React + TypeScript + Vite, built mobile-first. Framer Motion for animations. Cormorant Garamond for warmth and gravitas.
Technologies used
- Gemini Live API (gemini-2.5-flash-native-audio-latest)
- Google ADK (Agent Development Kit)
- Google GenAI SDK
- Imagen 3 (imagen-3.0-generate-002)
- Vertex AI RAG
- Google Cloud Run
- Google Firestore
- Google Cloud Storage
- FastAPI + Python
- React + TypeScript + Vite
- Framer Motion
- WebSockets
Data sources
All data is user-generated. EMBER stores only what families record themselves, voice recordings, memory descriptions, and family relationships. No external data sources. No third-party content. The only data in EMBER is the family's own legacy.
Challenges we ran into
Making voice feel warm, not clinical. The hardest challenge wasn't technical, it was tonal. A voice AI for legacy preservation cannot feel like a customer service bot. We rewrote the persona dozens of times until it felt genuinely like sitting with a wise, warm friend.
Real-time audio stability. Maintaining a stable WebSocket stream for the Live API required careful keepalive management, a background receive loop, and graceful interruption handling.
Ethical design. Using a parent's voice in an AI system required hard conversations about consent. Our answer: EMBER never generates or synthesises anyone's voice. It only replays what was actually recorded. We built prominent opt-in toggles and an ethics statement directly into the Settings screen.
Dependency conflicts. Integrating Google ADK into an existing Vertex AI stack triggered cascading version conflicts. We resolved this methodically - letting ADK's requirements take precedence and running full test suites to confirm all subsystems passed.
Accomplishments we're proud of
- A product that made us emotional to build
- Full real-time voice conversation with natural interruption support
- Both Google ADK and GenAI SDK integrated as complementary layers
- Interleaved multimodal output: voice → Gemini prompt refinement → Imagen 3 painting, in a single fluid flow
- A UI that a grieving family could actually use on the hardest day of their lives
- Six-for-six on our custom test suite across all subsystems
What we learned
Gemini's Live API is extraordinary for emotionally intimate use cases. The latency is low enough that it genuinely feels like a conversation.
ADK and the GenAI SDK are better together than either is alone. ADK handles structured tool-calling. The Live API handles raw real-time audio. They solve different problems.
The most important design decisions weren't technical. They were ethical. Who owns a voice? Who has the right to replay it? These questions shaped everything we built.
Vertex AI RAG is what turns EMBER from an AI product into a legacy product. Without grounding, it's just another chatbot. With grounding, it becomes something a family can trust.
What's next for EMBER
- Mobile app (React Native) so recording happens where life happens
- Video memory support, not just voice but face and presence
- Multi-generational family accounts with privacy controls
- Partnerships with hospice care networks and veterans organisations
- A "daily prompt" feature, one question a day, building a legacy one story at a time
Some products are useful. EMBER is necessary.
Built With
- fastapi
- framer-motion
- gemini-2.5-flash-native-audio-latest
- google-adk
- google-cloud
- google-cloud-run
- google-firestore
- imagen-3.0-generate-002
- python
- react
- typescript
- vertex-ai-rag
- websockets

Log in or sign up for Devpost to join the conversation.