Inspiration

Meet Your Future Self.

Everyone's seen that moment in interviews — "What would you tell your younger self?" It's one of the most powerful questions anyone can answer. People break down. They get real. They share the advice that actually mattered.

But that conversation always looks backward. By the time you have the wisdom, it's too late to give it to yourself.

What if you could flip it? What if, instead of looking back with regret, you could hear from your future self right now — while the advice can still change your path?

This isn't just a thought experiment. Research by psychologist Hal Hershfield at UCLA (Journal of Marketing Research, 2011) shows that people treat their future selves like strangers — and this disconnect leads to worse decisions about savings, health, and goals. But when participants interacted with age-progressed avatars of themselves, they allocated more than twice as much toward retirement savings. Visualizing your future self closes the gap between who you are and who you're becoming.

Mirror8 takes this from a lab experiment to a live experience. One selfie, 8 possible futures, and an immersive voice conversation where your future self can see you, hear you, and tell you exactly what you need to do next.

What it does

Mirror8 transforms a single selfie into 8 possible future selves — each a different life path (Visionary, Healer, Artist, Explorer, Sage, Guardian, Maverick, Mystic). Each future self gets:

  • A personalized AI portrait showing what you could look like on that path
  • A unique backstory generated from your appearance and personal context
  • A live voice conversation where your future self can see you through your camera, hear you in real time, and guide you with specific advice from their journey

The future self isn't a chatbot answering questions — it's a mentor from the future who leads with their story, gives concrete action items, and challenges you to take the first step.

During the conversation, the future self's portrait evolves in real-time based on the emotional arc of your conversation — smiling when the mood lifts, showing intensity during tough truths.

How we built it

Mirror8 uses 4 Gemini models in a coordinated pipeline:

  1. Gemini 3.1 Pro (gemini-3.1-pro-preview) — Analyzes the selfie (appearance, age, vibe) and generates 8 personalized future-self personas with backstories, challenges overcome, and key wisdom
  2. Gemini 3.1 Flash Image (gemini-3.1-flash-image-preview) — Generates a photorealistic portrait for each future self, using the original selfie as a reference
  3. Gemini 2.5 Flash Native Audio (gemini-2.5-flash-native-audio-preview, via ADK) — Powers the real-time live conversation with bidirectional audio, camera vision (1 FPS frames), and dynamic persona
  4. Gemini 3 Flash (gemini-3-flash-preview) — Monitors the conversation's emotional arc mid-conversation and triggers live portrait regeneration at meaningful moments

Architecture:

  • Frontend: Next.js 15 + React 19, deployed on Cloudflare Pages
  • Backend: FastAPI + Google Agent Development Kit (ADK), deployed on Google Cloud Run
  • Auth & Storage: Supabase (Google OAuth, session persistence, portrait storage)
  • Real-time: WebSocket with bidirectional audio streaming (16kHz PCM) + camera frames + live transcription

Challenges we ran into

  • Rate limits with concurrent portrait generation — Generating 8 portraits simultaneously with gemini-3.1-flash-image-preview hit Gemini's rate limits. We implemented a semaphore (max 2 concurrent) with exponential backoff and fallback prompts (photorealistic → artistic style)
  • Making the future self feel real, not robotic — Early prompts for gemini-2.5-flash-native-audio-preview made the future self behave like an interviewer, asking too many questions instead of sharing its story. We iterated extensively on the system prompt to make it lead with guidance and connect advice to the user's actual situation
  • Live portrait timing — Regenerating the portrait too often felt distracting; too rarely felt static. We used an LLM-as-judge approach: gemini-3-flash-preview evaluates the last 6 conversation turns and only triggers a portrait update at emotionally meaningful moments
  • Audio latency — Keeping the gemini-2.5-flash-native-audio-preview voice conversation feeling natural required careful WebSocket architecture with separate upstream/downstream async tasks and PCM audio streaming at 16kHz

Accomplishments that we're proud of

  • The emotional reaction — When people see their future self greet them by noticing what they're wearing or how they look today ("I can see you're tired — I remember those days"), the reaction is visceral. That moment of "it sees me" is what makes Mirror8 feel real
  • Live portrait evolution — The portrait changing mid-conversation to reflect the emotional state of the conversation is, to our knowledge, a novel use of Gemini's image generation capabilities in a real-time context
  • 4-model Gemini orchestration — Coordinating Pro, Flash, Flash Image, and Native Audio with intelligent fallbacks across the entire pipeline
  • Full production deployment — Not a demo or prototype — Mirror8 is a complete, deployed product with auth, session persistence, and conversation history

What we learned

  • Gemini's multimodal capabilities are deeper than they appear — The Live API's ability to process camera frames in real time and reference visual details in conversation creates a level of presence that text-only AI can't match
  • ADK makes complex agent architectures simple — Per-session agents with dynamic system prompts, custom tools, and live audio streaming would have been months of work without ADK
  • Prompt engineering is product design — The difference between "an AI that asks questions" and "a mentor who shares their journey" came down entirely to how we structured the system prompt. The prompt is the product
  • Emotional design matters — The technical architecture enables the experience, but the moment that matters is when someone feels genuinely seen by a version of themselves they want to become

What's next for Mirror8

  • Returning conversations — Let users revisit the same future self across sessions, with the persona remembering previous conversations and tracking progress on challenges it gave
  • Goal tracking integration — Connect the future self's advice to actionable goal-setting tools
  • Longer time horizons — Currently set to 1-2 years out; expand to 5-year and 10-year future selves with appropriately aged portraits
  • Group experiences — Let friends or teams meet their future selves together, with shared context about their collective goals

Built With

  • fastapi
  • gemini-flash
  • gemini-flash-image
  • gemini-native-audio
  • gemini-pro
  • google-agent-development-kit-(adk)
  • google-cloud-run
  • google-genai-sdk
  • next.js-15
  • python
  • react-19
  • supabase
  • tailwind-css
  • typescript
  • websocket
Share this project:

Updates