Inspiration

Family histories are often lost because the process of recording them—filling out endless forms and sterile genealogical databases—feels like a chore. We wanted to bring the humanity back into preserving our heritage. Inspired by oral traditions, we imagined a completely natural experience: what if you could just sit down, talk about your grandparents, share their stories, and have a beautiful family tree build itself?

What it does

Sanak is an interactive, voice-driven genealogical tool. At its core is the Digital Biographer, a warm, empathetic AI agent that you converse with natively via voice. As you tell stories about your relatives (names, relationships, birth years, hobbies, education), the AI listens, asks thoughtful follow-up questions, and dynamically extracts structural data. Behind the scenes, it instantly maps these relatives onto a borderless, interactive Family Tree canvas.

How we built it

  • Frontend: Built with Next.js, React, and Tailwind CSS. We designed a sleek, Apple-like floating interface with an immersive, full-screen interactive node graph.
  • Audio Processing: We implemented the browser's Web Audio API using a custom AudioWorkletProcessor to capture raw microphone input, downsample it to 16kHz PCM, and stream it.
  • Backend: A scalable Python FastAPI backend utilizing asynchronous WebSockets processes the duplex audio streams.
  • AI Integration: We leveraged the brand new Google Gemini Live API (via the google-genai SDK) for low-latency, native audio-to-audio dialogue. We equipped Gemini with tool-calling capabilities (propose_person_creation) so it can trigger database actions naturally mid-conversation.
  • Database: Used Neo4j (a Graph Database) to seamlessly model complex familial relationships (nodes for Person, edges for PARENT_CHILD or SPOUSE).

Challenges we ran into

Handling real-time raw audio streams was our biggest hurdle. Bridging the browser's audio capture with Gemini Live's strictly required audio formats (16-bit PCM, 16kHz) required deep-diving into AudioWorklets to ensure smooth processing without blocking the UI thread. Additionally, managing concurrent async loops in FastAPI—so that the graph database updates instantly while the voice conversation continues uninterrupted—required careful state and websocket management.

Accomplishments that we're proud of

We are incredibly proud to have built a seamless, voice-first application that doesn't just chat, but structurally maps out connected graph data on the fly. We also fully modernized the UI into a clean, floating, full-page canvas with a collapsible sidebar, making it feel like a premium, production-ready studio environment.

What we learned

We gained profound experience in real-time stream architecture natively bridging React WebSockets to FastAPI to Gemini. We also learned how to steer LLMs with strict tool-calling schemas within a voice-native session, and how to effectively structure complex human connections using Neo4j graph databases.

What's next for Sanak: Speak Your Family History

  • Multiplayer Collaboration: Allowing multiple family members to view, edit, and converse with the Digital Biographer on the same shared family tree simultaneously.
  • Rich Media & Artifacts: Integrating the ability to drop in photos, documents, and link them to the node's picture galleries directly while talking to the AI.
  • Conversational Memories: Allowing users to click on a family member's node and listen to a playback or read a transcript of the exact story that generated that node.

Built With

Share this project:

Updates