PrepForge AI is a full-stack, end-to-end interview preparation platform that transforms resume parsing and job description analysis into an interactive, voice-driven mock interview experience.
By combining natural language processing, real-time Speech-to-Text (STT), Text-to-Speech (TTS) audio playback, adaptive AI question generation, and empirical performance analytics, PrepForge AI bridges the gap between static studying and real-world interview execution.
- Overview & Architecture
- Key Features
- Tech Stack
- Project Directory Structure
- API Endpoints Reference
- Installation & Setup Guide
- Environment Variables
- Voice Mock Interview Flow
- Progress Analytics & Evaluation
- License
PrepForge AI operates on a modern 4-tier layer architecture:
+-----------------------------------+
| Public Landing Page & UI |
| (React 19, Vite, SCSS, Router 7) |
+-----------------------------------+
|
v
+-----------------------------------+
| Hooks, Context & Web Speech API |
| (STT SpeechRec / TTS Synthesis) |
+-----------------------------------+
|
v
+-----------------------------------+
| REST API & Middleware Security |
| (Node.js, Express, JWT Cookies) |
+-----------------------------------+
|
v
+-----------------------------------+
| AI Engine & Database Layer |
| (Groq GPT-OSS-120B, MongoDB, PDF) |
+-----------------------------------+
- Unauthenticated Entry Point: Introduces visitors to the product workflow, feature capabilities, interactive voice showcase, and progress metrics before requiring authentication.
- Dynamic Header Navigation: Sticky navigation bar offering context-aware actions (
Login,Get Startedfor visitors;Dashboard,Voice Mock,History,Progress,Logoutfor authenticated users).
- JWT HTTP-Only Cookies: Secure session persistence with strict
sameSite: "lax"cookie flags preventing client-side script tampering. - Token Blacklisting: Server-side token invalidation model upon logout preventing replay attacks.
- User Ownership Isolation: All stored interview plans, voice sessions, and progress analytics are strictly isolated and authorized by user ID.
- PDF Resume Upload: Memory-buffer binary parsing extracting raw resume text using
pdf-parse. - Match Score Engine: Evaluates alignment (0β100%) between the candidate's resume, self-description, and target job description.
- Categorized Skill Gaps: Identifies high, medium, and low severity deficiencies required by the target job role.
- Personalized Preparation Plan: Generates dynamic day-by-day learning roadmaps customized specifically to missing competencies.
- Role-Specific Q&A: Generates technical and STAR-method behavioral interview questions.
- Interviewer Intention & Answer Guides: Breaks down what the interviewer assesses alongside model answer guidelines.
- Text-to-Speech (TTS): AI interviewer reads questions aloud using Web Speech Synthesis.
- Real-Time Speech-to-Text (STT): Transcribes candidate spoken answers in real-time using
SpeechRecognition/webkitSpeechRecognition. - Manual Text Fallback: Seamless fallback input for browsers without speech recognition support.
- Adaptive Questioning: AI adjusts question difficulty dynamically:
- Low Score (<6/10) β Asks simpler/foundational follow-up questions to assess basic knowledge.
- High Score (>=8/10) β Increases difficulty with complex scenario-based and architectural questions.
- 0β10 Question Scoring: Scores each answer objectively.
- Strengths & Weaknesses: Extracts key candidate strengths and observed weaknesses.
- Model Answer Generation: Provides ideal responses for comparison.
- Complete Session Storage: Persists all voice interviews in MongoDB.
- Question-Level Breakdown: Detailed review of spoken answer transcripts, scores, AI feedback, and TTS audio replay.
- Overall Score Progression: Visual bar chart tracking overall interview performance over time (e.g. Session 1: 58 β Session 2: 67 β Session 3: 74).
- Topic Performance Curves: Tracks improvement across specific domains (SQL, Python, React, System Design, Communication).
- Gap vs. Weakness Comparison: Compares initial initial skill gaps (from resume) against observed interview weaknesses (from spoken performance).
- HTML/CSS Resume Compilation: AI tailors resume content specifically to target job keywords without fabrication.
- Puppeteer PDF Export: Renders single-column, standard-compliant ATS PDFs ready for job applications.
- Framework: React 19, Vite 8
- Routing: React Router 7 (
createBrowserRouter) - Styling: SCSS (Sass 1.102), LightningCSS
- HTTP Client: Axios (with credentials)
- Speech Integration: Web Speech API (
SpeechRecognition,SpeechSynthesis)
- Runtime: Node.js
- Framework: Express 5
- Database: MongoDB & Mongoose 9
- AI SDK: Groq SDK (
openai/gpt-oss-120b) - PDF Processing:
pdf-parse&puppeteer - Security:
jsonwebtoken,bcryptjs,cookie-parser,cors
PrepForge_AI/
βββ Backend/
β βββ src/
β β βββ config/
β β β βββ database.js # MongoDB connection setup
β β βββ controllers/
β β β βββ auth.controller.js # User registration, login, logout, getMe
β β β βββ interview.controller.js # Report generation, voice sessions, analytics
β β βββ middlewares/
β β β βββ auth.middleware.js # JWT cookie verification middleware
β β β βββ file.middleware.js # Multer memory storage file upload
β β βββ models/
β β β βββ user.model.js # User schema
β β β βββ blacklist.model.js # Revoked token schema
β β β βββ interviewReport.model.js# Analysis report schema
β β β βββ interviewSession.model.js# Voice mock session schema
β β βββ routes/
β β β βββ auth.routes.js # Authentication routes
β β β βββ interview.route.js # Interview & Voice API routes
β β βββ services/
β β β βββ ai.service.js # Groq AI prompts, structured JSON & Puppeteer PDF
β β βββ app.js # Express application initialization
β βββ .env # Backend environment secrets
β βββ server.js # Server entry point (Port 3000)
β βββ package.json
β
βββ Frontend/
β βββ src/
β β βββ assets/ # SVG icons & logo graphics
β β βββ features/
β β β βββ auth/
β β β β βββ components/Protected.jsx
β β β β βββ hooks/useAuth.js
β β β β βββ pages/Login.jsx
β β β β βββ pages/Register.jsx
β β β β βββ auth.context.jsx
β β β βββ interview/
β β β β βββ components/Navbar.jsx
β β β β βββ hooks/useInterview.js
β β β β βββ pages/Home.jsx # Authenticated Plan Generator & Recent Plans
β β β β βββ pages/Interview.jsx # Interview Plan Detail View
β β β β βββ pages/InterviewVoice.jsx # Interactive Voice Mock Session
β β β β βββ pages/History.jsx # Session History & Transcripts
β β β β βββ pages/Progress.jsx # Progress Analytics Dashboard
β β β β βββ pages/LandingPage.jsx # Public Product Landing Page
β β β β βββ services/interview.api.js
β β β β βββ interview.context.jsx
β β β βββ services/
β β β βββ auth.api.js
β β βββ App.jsx
β β βββ app.routes.jsx # React Router configuration
β β βββ main.jsx
β βββ index.html
β βββ vite.config.js
β βββ package.json
β
βββ .gitignore # Git ignore rules
βββ README.md # Documentation
| Method | Endpoint | Access | Description |
|---|---|---|---|
POST |
/api/auth/register |
Public | Registers a new user account & sets HTTP-only JWT cookie |
POST |
/api/auth/login |
Public | Authenticates user & sets HTTP-only JWT cookie |
POST / GET |
/api/auth/logout |
Public | Clears cookie & adds token to server blacklist |
GET |
/api/auth/get-me |
Private | Fetches current logged-in user profile |
| Method | Endpoint | Access | Description |
|---|---|---|---|
POST |
/api/interview |
Private | Analyzes resume PDF, self description & JD to create report |
GET |
/api/interview |
Private | Fetches all recent interview plans of logged-in user |
GET |
/api/interview/report/:interviewId |
Private | Fetches detailed interview analysis report by ID |
POST |
/api/interview/resume/pdf/:interviewReportId |
Private | Generates tailored ATS resume PDF via Puppeteer |
POST |
/api/interview/session/start |
Private | Starts a new voice mock interview session |
POST |
/api/interview/session/:sessionId/answer |
Private | Submits spoken transcript, evaluates answer & gets next adaptive Q |
POST |
/api/interview/session/:sessionId/complete |
Private | Finalizes voice mock interview session |
GET |
/api/interview/sessions |
Private | Fetches all past completed voice interview sessions |
GET |
/api/interview/session/:sessionId |
Private | Fetches single voice session details & transcript |
GET |
/api/interview/progress |
Private | Computes overall score progression & topic analytics |
Create a .env file inside the Backend/ directory:
PORT=3000
MONGO_URI=mongodb+srv://<username>:<password>@<cluster>.mongodb.net/<dbname>
JWT_SECRET=your_jwt_secret_key_here
GROQ_API_KEY=gsk_your_groq_api_key_here- Node.js (v18+ recommended)
- npm or yarn
- MongoDB Database (Local or MongoDB Atlas)
- Groq API Key
git clone https://github.com/Rohan-shiva/prepforge-ai.git
cd prepforge-aicd Backend
npm installStart the backend server:
npm run dev
# Server running at http://localhost:3000Open a new terminal tab:
cd Frontend
npm installStart the Vite development server:
npm run dev
# Application running at http://localhost:5173 Candidate Clicks "Start Voice Session"
β
βΌ
AI Interviewer Speaks Question (TTS)
β
βΌ
Candidate Listens & Speaks Answer (STT)
β
βΌ
Transcript Displayed & Answer Submitted
β
βΌ
AI Evaluates Response (0-10)
(Feedback, Strengths, Weaknesses, Model Answer)
β
βΌ
Score Check & Dynamic Question Adaptation
βββββββββββββββββββ΄ββββββββββββββββββ
βΌ βΌ
Score < 6/10 Score >= 8/10
(Simpler / Follow-up Q) (In-depth / Advanced Q)
βββββββββββββββββββ¬ββββββββββββββββββ
β
βΌ
Complete 4-Question Session
β
βΌ
Overall Session Score & Weaknesses Saved
Distributed under the ISC License. See LICENSE for more information.
PrepForge AI β Prepare Smarter. Interview Better. Production Deployment: Active & Verified (Vercel & Render)