All work
07 / 09Completed

AI Interview Coach

Paste a real job posting, then take a live voice interview against an AI that plays the interviewer.

Role
Solo: design, full-stack, AI
Year
2026
Type
AI & Agents
Status
Completed

The problem

Interview practice is usually generic, but the questions that matter come from the actual posting, the actual company and the people who will be in the room.

What I did

Solo: design, the full-stack build, and the AI work — job analysis, the live voice loop, the coaching tips and the scored report.

Result

A finished product you can run: paste a posting, take a live voice interview, and get a 0–100 report saved to your session history.

Web app
Complete and running locally; source on GitHub, not publicly deployed
0
AI providers: Groq for the live call, Claude for the analysis
0–100
score with strengths, improvements and next steps
0–15
questions generated from the posting and your own CV
0
API routes for CV upload, the live call and the report

Watch it run · sound on

the AI interviewer asks the first question, out loud
the transcript builds while coaching tips appear

On desktop

AI Interview Coach: Landing page
Landing page
AI Interview Coach: Job analysis: topics, interviewer style, culture
Job analysis: topics, interviewer style, culture
AI Interview Coach: Live voice interview
Live voice interview
AI Interview Coach: How it works
How it works
AI Interview Coach: Features
Features
AI Interview Coach: Sign up
Sign up

Overview

A SaaS for interview prep that works from the actual job. You paste a posting and optionally upload your CV, and Claude builds an intelligence report on the role, the company and the people interviewing you.

Then you talk to it. A voice interview runs against an AI playing that interviewer, with Groq streaming the replies fast enough to feel like a conversation and a coaching tip after every answer. When the call ends you get a scored report with specific advice, saved to your session history.

How it fits together

Browser

  • Next.js 16 + React 19Built solo

    Landing, auth, job analysis, the live call room and reports.

Next.js server

  • proxy.ts

    JWT route guard on every request.

  • Server ActionsBuilt solo

    Auth, job analysis and call setup.

  • API routesBuilt solo

    /resume/upload, /call/transcribe, /call/respond, /call/report.

AI & data

  • Anthropic Claude

    Job analysis and post-call reports.

  • Groq

    Whisper speech-to-text and streaming Llama for the live interview.

  • PostgreSQL + Prisma

    Users, CVs, analyses, calls, transcripts, reports.

How it flows

  1. 1

    Give it the job

    Server Action

    Job title, description or URL, interview stage, interviewer names and an optional CV.

  2. 2

    Intelligence report

    Claude

    Ranked topics, company profile, interviewer personas, practice questions and readiness insights.

  3. 3

    Live voice interview

    Groq

    Hold to talk: Whisper transcribes, Llama answers as the interviewer, and the browser speaks the reply.

  4. 4

    Coaching as you go

    API

    Each answer gets a quick tip in the transcript without slowing the call.

  5. 5

    Scored report

    Claude

    A 0–100 score with strengths, improvements and next steps, saved to your sessions.

What I built

  1. 01Job analysis with Claude returns ranked interview topics, a company profile, interviewer personas, 10–15 tailored questions and readiness insights, validated with Zod.
  2. 02Optional job-post URL: the page is fetched, stripped and added as extra context for the analysis.
  3. 03Low-latency voice loop: Groq Llama streams the interviewer's reply token by token while the browser speaks it, and Groq Whisper transcribes the candidate's answer.
  4. 04A non-blocking coaching tip appears after every answer (STAR, specificity, results), so feedback arrives during the call.
  5. 05Post-call reports score 0–100 with strengths, improvements, detected frameworks and communication notes, all stored in session history.
  6. 06CV parsing for PDF, DOCX and TXT stores extracted text only (no binaries) and threads it through analysis and the interview without extra queries.
  7. 07Auth.js v5 email/password auth with a JWT route guard, Prisma + PostgreSQL, and Docker for local development.

Challenges I solved

  1. 01A voice interview feels broken if the interviewer takes seconds to answer.

    Solution · The live call runs on Groq (Whisper and Llama) and streams the reply word by word while the browser speaks it. Claude, which is slower but deeper, is used for the analysis and the final report.

  2. 02Coaching tips could slow the conversation down.

    Solution · Tips come from a separate background request, so the interviewer's next turn never waits for them.

  3. 03CVs arrive as PDF, DOCX or TXT and are heavy to store.

    Solution · They're parsed on the server and only the text is kept, then passed through the analysis and the call without extra database queries.

  4. 04The AI has to return data the interface can render, every time.

    Solution · Analysis and report responses are validated with Zod before they're saved.

What I learned

  • Choosing models by job: fast models for conversation, stronger models for judgment.
  • Streaming and real-time interfaces in Next.js.
  • Auth.js v5, Prisma and a proper route guard on the newest Next.js.
Next projectTikTok Agent Control