Featured Project
Open Source
Side Project
AI/ML
Completed

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

Next.js
React
TypeScript
Azure OpenAI
Azure Speech Services
GPT-4o-mini
Prisma
PostgreSQL
IndexedDB
Terraform
Tailwind CSS
Shadcn/ui
React Hook Form
Zod
Framer Motion

Architecture & System Design

AI Tech Interview system architecture showing Next.js app with Azure OpenAI and Azure Speech Services

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

Interview flow diagram showing the voice-driven interview loop from setup to results

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

Performance Metrics

Detailed score breakdown showing 6 evaluation criteria with percentages

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

Application Screenshots

Session setup form with role title, company name, and job description inputs

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

Interview results dashboard showing overall score, performance band, and question list

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

Feedback section with strengths, improvements, and actionable suggestions

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

External Links