Inspiration
My dad has a small shop. My grandmother is 79 years old. Like millions of other people, we have never documented her life history, the partition, the early years of marriage, and how she brought up her children with nothing but determination and courage. Someday, these stories will never be heard or read again. I have developed EchoBook because I think that every ordinary life has some extraordinary stories to tell. Professional memoir services can cost $800 for a single session. Most people never get around to doing that. EchoBook does this for free, in a warm and simple way, just like talking to people.
What it does
EchoBook is a real-time AI memory companion that carries out a warm voice and text interview with elderly individuals, resulting in a completely illustrated life story book as the interview continues, a page for each memory shared.
🎙 Voice & text interview - Gemini 2.5 Flash carries out a warm, curious interview, asking gentle follow-up questions to encourage more detailed information about each memory
✨ Live page creation - as each memory is finished, EchoBook automatically draws out a structured vignette and writes first-person narrative for each memory, as if the storyteller wrote it themselves
🎨 Real-time illustration - each page gets a unique watercolor style illustration, created as each memory is shared
📚 Persistent memory - memories are saved to Google Cloud Firestore, enabling you to return after a few days and continue exactly where you left off
🏷 Smart tags - each page is automatically tagged by era, emotion, chapter, and people
The 10x insight: the book comes together DURING the conversation, not after. Nothing else out there does this.
How we built it
Backend - Python FastAPI
Gemini 2.5 Flash (gemini-2.5-flash) powers the interview agent using a carefully crafted system prompt that guides conversations through life chapters such as childhood, family, work, love, and legacy. A hidden trigger tag called [CAPTURE_VIGNETTE] signals when a memory has enough depth to become a page. For that to happen, the memory must include a clear setting, at least one sensory detail, and some emotional resonance.
The file vignette.py extracts structured JSON from each memory, including narration, scene description, illustration prompt, era, emotion, chapter, and key people. Pollinations AI generates watercolor-style illustrations from these scene descriptions, while Google Cloud Firestore persists every page so sessions can continue seamlessly later.
Frontend - Next.js + HTML
The interface uses a warm parchment-style aesthetic with Playfair Display typography so the experience feels like reading a real book rather than using a typical tech product. A real-time WebSocket connection supports voice mode, while text mode allows easier testing and accessibility. As new memories are captured, pages animate into the book with illustration loading states.
Infrastructure
The backend is deployed on Render, while the frontend runs on Vercel with a custom domain. Data persistence uses Google Cloud Firestore in the project echobook-489514, and Google OAuth manages personalized book sessions.
Challenges we ran into
Gemini image generation quota Gemini image generation models have a free tier quota of zero, which means billing needs to be enabled first to use them. To bypass this, we decided to use Pollinations AI for illustration generation, which doesn't require a key or impose a quota. Moreover, the request will come from the browser instead of the server, which bypasses network restrictions.
The second-person narration issue In the first versions of EchoBook, narration was generated in a second-person perspective, such as “You remember the mangoes…”, which was not suitable. By adjusting the system prompt to use first-person memoir writing, such as “I remember the mangoes…”, the tone of the generated text was completely transformed.
Rate limiting at scale Pollinations limits requests to two per minute. To bypass this, we used asyncio.sleep() to create a rate limiter at the module level to ensure that illustration generation could be queued without interrupting the conversation.
Cloud Shell network restrictions Google Cloud Shell doesn't allow outbound calls to many external APIs. To bypass this, we decided to use the client side to fetch illustrations from Pollinations.
Vignette capture timing The hardest product decision was determining when a memory should become a page. Capturing too soon results in thin narration, while capturing too late makes users feel like they’re not being heard. By calibrating the timing to require a clear setting, sensory detail, and emotional resonance, we have found that meaningful pages result.
Accomplishments we’re proud of
📖 A fully illustrated memoir page created from a three-message conversation in under 60 seconds
🎨 Illustrations that match the emotional tone of each memory, like a Konkan monsoon scene with a grandmother cooking bhajias
🏗 A complete full-stack AI product built solo in nine days
💾 Firestore persistence that gives the book the feel of a living document
🎯 A product that solves an actual emotional problem for an actually underserved group, like the elderly and their families
What we learned
Prompt engineering is product design. “You remember” to “I remember” changes the emotional tone of the entire product. Every single word in a system prompt contributes to the user experience.
The pipeline is more important than the model. We have switched models three times throughout development, but the vignette extraction pipeline that we built is what makes EchoBook truly work.
Designing for emotions over features results in good design decisions. Every single technical decision was made based on one criteria: will this make the book feel like a real memoir?
The free-tier limitations can result in elegant designs.
What’s next for EchoBook - Living Memory
📱 Mobile app to conduct voice interviews naturally on a phone, and view the book on a family TV screen
📤 PDF export to download and gift the illustrated family memoir to family members and friends
👨👩👧 Family contribution to create a book that can have contributions from multiple family members
🌍 Multilingual interviews in Hindi, Marathi, Tamil, and other languages spoken by elderly people in India
🖨 Print on demand to create a physical hardcover version of the family memoir
🎙 Gemini Live API integration to conduct voice conversations naturally, allowing interruptions and emotional flow
Built With
- css
- fastapi
- gemini-live-api
- google-cloud
- google-cloud-firestore
- google-gemini-2.5-flash
- google-oauth
- html
- javascript
- next.js
- pollinations-ai
- python
- react
- render
- tailwind
- uvicorn
- vercel
- websockets
Log in or sign up for Devpost to join the conversation.