Dumbo - Project Story

As university students, we constantly find ourselves using AI tools to help with studying, coding, research, and writing. But one thing always stood out — the AI's responses often lacked context. We'd often get unhelpful answers mixed with irrelevant information and were left wondering: "Where did this answer come from?" or "Does this even relate to my documents specifically?”

As many other students do today, we started including lots of context in our prompts — pasting in long excerpts, uploading notes, or explaining everything from scratch. It was tedious, repetitive, and felt like we were doing the AI’s job. We often thought: "Why can't the AI just read information from documents and websites we visit?"

That’s when Dumbo was born — an intelligent chat app that works with your knowledge.


What We Built

Dumbo is a modern AI chat app powered by Retrieval-Augmented Generation (RAG). Users can upload PDFs or TXT files, save content from the web, and chat with an AI that pulls relevant context from those sources. No more pasting huge prompts — just upload and ask.

We built it with:

  • React 19 + TypeScript for a clean, modern frontend
  • Supabase for our backend, authentication, and vector database
  • OpenAI embeddings for smart, similarity-based context retrieval
  • Tailwind CSS for styling
  • A Chrome extension to save web pages and chat directly from any site

What We Learned

Building Dumbo taught us a ton:

  • How to implement RAG systems using vector search and cosine similarity
  • Chunking strategies and text extraction (PDFs, TXT, and web content)
  • Building a Chrome extension with Manifest V3 and syncing with the main app
  • Using Supabase RLS (Row Level Security) for secure, per-user data separation
  • Real-time streaming responses with OpenAI and frontend rendering
  • Structuring a scalable frontend with reusable components and global state via React Context

We also learned to optimize user experience — from theme toggles and mobile responsiveness to progressive chat history loading and embedding performance.


Challenges We Faced

  • Embedding Quality: Figuring out the right chunk size and overlap to get meaningful vector search results.
  • Browser Extension Sync: Ensuring saved web content synced properly across contexts and worked reliably from any page.
  • Security: Making sure user files, API keys, and chat history were properly isolated and encrypted.
  • Streaming UX: Smoothly handling partial responses in real-time without UI jank or lag.

Final Thoughts

Dumbo started as a solution to a real pain point: "AI should understand what I’m working on without me constantly repeating myself." We’re proud to have built something that’s not only smart and secure, but also intuitive and helpful.

Check it out, upload a file, save a page — and finally, chat with an AI that gets it.

Built With

  • bolt.new
  • netlify
  • supabase
Share this project:

Updates