DEV Community

Cover image for Break It, Fix It: Building and Shipping a Mock Interview App in 10 Days
Shardul Hirolikar
Shardul Hirolikar

Posted on

Break It, Fix It: Building and Shipping a Mock Interview App in 10 Days

A page of the project AceMyInterview, showing an analytical dashboard with statistics and graphs of the users progress.

The setup

I’ve had a habit of abandoning my projects. I rarely finished what I started. I had some experience with full stack, but tackling a whole project seemed too overwhelming - the scope, and not knowing where to start.

So during my semester break, I decided to give myself 10 days to prove I could take a product from idea to deployment. No team, no university deadlines. Just me trying to strengthen my build-and-ship muscle.

I landed on the idea of AceMyInterview, a platform where you can practice interviews, answer role specific questions, and get structured AI feedback on your performance.

Why interviews? I specifically wanted to make interview practice easier. PDFs and past papers are great, but structured feedback can tell you not just what you got wrong, but how to improve.

What got cut off

I had planned a 3D humanoid interviewer on screen, literally talking, emoting, asking you questions, with different personalities and animations. But I decided to focus on functionality before cosmetic features.

Another feature I’d planned was to track facial, body and eye data - grading eye contact, expressions and gestures. It was genuinely a useful idea but I had to consider students with poor cameras, poor lighting or those who simply aren’t comfortable with their faces being analysed. I decided to focus on accessibility over features.

What broke

  1. Initially, I started with one API call per question. This would mean roughly 20 LLM calls per session. This is not scalable and not cheap either.
  2. Early MVP development - somewhere between building features and integrating Supabase, I forgot that users have accounts. I had to rework the entire database schema and add user ownership from scratch. The app now acknowledges the existence of other people.
  3. The schema itself was its own problem: no user ownership, non-normalized sessions, and questions shoved inside sessions as a list. I needed a place to upload and store hundreds of curated questions, and this schema simply didn't allow it.

The fixes

Fix 1: Moved to a single-api-call-at-the-end-of-interview approach, all questions and answers were packed and evaluated together. Faster and cheaper. Additionally, since different AI models might not have the same standards of a “good answer”, I introduced scoring bands from 0 to 10, where each band had a concrete meaning, which made grading consistent regardless of the model used.

Fix 2: Reworked the schema, added Supabase authentication and user ownership. Ignoring this would’ve meant ignoring a foundation for personalized data for sessions, grades, analytics, reviews, etc in the future.

Fix 3: All tables in the database were normalized, and I finally pulled questions out into a clean, separate global question bank table. Interviews now draw a random subset of questions from that table, giving users flexibility in session length.

The takeaway

The first takeaway was to make it exist first, then polish. I call it the “Break it - fix it” method. Ship ugly and go through multiple iterations because that’s where learning happens. The auth rework and schema refactors nudged me towards a better approach.

Another takeaway was the importance of systems-oriented thinking. Data flow, schema design, ownership, and potential bottlenecks - decisions here form the foundation. Good decisions made at this stage compound over time, and I learnt that the hard way through multiple architectural reworks.

What I’d do differently

I’d start with a more detailed systems plan. Iterative development is great, but before rushing to implementation, I’d map out the data flow end to end. What tables exist, how they relate, and how the schema needs to scale.

For AceMyInterview specifically, a clearer schema design upfront would have saved at least two full refactors and probably a day of lost time.

Closing thoughts

More than the platform itself, this project was about proving that I could finish what I started. I finished within 10 days.

AceMyInterview is live, has a couple of real users trying it, and still has a long roadmap ahead. But for the first time, the important part isn't the roadmap - it's that I finished.

Built with:

  • Next.js
  • Supabase
  • Gemini API
  • Groq API (used as a fallback when Gemini requests failed)

Try it here: https://acemyinterview-app.vercel.app/

GitHub: https://github.com/shiro1307/acemyinterview

Top comments (0)