Inspiration
The idea for PrepAI came from a frustration I experienced firsthand: traditional interview prep felt mechanical and disconnected from real interviews. Grinding LeetCode problems helped with algorithms, but it didn't prepare me for the pressure of explaining my thought process out loud, discussing system design trade-offs in real-time, or handling the natural flow of a technical conversation. I realized that the missing piece wasn't just practice—it was realistic, conversational practice that mimicked how actual interviews happen. I wanted to build something that could have natural back-and-forth conversations about technical topics while also evaluating code quality and providing structured feedback.
Our first prototype was just a chatbot that could discuss technical topics, but it felt hollow—it couldn't actually verify if code worked or provide concrete feedback. We realized we needed to give the AI 'hands'—specialized capabilities it could invoke when needed. Through iteration, I built out three Lambda functions (code executor, resume analyzer, performance evaluator) and connected them as tools the agent could intelligently call. This transformed it from a chat interface into something that could conduct real technical assessments.
What it does
PrepAI simulates realistic technical interviews through natural voice conversations. It conducts live interviews across 8 different types (Google SDE, Amazon SDE, Microsoft SDE, AWS/Azure/GCP Solutions Architect, Behavioral, and Coding) with real-time speech interaction. Candidates can write code in an integrated Monaco editor that executes in a sandboxed environment with immediate feedback. The platform analyzes uploaded resumes using AWS Textract to tailor questions to your background, then generates comprehensive performance reports with scores across five dimensions: technical knowledge, problem-solving, communication, code quality, and cultural fit. Analytics dashboards track progress over time with percentile benchmarks and trend analysis, creating a complete preparation ecosystem from practice to performance tracking.
How we built it
We built a three-tier architecture with Next.js 15/React 19 frontend, FastAPI backend with WebSocket support, and AWS serverless infrastructure. The frontend uses Monaco Editor for coding, Recharts for analytics, and WebSocket for real-time audio streaming. The backend integrates Faster Whisper for speech-to-text and Coqui TTS for voice synthesis. We created three Lambda functions using AWS SAM: Code Executor (sandboxed Python/JavaScript execution with RestrictedPython), CV Analyzer (resume parsing with Textract), and Performance Evaluator (weighted scoring across five dimensions). These Lambda functions connect to AWS Bedrock Agent with Claude 3 Haiku as "action groups" that the AI intelligently invokes during conversations. The voice pipeline flows through WebSocket: audio → Whisper STT → Bedrock Agent → Coqui TTS → audio playback, with full transcripts persisted to S3.
Challenges we ran into
- WebSocket state synchronization proved complex—handling bidirectional audio while managing conversation state, interruptions, and dropped connections required implementing a finite state machine.
- Claude's responses included Markdown and stage directions like "smiling" that sounded robotic when spoken, so we built a text cleaning pipeline that removes formatting and truncates to conversational responses.
- Lambda cold starts caused 2-3 second delays; we solved this with lazy loading and keeping models warm in global scope.
- Audio format mismatches between browser capture (48kHz) and Whisper (16kHz) required resampling and manual WAV header construction.
- Textract struggled with non-standard resumes, necessitating a PyPDF2 fallback and industry-specific skill extraction.
- We optimized costs by switching from Claude 3.5 Sonnet to Haiku (90% reduction) and limiting conversation history.
Accomplishments that we're proud of
We achieved genuinely conversational interviews that feel natural, not scripted—the AI asks contextual follow-ups and adapts difficulty based on responses. Our end-to-end voice pipeline responds consistently within 2-5 seconds through careful optimization of every component. Building a secure, production-ready code executor that safely runs untrusted code while providing real feedback was a significant engineering challenge. The Bedrock Agent intelligently orchestrates tools—dynamically deciding when to execute code, reference knowledge bases, or discuss concepts based on context. Our performance evaluation provides holistic assessments across five dimensions with percentile rankings and actionable feedback, not just a score. Despite being AI-heavy, we created a polished UI with Monaco integration, real-time visualizations, and smooth WebSocket interactions. The fully serverless architecture scales automatically and costs almost nothing at low usage.
What we learned
- AI agents require careful constraint design: explicit limits on sentence count, format requirements, and tool usage guidelines are essential for production reliability.
- Real-time systems demand different thinking: embracing WebSockets, streaming, and async processing transformed the experience from functional to delightful.
- Voice interfaces have unique UX considerations like response brevity, natural phrasing, and handling interruptions that don't exist in text interfaces.
- Document parsing is harder than expected: format diversity and OCR limitations require multiple extraction methods and validation.
- Performance optimizations are multiplicative: small improvements in STT, agent invocation, and TTS compound dramatically when combined with streaming and parallelization.
What's next for PrepAI
- We plan to implement JWT authentication with OAuth 2.0 for user accounts and long-term progress tracking.
- Migrating from S3-based storage to PostgreSQL/DynamoDB will enable advanced analytics and faster queries.
- Adding video interview mode with computer vision will analyze non-verbal communication like posture and eye contact.
- We'll build collaborative whiteboarding for system design interviews and React Native mobile apps for practice anywhere.
- Multi-language support (Spanish, Hindi, Mandarin) will make the platform globally accessible.
- Company-specific interview modes trained on actual interview patterns from Amazon, Google, etc., will provide targeted preparation.
- We're exploring peer review features where experienced engineers provide human feedback, and partnerships with companies to use PrepAI as a pre-screening tool.
- Advanced code quality analysis with static analysis tools, ML-based performance prediction models, and team collaboration features for universities and bootcamps are also on the roadmap.
Built With
- bedrock(claude3haiku)
- coquitts
- fastapi
- fasterwhisper
- lambda
- monacoeditor
- next.js
- python
- react
- s3
- tailwindcss
- textract
- typescript
- websocket
Log in or sign up for Devpost to join the conversation.