MythosAI -- Project Story
What Inspired Me
Mythology is one of the coolest storytelling traditions humans have ever created. Stories of Athena's wisdom, Loki's tricks, and Sun Wukong's rebellion have survived thousands of years because they actually meant something to people. They explained the world, taught lessons, and made people feel things.
But somewhere along the way, myths got stuck in textbooks. You read a paragraph, close the tab, and move on. There is no wonder. No follow-up. No real connection.
I wanted to change that. The hackathon theme was Myths and Legends. and it felt like a direct challenge: what would it look like to make mythology actually feel alive? That question became MythosAI.
How I Built It
MythosAI is a browser-based webapp built with TypeScript, JavaScript, and Python. The frontend shows a gallery of mythological characters organized by culture -- Greek, Norse, Egyptian, and East Asian -- each with their own visual style.
Character data is stored in Supabase, my backend database. Each profile includes things like origin, personality, sacred animal, weapon of choice, and fun facts -- everything you need to understand a character before you even start chatting.
The AI chat is powered by the Google Gemini API. Each character gets a system prompt that describes their personality, speech style, cultural background, and what they know about. When you open the chat, Gemini responds as that character -- not as a generic AI, but as Thoth, Guanyin, or Odin specifically.
I also integrated ElevenLabs text-to-speech so each character has their own distinct voice. When a character responds, you do not just read their words -- you hear them. Hearing Odin speak with weight and authority, or Sun Wukong with energy and attitude, makes the whole experience feel completely different from reading a text bubble.
The way I structured each character's context for the model looks like this:
$$P(c) = \text{persona}(c) + \text{culture}(c) + \text{knowledge}(c) + \text{user_query}$$
Where each part shapes how Gemini reads and responds to whatever the user asks.
What I Learned
Building this taught me a lot about the difference between having an API and actually building something good with it.
Getting Gemini to stay in character took way more work than I expected. Early versions kept breaking -- Athena would suddenly start sounding like a help desk bot. I had to be really specific in my prompts about tone, word choice, and what the character would never say.
I also learned how much data quality matters. The more detail I put into each character profile, the better and more accurate Gemini's responses were. It was a pretty direct relationship.
Integrating ElevenLabs taught me a lot about voice design. Picking the right voice for each character, and tuning the settings so it felt natural and not robotic, was its own whole challenge that I did not expect going in.
On the frontend side, mixing TypeScript and JavaScript meant I had to stay careful about type safety, especially when dealing with API responses that did not always come back in the same shape.
Challenges I Faced
Keeping characters in-voice. The hardest part was prompt design. Getting a language model to consistently act like a specific mythological character, with the right tone and cultural accuracy, took a lot of trial and error.
Cultural accuracy. I wanted to actually respect each mythology instead of just making things up. Researching the real stories, attributes, and domains of each character took time. Getting Sun Wukong's energy right feels really different from getting Isis's tone right.
Voice matching with ElevenLabs. Choosing a voice that actually fits a character's personality and culture, and then tuning it so it sounds right in context, was harder than I thought. A voice that sounds great in isolation can feel totally wrong when Loki says something sarcastic.
Supabase integration. Connecting the frontend to Supabase cleanly, with fast queries and the right data structure for the UI, had a learning curve I did not totally expect.
Scope. I had ideas for way more characters and features. Deciding what to cut so I could actually finish something polished in time was honestly one of the toughest parts.

Log in or sign up for Devpost to join the conversation.