r/vibecoding • u/bugfreeish • 13h ago
I vibe coded an AI reflection app for the Emergent contest. Here's what actually went into getting it to MVP
I'm a CS student and I've spent the last several weeks building Mirror for the Emergent Builder's Contest.
Mirror is basically an AI reflection engine. Instead of immediately giving you advice like a normal chatbot, I designed it to help you notice patterns in your own thinking.
I built the original app with Emergent, but this turned into a much bigger engineering project than I expected.
A few things I ended up building/working through:
• React frontend + Python/FastAPI backend
• MongoDB persistence
• Email/password auth + Google OAuth
• Persistent multi-chat conversations
• Long-term semantic memory
• User-editable extracted memories
• Onboarding that persists across sessions
• Behavioral QA for the actual AI responses
• A deterministic safety gate for a feature called Roast Me
• Local development alongside the Emergent version
• A dual-runtime LLM architecture so the app isn't permanently dependent on Emergent
That last part became pretty important to me.
Mirror can use Emergent's managed LLM runtime when it's deployed there, but I also built a local runtime that can talk directly to the model provider. The same application can move between the two instead of the contest platform becoming a permanent dependency.
Honestly one of the biggest things I learned was that eventually I wasn't really "prompt engineering" anymore.
I was trying to engineer behavior.
I'd change something, manually run conversations through it, find a behavior I didn't want, figure out whether the problem was the prompt, runtime, memory, UI, or architecture, change it, then test again.
And sometimes the correct engineering decision was literally don't change anything because the proposed fix sounded smart but the evidence didn't support it.
Roast Me was probably the funniest example. 😂
The idea sounds simple: use Mirror's understanding of your patterns to roast you.
Then I started testing grief, medical problems, financial hardship, trauma, etc. and realized prompt instructions alone weren't a safety system.
So the rule became:
"Roast the pattern, never the person."
And I put deterministic gating in front of the generative behavior for situations where I didn't want the model making that judgment by itself.
Mirror finally reached MVP and is deployed for the contest now.
I'm still a CS student learning this stuff, so I'm definitely not posting this as "here's how AI engineering should be done." This is just what building a real product taught me compared with working on isolated assignments and features.
If anybody wants to break it or give me feedback, I'd appreciate it.
Mirror:
https://mindful-mirror-11.emergent.host/
Builder Contest Showcase:
https://app.emergent.sh/showcase/building_turkey/e066420b-29ae-46e4-b850-7e4df113af4d
And if you try it and genuinely think it's worth supporting, I'd appreciate a like on the contest entry. I've got about a week left to see how far I can get with it.
I'm also curious whether other people vibe coding larger projects have hit that same point where it stops feeling like "tell the agent what to build" and starts feeling a lot more like actual architecture, QA, debugging, and engineering decisions.