Repository

https://github.com/aiexr/hackdartmouth-xi

Inspiration

We were inspired by a gap we kept seeing in interview prep. LeetCode helps people practice solving problems, but most candidates still struggle when they have to explain decisions out loud, respond to follow-up questions, and stay composed in a live interview. We wanted to build a tool that captured that pressure and turned practice into a conversation. That idea led us to LeetSpeak, a platform that helps users prepare from the perspective of the interviewer and the full interview experience.

What it does

LeetSpeak is an AI-powered mock interview platform for behavioral, technical, quant, and system design practice. Users can choose a scenario, speak with an AI interviewer, code in a live editor, use a whiteboard when needed, and receive a rubric-based review at the end of the session. The platform also lets users upload a resume so feedback can reflect their own background and goals. Over time, users can track interviews, scores, streaks, and areas where they need more work.

How we built it

We built LeetSpeak with Next.js, React, and TypeScript, which gave us a fast way to ship both the product experience and the supporting API routes in one codebase. MongoDB stores interviews, transcripts, profile data, and user metrics, while a shared LLM integration layer powers grading and coaching across different model providers. We used Monaco for live coding, tldraw for whiteboarding, and realtime voice and avatar integrations to make the sessions feel more interactive. The result is a system that connects practice sessions, feedback, and progress tracking into one continuous workflow.

Challenges we ran into

One of our biggest challenges was coordinating several moving parts at once during a fast-paced build. We had frontend flows, backend persistence, live session handling, prompt design, and third-party integrations that all had to work together closely for the product to feel coherent. We also had to make sure the feedback felt credible, which meant designing strong rubrics and keeping the context from resumes, transcripts, code, and whiteboards aligned. On top of that, we had to make careful scope decisions so we could ship something polished instead of spreading ourselves too thin.

Accomplishments that we're proud of

We are proud that LeetSpeak feels like a real product instead of a collection of disconnected demos. A user can enter the app, practice an interview, receive structured feedback, and review their progress in a way that feels complete and intentional. We are also proud that we built support for several interview formats inside one platform while keeping the experience clear for the user. Most of all, we are proud that the project turns a familiar problem into a more realistic and useful form of practice.

What we learned

We learned a great deal about collaboration in a high-pressure environment. A project like this moves faster when the team agrees early on the core user flow and then builds every feature around that shared goal. We also learned the value of clear interfaces between systems, especially when multiple people are working on frontend, backend, and AI behavior at the same time. More broadly, we learned that strong teamwork comes from making fast decisions, reducing ambiguity, and protecting scope when time is limited.

What's next for LeetSpeak

Next, we want to make the interview experience feel smoother and more natural from start to finish. That includes stronger voice interactions, better handling for loading and error states, and more automated testing around the core practice flow. We also want to expand the scenario library and make the feedback more adaptive to each user's history and weak spots. Over time, we see LeetSpeak growing into a more personalized coach that helps users improve across many rounds, not just one session.

Built With

  • elevenlabs
  • gemini
  • liveavatar
  • mongodbatlas
  • next.js
Share this project:

Updates