💡 Inspiration
Technical and behavioral interviews are notoriously stressful. Candidates often practice in front of a mirror or record themselves, but this lacks objective, standardized feedback. We realized that with the recent advancements in Large Language Models and speech-to-text, we could build a platform that doesn't just listen to what you say, but analyzes how you say it. We wanted to create an accessible, hyper-realistic interview copilot that gives candidates the confidence to land their dream jobs.
⚙️ What it does
MockOvation is a full-stack, AI-driven mock interview platform.
- Dynamic Questioning: Candidates select their domain and experience level. The platform dynamically generates a unique, role-specific question.
- Behavioral Analysis: As the candidate records their response, we use OpenCV and Librosa to track their eye contact, speaking pace (Words Per Minute), and filler-word usage (um, ah, like).
- Technical Grading: The audio is transcribed using Whisper, and the transcript is graded by OpenAI's models for semantic relevance and grammar.
- Actionable Feedback: The user receives a comprehensive dashboard detailing their score, alongside an AI-generated "ideal sample answer."
🏗️ How we built it
We designed MockOvation with a completely decoupled architecture to handle heavy video analytics without dropping frames.
- Frontend: Built with Next.js 14 (App Router), TypeScript, and TailwindCSS for a highly responsive, stateful UI managed by Zustand.
- Backend Orchestration: We used FastAPI (Python) to handle the heavy lifting asynchronously.
- Database: We utilized Neon DB (Serverless PostgreSQL) coupled with async SQLAlchemy and Alembic for rapid schema migrations.
- The AI Pipeline: We integrated OpenAI for the LLM grading and Whisper for audio transcription. We also implemented
RapidFuzzto intelligently check the user's database history and ensure they are never asked the exact same question twice.
⚠️ Challenges we ran into
Processing video and audio on a backend server is computationally expensive. Our biggest hurdle was ensuring that the transcription and grading pipeline didn't block the API from serving the next question to the user. We solved this by offloading the entire FFmpeg, Whisper, and OpenCV pipeline into FastAPI BackgroundTasks and wrapping CPU-bound heuristics in asyncio.to_thread to avoid blocking Python's Global Interpreter Lock (GIL).
🏆 Accomplishments that we're proud of
We are incredibly proud of the application's resilience. Because the architecture is completely stateless, if a candidate's network connection drops mid-interview, the UI gracefully recovers and allows them to generate the next question without losing any of their previous progress or database records.
📚 What we learned
We gained massive insights into asynchronous Python programming, managing Serverless PostgreSQL connections in a pooled environment (Neon DB), and advanced Prompt Engineering to force LLMs to return strict, heavily calibrated JSON grading rubrics.
🚀 What's next for MockOvation
In the future, we plan to implement WebRTC for real-time, two-way conversational interviews (where the AI interrupts you or asks follow-up questions live) and integrate comprehensive LeetCode-style IDE grading for live coding rounds.
Built With
- fastapi
- neon-db
- next.js
- openai
- postgresql
- python
- react
- tailwindcss
- typescript
- whisper
Log in or sign up for Devpost to join the conversation.