Practice answering out loud
A topic becomes interview questions, a spoken exchange, and generated feedback.
A real-time AI interview partner.
UofTHacks 12 / GPT-4o
Notes & checks
Real-time speech with GPT-4o, Next.js, and PostgreSQL on AWS. Built at UofTHacks 12.
The problem
Reading interview questions is different from speaking an answer. MockMate pairs a Next.js interview screen with model-generated questions and browser speech recognition. The source shows session storage through Prisma, a database access library, and a generated conversation response route.
How it works
- TopicGenerate questions
- ConversationSpeech + transcript
- PerspectiveGenerated response
Turn a topic into questions
The start-interview route receives a session ID and topic, loads that session, and asks a model for interview questions. It extracts question-looking lines from the text and saves them to the session.
Listen and display the conversation
The interview page uses the browser's speech-recognition interface for interim and final transcripts. It also includes speech playback and camera controls. These are separate pieces of the UI, rather than evidence of one full-duplex model connection.
Generate a perspective response
The perspective route takes the supplied conversation, formats it as text, and asks a model for a reply. That reply is generated practice feedback, not an actual interviewer's private thoughts or a hiring decision.
Decisions & tradeoffs
Text parsing is a simple boundary
The question route filters lines containing a question mark instead of validating a structured question schema. That is easy to follow, but it depends on the model's formatting.
Browser support matters
Speech recognition depends on the browser interface being available. The source does not establish accuracy, improved interview performance, or a self-contained offline setup.
Try it yourself
Watch the linked recorded demo, then compare it with the start-interview and perspective routes below. That path requires no account or microphone permission.
Notice which parts come from saved session data and which are generated. Running the full interview needs external services; this page does not offer an unverified one-command setup.
Sources & scope
Limited coverage: no local checkout was available. Public source was read directly. README wording and model names differ from older portfolio notes, so this article describes the observed code path without a model-version claim.