Sometimes writers feel stuck on one side, staring at a blank page. Writer’s block isn’t a lack of ideas, but knowing what you want to say, and the words won't come out. So we imagined a tool that lets authors step into their stories and talk to the people who live there.
We built this app to let authors communicate with their characters and explore the world they’ve created. Authors can talk to their characters anywhere, having live conversations over text. Characters answer with their own emotions and tone, staying true to how they’ve been written. Social networks are also visualised for each story, showing who knows who, how strongly they are connected and where there are gaps, so plotlines and friendships become clearer at a glance. The result is a bridge between you and your stories.
We initially had a couple of ideas for this track: including creating an aid for people who a family memeber in their life with dementia to bridge the gap between family. Eventually we settled on our idea of bringing authors or readers closer to thier story, to explore, or ideate. In a similar bredth, we wanted to explore something new, so instead of going with a backend made with flask –as we were all used to– we decided to go for a full stack made with SvelteKit. Svelte made it super easy for us to have a multipage structure, allowing each character chat to have its own page for its chat. We were also very keen on having a network graph of all the characters in the story to further deepen understanding of any story. We determined that the advantages of a relational database remained very useful for storing messages and characters, but we knew we needed something better suited to the job to store complex network graphs. For this we threw ourselves at yet another new technology for the all of us: Neo4j. We were able to explore the trade-offs a No-SQL DB like Neo4j. Ultimately, we were here to challenge ourselves both technically and creatively, and our approach to ideating and creating this project is the ultimate reflection of these values.
Our project's most ambitious feature is the creation of custom, interactive AI voice agents, powered by ElevenLabs, allowing an author to converse directly with the characters they've written with the intention of inspiring the author with new avenues to develop the story or character further.
To make the characters aware of their past experiences we used a Retrieval-Augmented Generation (RAG) architecture built on two databases. This involved using Gemini 2.5 Pro to digest entire book chapters uploaded by the user. It performs complex reasoning to identify all character relationships, key events, and contexts, returning a custom-format JSON. This data is then stored in a Neo4j database, chosen for its unparalleled ability to model and query the complex, interconnected network of a story's plot and cast.
Secondly, we used ChromaDB to store the processed, chunked and vectorised raw text from the upload. These vectors are stored in ChromaDB, creating a high-speed, searchable database of specific events, dialogues, and key "memories" of the characters.
When an author decides to talk to a character, our backend:
-
Uses Gemini 2.5 Flash to quickly analyze the character's static data from Neo4j (personality, age, description) to generate a unique, creative prompt for the ElevenLabs Voice Design API, instantly creating a custom voice.
-
Assigns the agent a system prompt that gives it a "persona" and, most importantly, a tool.
-
During the live conversation, the agent uses this tool to call our backend, which triggers the RAG system. This system queries both Neo4j and ChromaDB.
Whilst these live audible conversations features worked in isolation, we struggled to fully integrate it in the pipeline which was a hurdle during the final few hours of the hackathon. This is an area in which we will further develop our project for full functionality.
A lot of the tools that we used in this hackathon were ones that we hadn't been familiar with before, and so we are proud that we were able to learn new tools such as Neo4j, ChromaDB and Svelte, which pushed us out of our comfort zones and expanded our knowledge.
We all used Svelte for the first time and found it to be a framework we really enjoyed working with!
The next step in immersifying our application is to implement live phone calls with in character AI voices.