Inspiration
What it does
How we built it
Challenges we ran into
Accomplishments that we're proud of
What we learned
What's next for mock inerview
Inspiration
Preparing for interviews is often stressful and unstructured. Most existing tools rely on generic, rigid question banks that don't adapt to a candidate's actual experience or the specific job description they are applying for.
We built PrepAI to create a realistic, adaptive mock interview experience—an AI coach that reads your actual resume, listens to your responses, and asks meaningful follow-up questions just like a human interviewer would.
What it does
PrepAI is a full-stack, AI-powered mock interview platform that turns job preparation into an interactive, feedback-driven experience:
- Resume & JD Parsing: Upload a PDF resume and optionally paste a job description. PrepAI extracts your skills and projects server-side into a structured profile.
- Adaptive Interviews: Questions are dynamically generated using Google Gemini API. Each follow-up builds naturally on your previous answer rather than following a static script.
- Voice & Live Confidence Tracking: Answer using text or voice (via Web Speech API) while getting real-time UI feedback on answer length and tone confidence.
- Detailed Evaluation Report: Upon completion, candidates get a comprehensive dashboard featuring an overall score, grammar/confidence breakdown, performance radar/bar charts, and per-question model answers.
How we built it
PrepAI is designed with end-to-end type safety, clean API boundaries, and a distinct "study lamp at night" visual identity (deep ink tones, warm brass accents, and custom typography).
- Framework: Next.js 14 (App Router), React 18, and TypeScript (Strict Mode).
- AI & NLP: Google Gemini API (
gemini-2.0-flash) for fast resume extraction, dynamic question generation, and report scoring. - Parsing & Voice:
pdf-parsefor server-side text extraction and browser-native Web Speech API for zero-cost voice input. - UI & Data Viz: Tailwind CSS, Lucide Icons, and Recharts for interactive performance graphs.
Challenges we faced
- Strict JSON Parsing from Unstructured Text: Extracting structured JSON reliably from raw resume text required crafting robust prompt boundaries and schema-enforcing instructions for the Gemini API.
- Context-Aware Dynamic Interview State: Ensuring the model maintains conversation context across turns without drifting off-topic or repeating questions required designing a clean in-memory session store (
sessionStore.ts) and optimized context windows. - Low-Latency Voice UI: Integrating the native Web Speech API seamlessly alongside a live answer confidence heuristic without triggering UI lag or re-render churn.
What we learned
- How to leverage Gemini 2.0 Flash for sub-second structured JSON responses and conversational prompting.
- Crafting custom design systems in Tailwind CSS to give an AI app a distinct, warm identity rather than a generic SaaS template look.
- Clean API routing patterns in Next.js 14 App Router for parsing, streaming session updates, and server-side evaluation.
Built With
- ai/ml
- full
- google-gemini-api
- next.js
- node.js
- pdf-parsing
- react
- recharts
- tailwind-css
- typescript
- web-speech-api


Log in or sign up for Devpost to join the conversation.