Inspiration

Asking for help is never easy. Opening up about emotional struggles can feel uncomfortable, and seeking therapy requires real courage. Many people hesitate because they fear judgment, misunderstanding, or not being truly heard. Yet everyone deserves someone who listens, understands their concerns, and offers thoughtful guidance. That’s why we created Evermind. Evermind provides a private, supportive space where individuals can express themselves freely without fear of shame or criticism. It delivers compassionate reflection and meaningful perspective, making it easier to open up and seek support when it’s needed most.

Most importantly, we address one of the biggest limitations of AI therapists today: the lack of statefulness. Many LLM-based therapy tools forget context between sessions. Evermind solves this with a structured knowledge graph system that preserves emotional patterns over time.

We don’t just store chat history — we store meaning.

What it does

Evermind is an AI therapist that has continuous vocal conversation with a user and uses a dynamic knowledge graph to understand users over time. Instead of relying only on raw chat history, it captures key emotions, themes, and relationships from each session to provide structured, context-aware support. This allows the system to maintain continuity across conversations while offering a private and judgment-free space to discuss personal challenges.

How we built it

Frontend We maintained a sleek and minimalist design with calm colors to mimic the setting of a therapist's office (not too overwhelming, simple, and calm). We used Next.js to easily communicate with our backend and utilize hooks, which greatly increased the speed of development. We used React 3 Fiber and three.js for the voice orb visualizer. Backend For the backend, we used FastAPI and WebSockets to build a bidirectional session between the user and AI therapist. We use Google Gemini to analyze each user message and update a knowledge graph made of nodes (emotions and topics) and edges (relationships between utterances and emotional states). The graph is stored in Neo4j, which allows us to efficiently manage relationships and maintain structured memory (tables) across sessions. When a user speaks, the transcript and emotional tone data from Hume AI are sent to the backend, where we store the message, extract key insights, and update only the parts of the graph that changed. This design allows the therapist to track emotional patterns, maintain context beyond simple chat history, and respond in a more consistent and thoughtful way. FastAPI manages session handling and real-time communication, while voice streaming remains directly between the frontend and Hume, keeping the backend focused on memory and reasoning. FastAPI helped us maintain a persistent WebSocket between the user and Hume AI.

Accomplishments that we're proud of and Challenges we faced

What we learned

  • We were able to engage in a deeply personal and emotional conversation with the AI therapist

  • Evermind felt remarkably similar to a real therapist, actively “taking notes” on meaningful details and recalling relevant themes throughout the session

  • We successfully designed a dynamic knowledge graph that transformed unstructured conversational text into a structured representation of emotions, themes, and relationships.

  • Our team maintained the repository well, as we had minimal merge conflicts

  • Working under a strict 5-minute limit with Hume AI due to limited credits, our testing ability was limited, which required us to proofread our code intensely to prevent any setbacks during those 5 minutes

  • We faced problems connecting the components of the backend to the frontend

  • Utilizes three.js in our frontend

  • The fact that we created and implemented this within 24 hours :)

What's next for Evermind

  • We learned how to implement a graph database, an area where we had little prior experience. Using a graph API involved several concepts, such as mixing properties of SQL and No-SQL (key-value-based database), and modeling nodes and edges.

  • Creating and crafting a specific architecture to optimize our application and our data flow/security

  • Connecting the backend and frontend

Built With

Share this project:

Updates