About the project

Inspiring the idea

Narravox was inspired by a simple question: “What if your favorite music, books, and travel dreams could directly shape the stories you experience?” I’ve always believed that storytelling becomes its most powerful when it’s deeply personal—and that our tastes, quirks, and cultural fascinations deserve to become the creative DNA of every new adventure.

With that vision, I set out to build a platform for the Qloo LLM Hackathon 2025 that doesn’t just adapt to user input, but actually weaves meaningful cultural threads through narrative. Narravox merges two worlds: Qloo’s Insights API to surface hidden cultural affinities, and Perplexity Sonar for vivid, dynamic story generation. The goal: to empower anyone to create interactive stories that genuinely reflect who they are.

What I learned

The journey from concept to production taught me the real challenges of blending cultural intelligence with large language models. I learned:

  • How important it is to filter and contextualize raw API data, so results feel natural (not generic or forced) within human stories.
  • That Swiss Design principles—minimal, grid-based layouts, with crisp black-and-white palettes—are not just beautiful, but crucial for keeping complex interfaces welcoming and distraction-free.
  • The value of transparency in AI-powered platforms; explaining why certain cultural references appear helped users understand and trust the system.

Building Narravox

  1. Architecture: I built the frontend in Streamlit (fast, beautiful, and Python-native), orchestrated cultural context with Qloo’s Insights API, and used Perplexity Sonar for scene-by-scene narrative logic. The backend runs via FastAPI services, all deployed on Render for reliable uptime.
  2. Design: Narravox’s interface was crafted using strict Swiss Design—no purple gradients, no emojis, just clarity and precision, keeping users fully immersed in the creative process.
  3. Features:
    • Taste Profile Builder: Lets users input favorite genres, places, and interests.
    • Smart Prompt Creation: Fuses these preferences with cultural affinities from Qloo, building strong narrative context.
    • Interactive Story Building: User and AI take turns, with up to fifteen story “moves,” including branching options and real-time overlays explaining each cultural connection.
    • Export: Users can download their adventure as clean text or a minimalist PDF, ready to share.
  4. Reliability and Security: All secrets are kept in environment variables, and strong error-handling ensures that even if an API fails or returns generic data, the system gracefully falls back on direct user input.

Challenges faced

  • API Data Quality: Qloo occasionally returned irrelevant or generic results. Addressed by adding robust filtering, preference-mapping, and context-fallback logic to ensure every story detail felt intentional.
  • Session Management: Streamlit’s session state quirks led to some “lost” stories—solved with a purpose-built manager that keeps track of each turn and user input.
  • No Emojis, No Distractions: Keeping UI and code totally emoji- and trend-free sometimes meant overriding default settings in both Streamlit and external libraries.
  • Production Security: Moving keys out of the codebase and into .env, refining input validation, and adding rate limits were non-negotiable steps for deploying a reliable, public app.

The journey in a nutshell

Narravox became my answer to: “How do you blend real cultural insight with creative AI and make it welcoming for everyone?” Through dozens of iterations, tough engineering problems, and relentless focus on minimalism, I built not just a hackathon project but a storytelling tool that’s both personal and global. I can’t wait for you to try it—and find your own voice in the world of Narravox.

Built with

  • Python (Streamlit, FastAPI)
  • Perplexity Sonar (LLM API)
  • Qloo Insights API
  • Render.com (hosting/deployment)
  • Swiss Design principles (UI/UX)
  • ReportLab (PDF export, optional)

Try it out, see the code, and shape your own narrative—from the music you love, the places you dream of, and the culture that inspires you!

Built With

  • perplexity
  • python
  • qloo
  • render
  • sonar
  • streamlit
  • ui/ux
Share this project:

Updates