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-parse for 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

  1. 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.
  2. 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.
  3. 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

Share this project:

Updates

posted an update

As the solo developer of PrepAI, I built the entire application end-to-end:

  • Architecture & Setup: Configured Next.js 14 App Router, TypeScript (strict mode), and Tailwind CSS with a custom design system tokens ("study lamp at night" palette and custom typography).
  • AI & Integration: Integrated Google Gemini API (gemini-2.0-flash) for server-side resume parsing into structured JSON, dynamic interview turn generation, and comprehensive scoring evaluation.
  • Core Logic & State Management: Implemented the server-side PDF text extraction using pdf-parse and designed an in-memory session manager (sessionStore.ts) to handle full conversational context across interview turns.
  • Interactive UI/UX: Built the drag-and-drop dashboard, live dynamic chat interface with native Web Speech API voice input, real-time typing confidence meter, and performance data visualisations using Recharts.

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