InterviewLab
ActiveFeatured

InterviewLab

AI-powered technical interview practice with real-time voice conversations and live code execution

Technologies

FastAPIv0.115+LangGraphv0.0.40+LiveKitv0.11.0+OpenAI GPT-4o-miniOpenAI STT/TTSDockerPostgreSQLv16Redisv7+2 more

InterviewLab — AI-Powered Technical Interview Practice (Portfolio Case Study)

The Problem

Traditional technical interview practice often lacks realism, immediate feedback, and interactive voice-based engagement. Candidates struggle to practice in realistic interview conditions, receive timely feedback on their performance, and test their code in a real execution environment.

Most practice platforms are text-based, don't execute code, and provide generic feedback that doesn't help candidates improve specific skills. Without realistic practice, candidates enter real interviews unprepared for the voice-based, interactive nature of technical interviews.

The Solution

InterviewLab delivers AI-driven technical interviews using real-time voice conversations, live code execution, and in-depth feedback. The platform combines LiveKit for voice communication, LangGraph for interview orchestration, Docker sandboxes for code execution, and comprehensive analytics to provide realistic practice with actionable feedback.

Example: Instead of practicing with static coding problems or text-based mock interviews, candidates can have natural voice conversations with an AI interviewer, write and execute code in real-time, and receive detailed feedback on communication, technical knowledge, problem-solving approach, and code quality.

What I Built

1) Real-Time Voice Conversations

InterviewLab provides natural voice conversations with an AI interviewer using LiveKit and OpenAI:

  • LiveKit WebRTC: Real-time voice communication with under 3 seconds latency
  • OpenAI STT: Speech-to-text for transcribing candidate responses
  • OpenAI TTS: Text-to-speech for AI interviewer responses
  • Voice Activity Detection: Detects speech boundaries for accurate transcription
  • Natural Flow: Conversations feel natural and interactive, not scripted

The voice system enables realistic interview practice where candidates speak naturally, just like in real interviews, rather than typing responses.

2) Live Code Execution

Candidates can write and execute code in isolated Docker sandboxes:

  • Docker Sandboxes: Secure, isolated containers for code execution
  • Python 3.11: Full standard library support
  • JavaScript (Node 18): Standard Node.js APIs
  • Real-Time Execution: Code runs immediately with output feedback
  • Code Review: AI analyzes code quality, correctness, and efficiency

When the AI interviewer asks a coding question, candidates can write code in the integrated Monaco editor, test it locally, then submit it for execution and review. The sandbox provides authentic feedback on whether code actually works.

3) Comprehensive Feedback

InterviewLab provides detailed feedback across four skill dimensions:

Weighted Skill Breakdown:

  • Communication (25%): Clarity, articulation, engagement
  • Technical Knowledge (30%): Depth, accuracy, expertise
  • Problem-Solving (25%): Approach, logic, creativity
  • Code Quality (20%): Correctness, efficiency, readability

Overall Score Calculation: The final score is a weighted average, not a simple average. For example:

  • Communication: 0.8 × 25% = 0.20
  • Technical Knowledge: 0.7 × 30% = 0.21
  • Problem-Solving: 0.9 × 25% = 0.225
  • Code Quality: 0.6 × 20% = 0.12
  • Overall Score = 0.755 (75.5%)

Feedback Components:

  • Individual skill scores (0.0-1.0 scale)
  • 2-3 strengths identified
  • 2-3 areas for improvement
  • 3-5 actionable recommendations

This transparent scoring system helps candidates understand exactly how they're evaluated and where to focus improvement efforts.

4) Resume-Based Questions

Questions are tailored to each candidate's background:

  • PDF Resume Parsing: Extracts experience, skills, and education
  • Tailored Questions: AI generates questions based on resume content
  • Job Description Integration: Optional job description for role-specific questions
  • Topic Tracking: System tracks which topics have been covered
  • Progressive Difficulty: Questions adapt based on candidate responses

Instead of generic questions, candidates receive questions relevant to their experience level and background, making practice more valuable and realistic.

5) LangGraph Orchestration

Interview flow is managed by a LangGraph state machine:

Interview Phases:

  • Intro (2-5 min): Greeting, initial questions
  • Exploration (10-20 min): Resume-based questions
  • Technical (10-15 min): Code exercises, problem-solving
  • Closing (2-5 min): Final questions, wrap-up

State Management:

  • Checkpoint Persistence: Interview state saved after each turn
  • Conversation History: Full transcript maintained
  • Phase Transitions: LLM decides when to move between phases
  • Concurrent Support: Multiple interviews can run simultaneously

The orchestrator ensures natural conversation flow, with the AI interviewer adapting questions based on candidate responses and interview progress.

6) Interview Analytics

Candidates can track their progress over time:

  • Skill Progression: Track improvement across all four dimensions
  • Performance Comparisons: Compare scores across multiple interviews
  • Radar Charts: Visual representation of skill strengths
  • Historical Data: Review past interviews and feedback
  • Trend Analysis: See improvement patterns over time

Analytics help candidates identify areas for improvement and measure progress as they practice.

Technical Deep Dive

How It Works

InterviewLab follows a voice-first interview flow:

Loading diagram...

Interview Flow:

  1. User starts interview → FastAPI creates interview record and LiveKit room
  2. Frontend connects to LiveKit → WebRTC voice connection established
  3. Agent bootstraps → Loads orchestrator, TTS/STT, database connections
  4. AI greeting → Orchestrator generates personalized greeting
  5. Conversation loop → User speaks → STT transcribes → Orchestrator processes → TTS responds
  6. Code submission → Code executed in Docker → Results analyzed → Feedback provided
  7. Interview completion → Comprehensive feedback generated → Analytics updated

Technology Stack

Backend:

  • FastAPI (Python 3.11+): Async API framework
  • LangGraph 0.0.40+: State machine orchestration
  • LiveKit Agents: Real-time voice agent framework
  • PostgreSQL 16: Interview state and checkpoints
  • Redis 7: Session caching and state management
  • Docker: Code execution sandboxes

Frontend:

  • Next.js 16: React framework with App Router
  • TypeScript 5.0+: Type safety
  • LiveKit Client: WebRTC integration
  • Monaco Editor: Code editor
  • Zustand: State management
  • TanStack Query: Data fetching

AI & Voice:

  • OpenAI GPT-4o-mini: Question generation, response analysis, feedback
  • OpenAI STT: Speech-to-text transcription
  • OpenAI TTS: Text-to-speech synthesis
  • Silero VAD: Voice activity detection

Key Technical Decisions

LangGraph for Orchestration: State machine manages complex interview flow with explicit phases, ensuring natural progression. Checkpoint persistence allows interviews to resume if interrupted, and reducers prevent race conditions in concurrent interviews.

LiveKit for Voice: WebRTC provides under 3 seconds latency for natural conversations. The agent framework simplifies STT/TTS integration, and built-in room management handles multiple concurrent interviews.

Docker Sandboxes: Isolated containers ensure security while allowing real code execution. This provides authentic feedback on whether code actually works, not just syntax checking.

Weighted Skill Scoring: Transparent weighted average (not simple average) shows candidates exactly how scores are calculated. Technical Knowledge (30%) weighted highest reflects its importance in technical interviews.

Production Impact

Before InterviewLab

A candidate's interview preparation:

  1. Practice coding problems on LeetCode (text-based, no execution)
  2. Record mock interviews (no AI feedback, manual review)
  3. Review generic interview tips (not personalized)
  4. Hope for the best in real interview Result: Unprepared for voice-based, interactive interviews

With InterviewLab

The same preparation:

  1. Practice with AI interviewer (realistic voice conversations)
  2. Execute code in real-time (authentic feedback)
  3. Receive detailed feedback (know exactly what to improve)
  4. Track progress over time (see improvement) Result: Confident and prepared for real interviews

Use Cases

Job Seekers:

  • Practice technical interviews before real interviews
  • Improve communication skills through voice practice
  • Test code solutions in real execution environment
  • Track progress and identify improvement areas

Career Changers:

  • Practice interviews for new technical roles
  • Build confidence with realistic practice
  • Receive feedback on technical knowledge gaps
  • Prepare for coding challenges

Students:

  • Prepare for internship interviews
  • Practice problem-solving under interview conditions
  • Improve code quality through feedback
  • Build interview confidence

Architecture Highlights

Production-ready patterns: LangGraph state machine for interview orchestration, LiveKit WebRTC for real-time voice, Docker sandboxes for secure code execution, weighted skill scoring for transparent feedback, and checkpoint persistence for interview continuity. InterviewLab demonstrates how modern AI and real-time communication can transform interview preparation, providing candidates with realistic practice and actionable feedback.

Want to Build Something Similar?

I specialize in building production-ready AI systems that scale. Let's discuss your project.