← All projects

MockMate Hackathons

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

GitHub ↗
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

  1. TopicGenerate questions
  2. ConversationSpeech + transcript
  3. PerspectiveGenerated response
The interview flow shown by the question route, page, and perspective route.
  1. 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.

  2. 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.

  3. 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.