Inspiration

I'm one of those applicants who is prepared but always nervous. I can know my material and still blank, ramble or fill the silence with "um" the moment someone says "tell me about a time when...". Rehearsing alone doesn't help much, because nobody tells you what you did wrong. Friends are kind, and generic tips like "use the STAR method" don't say anything about your answer.

I wanted a practice partner that listens to what you actually said and gives honest, specific feedback. It should do that without judging you and be available at any hour.

What it does

Intervue is a mock interview web app. You pick a track, answer out loud or in writing, and get coaching that quotes your own words.

  • 52 interview tracks, including behavioral, engineering, medicine, law, sales, visa interviews and pitch competitions. Each has 15 questions, and a session asks 12 of them in a random mix, so repeat practice stays fresh.
  • Voice or written answers. Voice mode has an optional microphone check, a live transcript, and a live read-out of your pace and filler words. An interviewer voice can read each question aloud.
  • A review for every answer: a score, one thing to work on first, a stronger way to say your weakest sentences, the follow-up question a real interviewer would ask, and a read on your tone. Spoken answers also get words per minute and a filler-word count.
  • A session debrief that finds patterns across all your answers: your best and weakest answer, and what to fix first.
  • A progress chart. Every session is saved, and the chart shows whether you're actually improving, with a plain-language "up X since your first session". You can filter it by track or switch to a table.
  • Guest or account. Guests keep their history in the browser. Accounts (email with a confirmation code, Google or GitHub) keep it across devices.
  • It still works when things fail. If Gemini fails, Groq reviews the answer. If both fail, a clearly labelled "basic feedback" grader steps in and offers a retry. Unfinished sessions can be resumed for 24 hours.
  • Installable on a phone as a PWA, with screens that work from 320px wide.

How we built it

Intervue is a Next.js and TypeScript app styled with Tailwind. Gemini writes the reviews and debriefs as structured JSON, so the interface can show each part in its own place. Groq is the backup reviewer and also transcribes recorded audio. Supabase stores accounts and session history, Auth.js handles sign-in, and nodemailer sends the confirmation codes.

The app was built in small, verified slices. Each slice was usable on its own, and each was tested and committed before the next began:

  1. one written answer with a real AI review
  2. Home and the track picker
  3. a full session with results
  4. voice and delivery feedback
  5. the debrief
  6. guest history and the chart
  7. accounts
  8. the resilience and polish layers

I wrote the plan first (scope, product requirements, then a technical spec) and built from it with an AI coding agent, so every step had a written goal to check against. Scoring, trend calculation, speech metrics and de-duplicated saves are covered by Vitest tests. The AI keys and the database service key are only ever read on the server.

Challenges we ran into

  • Voice is messy across browsers. Live speech recognition works well in Chrome but not everywhere. In Brave, the first click on record showed an error and the second click worked. We tracked the cause down and turned the bug into failing-then-passing tests. Now, if live captions fail after the microphone has opened, recording quietly continues as audio that the server transcribes, so the user only ever sees one continuous action.
  • No spoken question in some browsers. Some browsers (Brave or Chromium on Linux, for example) have no built-in voice, so the interviewer would have been silent. A Gemini-generated server voice now takes over, fetching the next question ahead of time so there's no pause.
  • AI that fails. Models time out, hit quotas and return malformed output. We built the Gemini, Groq and basic-grader chain so a person in the middle of a practice session never hits a dead end.
  • Sending sign-in emails safely. We switched from a test email service to SMTP with nodemailer, and made the app refuse to send the SMTP password over a STARTTLS port without encryption.
  • Scope. The plan was much bigger than a typical hackathon project. Keeping the app demoable after every slice was what made that manageable.

Accomplishments that we're proud of

  • The feedback really does quote what you said and points at one specific fix, which is the whole reason the app exists.
  • The follow-up question: it goes after the gaps in your answer, the way a real interviewer would.
  • A voice flow that works across browsers, including ones with no speech support, instead of only in the best case.
  • The "never a dead end" design: every AI failure has a visible, honest fallback.
  • A working app that is installable on a phone, with accounts, saved history and a progress chart that shows improvement.

What we learned

  • Planning before building pays off. Writing the scope, product requirements and spec first meant the agent and I always had something concrete to check each build step against.
  • Small, verified slices beat big leaps. A working, committed app after every step meant bugs were found while they were still small.
  • A precise bug report is a superpower. Describing the Brave bug exactly ("the error flashes, then the second click works") led straight to the root cause.
  • Real browsers disagree. Anything involving the microphone or speech needs a fallback plan from the start.
  • Structured AI output makes UI easier. Asking the model for JSON with named fields turned the review into something we could design around.

What's next for Intervue

  • Deploy it publicly so anyone can try it without setting up keys.
  • Add more tracks and let people write their own questions, for example for a specific job posting.
  • Run a mock interview as a back-and-forth conversation, where the follow-up question is asked and answered live.
  • Show richer delivery feedback over time, such as pace and filler trends across sessions.
  • Add practice reminders and streaks to help nervous applicants build a habit.
  • Support more languages for both the questions and the voice.

Code: https://github.com/wakkaduu/Devpost-Intervue

Built With

  • auth.js
  • bcrypt
  • eslint
  • fast-check
  • google-auth
  • google-gemini
  • gpt-oss
  • groq
  • mediarecorder-api
  • msw
  • nextjs
  • node.js
  • postgresql
  • react
  • resend
  • supabase
  • synsthesis-api
  • tailwindcss
  • testing-library
  • typescript
  • vercel
  • vitest
  • web-speech-api
  • whisper
Share this project:

Updates

Submission history