I'm a CS student. Before this hackathon, I knew a little Python — enough to follow a tutorial, not enough to build something on my own.
I didn't own a laptop; I was working on a borrowed one, which meant every install, every command, came with a small voice in my head saying don't break anything.
When I saw the "Hangover Part AI: Where's My Context?" hackathon by WeMakeDevs, the idea hooked me immediately — AI forgets everything the moment a conversation ends, and Cognee exists to fix that.
I decided to build something for myself: a personal assistant that actually remembers
what I tell it.
The First Attempt: Voilora AI
My first version was called Voilora AI. I got a basic chatbot working with Cognee and Groq, and for a few hours it worked beautifully — it remembered my name, recalled it later, even picked up on my mood.
I thought I was done.
Then it broke. Badly.
A storage mismatch error started appearing every time I restarted the app —
File not found, over and over, no matter how many times I cleared the cache or deleted folders.
I spent hours chasing it, and eventually understood the real cause: Cognee's metadata database and its file storage had gone out of sync after too many restarts during testing.
By the time I found the fix, I had also hit an "event loop" error from mixing async code with Streamlit's rerun behavior, and separately, Groq's daily free-tier token limit ran out mid-testing.
At some point, frustrated, I made a decision: start over, cleanly, with everything I'd just learned.
Starting Over: Advaita AI
The name changed for a reason. Advaita means "non-duality" — the idea that nothing is truly separate, everything is one continuous thread.
It felt like the right name for an AI that doesn't treat every conversation as a blank slate.
This time I built it in layers, testing each piece before adding the next:
-
Backend: Cognee for memory (
add,search,cognify,prune), Groq for fast responses, FastEmbed for local embeddings so I didn't need another paid API. - Frontend: Streamlit, styled to feel less like a demo and more like a real product — a dark theme, custom chat bubbles, a sidebar showing Cognee's memory lifecycle.
- Extras: voice input (transcribed with Whisper via Groq), document upload, mood detection, and a memory summary feature — small additions that made the project feel like mine, not just a copy of the example.
What Actually Broke (and What I Learned)
Event loops: Streamlit reruns your whole script on every interaction.
If you create a new asyncio event loop each time, anything Cognee is holding onto from a previous loop breaks. The fix was running each async call in its own thread with a fresh loop — not elegant, but it worked.Metadata drift:
cognee.prune.prune_data()alone isn't enough to reset memory cleanly. You needprune_system(metadata=True)too, or ghost references to old files stick around and throw errors later.Rate limits are real: Groq's free tier has a daily token cap. I hit it in the middle of testing, right when I needed the app most. The fix was as simple as a second API key, but it taught me to always have a backup plan for external services.
Speed vs. reliability: Calling
cognee.search()before every reply
made responses accurate but slow. Skipping it made replies instant but sometimes wrong. I ended up finding a middle ground — reply fast, but index immediately after, so the next question is answered correctly.
None of these were things I could have anticipated. I learned them by breaking the app, reading error messages I didn't understand at first, and slowly making sense of them one at a time.
Why This Mattered to Me
I'll be honest about my motivation: I don't own a laptop, and winning this hackathon would mean I finally could.
But somewhere in the process of fixing the fortieth error, the goal changed a little.
I stopped just wanting to win, and started wanting to understand what I was building — why an async loop breaks, why a database needs its metadata cleared, why a production app needs error handling instead of a silent except: pass.
That shift is the actual result of this hackathon, prize or no prize.
What Advaita AI Does
- remember() — stores text, voice notes, and documents into Cognee's knowledge graph
- recall() — answers questions using Cognee's hybrid graph-vector search
-
improve() — runs Cognee's
cognify()to enrich memory connections - forget() — fully clears memory, including metadata
- A memory summary feature, mood detection, and voice/document input on top of the core lifecycle
It's not polished like a commercial product. But it's mine — built,broken, and rebuilt over two days, mostly from a borrowed laptop and a lot of stubbornness.
GitHub: https://github.com/komalsahu-codes/Advaita-AI
Thanks for reading — and thanks to WeMakeDevs and Cognee for the reason to finally sit down and actually learn to build something.
Top comments (1)
The sentence that matters most here is the quiet one in the middle: you stopped wanting to win and started wanting to understand. That switch is the actual prize — laptops depreciate, that doesn't. I build tools without a developer background, and my experience matches yours exactly: understanding never arrived before building. It showed up mid-debug, somewhere between the async loop breaking and figuring out why. The borrowed-laptop detail makes this even better. Constraints have a way of filtering out everyone who was only in it for the demo. Whatever you build next, keep writing it up like this — the failure details are the useful part, and most people edit them out.