AI Tech Interview - Voice-Powered Interview Preparation Platform
AI-powered technical interview preparation platform that generates role-specific questions, conducts voice-based interviews, and provides detailed feedback with scoring. Features Azure OpenAI GPT-4o-mini for intelligent question generation and evaluation, Azure Speech Services for TTS/STT, and seniority-aligned question difficulty.
Overview
A fullstack voice-powered technical interview preparation platform built with Next.js 16, Azure AI services, TypeScript, Prisma 7, and PostgreSQL. Features AI-powered question generation based on target role and job description using Azure OpenAI GPT-4o-mini, voice-first interaction with Azure Speech Services (TTS reads questions, STT transcribes responses), timed responses (1-5 min per question with visible countdown), multi-dimensional AI evaluation across 6 criteria (Relevance 25%, Technical Accuracy 25%, Clarity 20%, Depth 15%, Structure 10%, Confidence 5%), seniority-aligned question difficulty (Junior/Semi-Senior/Senior), detailed feedback with strengths, improvements, and actionable suggestions, offline-first architecture with IndexedDB for session persistence, Infrastructure as Code with Terraform managing Azure resources, and comprehensive documentation with architecture diagrams and lessons learned. Deployed with CI/CD best practices.
Technologies & Tools
Architecture & System Design

System architecture: Next.js 16 + Prisma 7 + PostgreSQL connecting to Azure OpenAI (GPT-4o-mini) and Azure Speech Services

Interview flow: Session setup → Topic extraction → Question generation → Voice interview loop → AI evaluation → Results
Performance Metrics

Multi-dimensional scoring: Relevance (25%), Technical Accuracy (25%), Clarity (20%), Depth (15%), Structure (10%), Confidence (5%)
Application Screenshots

Session setup: Target role input, optional company name, and job description for AI-powered question generation

Results dashboard: Overall score with performance band (Excellent/Good/Fair/Needs Improvement) and question breakdown

AI-powered feedback: Strengths, areas for improvement, and seniority-adjusted recommendations
Key Features
- 1AI-powered question generation using Azure OpenAI GPT-4o-mini with role-specific targeting based on job descriptions
- 2Seniority-aligned question difficulty: Junior (foundational concepts), Semi-Senior (practical scenarios), Senior (system design)
- 3Voice-first interaction: Azure Speech Services TTS (text-to-speech) reads questions, STT (speech-to-text) transcribes responses
- 4Timed response system with visible countdown timer (1-5 minutes per question based on category: technical, behavioral, system design)
- 5Multi-dimensional AI evaluation across 6 weighted criteria: Relevance (25%), Technical Accuracy (25%), Clarity (20%), Depth (15%), Structure (10%), Confidence (5%)
- 6Detailed feedback with strengths, improvements, and actionable suggestions adjusted for target seniority level
Challenges & Solutions
Token-Based Authentication for Client-Side Speech SDK
Challenge: Azure Speech SDK runs in the browser and requires authentication. Exposing API keys client-side is a major security vulnerability. Direct API key usage violates security best practices.
Solution: Implemented server-side token endpoint (/api/speech/token) that generates 10-minute authorization tokens. Client-side code uses SpeechConfig.fromAuthorizationToken() instead of API keys. Added token refresh logic for sessions exceeding 10 minutes. Result: Zero exposed credentials, secure browser-based speech services.
Azure OpenAI API Version Compatibility for Prompt Caching
Challenge: Prompt caching feature (50% input token savings) was not working despite following documentation. API versions change frequently with monthly preview releases. No clear minimum version requirements documented.
Solution: Discovered prompt caching requires API version 2024-10-01-preview or later (not available in GA versions). Made API version configurable via environment variable (AZURE_OPENAI_API_VERSION). Documented minimum versions for key features: JSON Mode (2023-12-01-preview), Structured Outputs (2024-08-01-preview), gpt-4o-mini (2024-08-01-preview). Result: 50% cost reduction on repeated system prompts.
Next.js 16 Breaking Change - Dynamic Route Params as Promises
Challenge: Upgraded to Next.js 16 and all dynamic routes (e.g., /interview/[id]) broke with TypeError: Cannot read property 'id' of Promise. This was a breaking change from Next.js 13-15 where params were synchronous objects.
Solution: Updated all dynamic routes to await params: const { id } = await params; instead of const { id } = params. Updated TypeScript types from params: { id: string } to params: Promise<{ id: string }>. Applied fix to API routes, pages, and generateMetadata() functions. Key lesson: Next.js 16 made params asynchronous - must await in all dynamic routes.
Project Information
Timeline
Started: Dec 2025
Last updated: Jan 2026
Role
Full Stack Developer + AI Engineer
Project Metrics
3
AI Services
6
Evaluation Criteria
3
Seniority Levels
50%
Token Usage Optimization