Inspiration
I'm a CSE (Data Science) student preparing for campus placements. Practicing DSA alone has a big gap: nobody asks follow-up questions. You solve a problem, check the answer and move on, but a real interviewer asks "why that approach?" and "what's the complexity?" I wanted a coach that speaks like an interviewer and pushes back.
What it does
PrepCoach is a voice mock-interview coach for DSA placement prep, built as an MCP server for Alexa+.
- Asks open-ended questions across arrays, strings, hashmaps, recursion and sorting (20 interview problems).
- Listens to your spoken answer and asks follow-up questions about what you missed.
- If you say "I don't know", it nudges you toward the missing idea. If you ask, it explains the model answer.
- Gives a score out of 10 per question, a final report (covered points, missed points, model answer) and a weak-topic tracker per user, so the next interview starts with your weakest area.
How I built it
- MCP server in Python (Streamable HTTP) with tools like
start_interview,answer_interview,get_interview_report,get_weak_topicsandget_progress. - Rubric-based engine: each problem has key points. Control flow and scoring are deterministic: score = 10 × covered points ÷ total points.
- Gemini is optional. It only judges which rubric points an answer covered and writes the follow-up wording. Without a key, keyword grading keeps everything working offline.
- SQLite stores per-user progress and interview sessions.
- Browser voice simulator (HTML/JS, Web Speech API) calls the real MCP tools and shows every tool call live.
Challenges
- The interviewer felt robotic. Early versions repeated the same follow-up and gave flat feedback. I added tracking of what was already asked, varied nudges and model answers.
- A voice bug: after sending an answer the mic stayed on and recorded the interviewer's own voice into my next answer. I reproduced it with a fake microphone test in a headless browser, then fixed it by switching the mic off on send.
- Keeping the AI honest: I stopped the model from controlling scoring or flow, so grading stays consistent.
- AWS signup failed (error 880104), so I used Gemini instead of Amazon Bedrock. The code still supports Bedrock if credentials are present, but I did not test it with a live account.
What I learned
How MCP servers expose tools to a voice assistant, how to combine an LLM with deterministic rules so results stay predictable, and how much small details (like a mic that stays on) affect a voice product.
What's next
More problems and topics, spaced repetition on weak topics, and testing on a real Alexa+ device. Right now it has been tested through the browser simulator only.
Privacy note
When AI grading (Gemini, or Bedrock if configured) is switched on, the text of your spoken answers is sent to that provider for grading. With it off, nothing leaves your machine.
I built this with Claude as a coding assistant.
Log in or sign up for Devpost to join the conversation.