You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
InterviewForge AI is a production-grade, full-stack AI platform that simulates realistic interviews across 30+ career domains, evaluates answers with multi-dimensional scoring, provides ATS resume intelligence, offers a 500+ LeetCode Coding Arena with live code sandbox, features Voice AI mock interviews with confidence metrics, includes an interactive System Design Canvas, generates personalized career roadmaps, and delivers company-targeted prep for FAANG & 12+ top-tier companies — all powered by Google Gemini 2.5 Flash and 100% free for everyone.
💡 The Problem
Monday: "I have a Google interview next week. Where do I even start?"
Tuesday: "I practiced 200 random LeetCode problems. None were relevant."
Wednesday: "My resume got auto-rejected by the ATS. Again."
Thursday: "I bombed the behavioral round. I didn't know STAR format existed."
Friday: "I froze during the system design round. Couldn't draw anything."
Saturday: ✅ You deployed InterviewForge on Monday. You aced every round.
❌ Traditional Interview Prep
- 😰 Generic question lists with zero personalization- 📝 No structured, measurable feedback on answers- 🔄 Zero improvement tracking across sessions- 📉 No weakness detection or skill-gap analysis- 🤷 No career roadmap or progression guidance- 🏢 No company-specific preparation available- 💻 No live coding sandbox or LeetCode practice- 🎤 No voice-based mock interview simulation- 🏗️ No system design canvas or architecture tools- 💰 Paid tools that lock features behind paywalls- 🧠 No AI — just blind memorization
✅ InterviewForge AI
+ 🧠 AI-generated questions tailored to YOUR role & domain+ 📊 Multi-dimensional scoring (technical, clarity, depth)+ 📈 Historical performance analytics & trend tracking+ 🎯 Weakness-to-strength detection pipeline+ 🗺️ AI-powered personalized career roadmap+ 📄 ATS resume intelligence with skill-gap analysis+ 🏢 FAANG company-targeted prep (Google, Meta, Amazon...)+ 💻 500+ LeetCode problems with live code sandbox (4 languages)+ 🎤 Voice AI mock interview with confidence metrics+ 🏗️ Interactive System Design Canvas with AI review+ 💎 100% FREE — EVERY feature unlocked for ALL users+ 🤖 Powered by Google Gemini 2.5 Flash AI
Real-time speech analysis — practice answering questions out loud with AI analyzing your delivery, detecting filler words, and scoring your confidence.
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ff6b6b', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["🎤 Start Recording\nWeb Speech API"] --> B["📡 Live Transcription\nReal-time STT"]
B --> C["📊 Speech Analytics\nWPM · Fillers"]
C --> D["🌟 Confidence Score\n0-100% Rating"]
D --> E["📋 Full Transcript\n+ Metrics Report"]
style A fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style B fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style C fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style D fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
style E fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading
Voice AI Metrics
Metric
What It Measures
How It Helps
⚡ Words Per Minute (WPM)
Speech pace & delivery speed
Ideal range: 120-160 WPM for interviews
⚠️Filler Word Counter
"um", "uh", "like", "you know", "basically"
Identifies nervous verbal habits
🌟 Voice Confidence Score
Combined score from pace + filler frequency
0-100% overall confidence rating
📊 Live Waveform
Audio amplitude visualization
Visual feedback during recording
💻 500+ LeetCode Coding Arena
Practice 500+ top LeetCode problems in a premium coding workspace with live code execution, test case validation, and AI complexity analysis — just like the real thing, but with AI coaching.
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ffd93d', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["📋 Browse 500+\nProblems"] --> B["🏷️ Filter by\nTopic · Difficulty"]
B --> C["💻 Open Problem\nClean Practice Stub"]
C --> D["✍️ Write Solution\nJS · Python · Java · C++"]
D --> E["▶️ Run Code\nLive Execution"]
E --> F{"✓ Output Matches\nExpected?"}
F -->|"✅ Yes"| G["🏆 ACCEPTED\nMarked Solved"]
F -->|"❌ No"| H["✗ WRONG ANSWER\nTry Again"]
G --> I["🧠 AI Code Audit\nO(N) Complexity"]
style A fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style C fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style E fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
style H fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style I fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading
Coding Arena Features
+ 💻 500+ hand-curated top LeetCode problems across 18 DSA categories+ 🏷️ Topic filter pills — instantly filter by Arrays, Trees, DP, Graphs, etc.+ 🔍 Live search — find any problem by name, number, or keyword+ 📄 Pagination — 25 problems per page with clean navigation+ ✍️ Clean practice stubs — no prefilled solutions (real practice mode!)+ ▶️ Live code execution — actual output in console panel+ ✅ Test case verification — output compared against expected results+ 🏆 Auto-solved marking — green tick ONLY when output matches expected+ 🧠 AI Code Audit — Big-O time & space complexity analysis+ 🌐 4 Languages — JavaScript (Node.js), Python 3, Java 21, C++ 20
🏢 Company-Targeted Interview Prep
Company-Targeted Mock Interview Preparation — AI-generated interview questions tailored to the specific hiring bar, technical standards, cultural values, and interview loop style of top-tier companies. 100% FREE for all users.
┌──────────────────────────────────────────────────────────────────────┐
│ 🏢 SUPPORTED COMPANIES — ALL FREE │
│ │
│ 🚀 General G Google AM Amazon M Meta │
│ MS Microsoft 🍎 Apple N Netflix S Stripe │
│ U Uber Z Zoho T TCS I Infosys │
│ │
│ 🎉 ALL COMPANIES UNLOCKED FOR FREE · No paywall. No limits. │
└──────────────────────────────────────────────────────────────────────┘
How It Works
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#10b981', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["👤 User Selects\nGoogle"] --> B["🏢 Company Context\nInjected"]
B --> C["🧠 Gemini Prompt\n+ Hiring Bar\n+ Culture Values\n+ Loop Style"]
C --> D["🎙️ Company-Tailored\nInterview Session"]
D --> E["📊 AI Evaluation\nCompany Standards"]
E --> F["📈 Performance\nReport"]
style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style B fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style C fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
style D fill:#0f172a,stroke:#10b981,stroke-width:2px,color:#10b981
style E fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style F fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading
What's Included — ALL FREE
+ ✅ AI Interview Simulator — 30+ roles, 6 types, 3 difficulties+ ✅ Voice AI Mock Interview — real-time speech analysis + confidence scoring+ ✅ 500+ LeetCode Coding Arena — 4 languages, live execution, AI code audit+ ✅ System Design Canvas — drag-and-drop architecture builder + AI review+ ✅ Resume ATS Intelligence — PDF upload, 0-100 scoring, skill gap analysis+ ✅ Career Roadmap Generator — weekly plans, task tracking, readiness score+ ✅ Dashboard Analytics — performance trends, score history, interview stats+ ✅ 12 Company-Targeted Prep — Google, Meta, Amazon, Apple, Netflix + more+ ✅ Multi-dimensional AI Scoring — technical, clarity, depth, communication+ ✅ Interview History & Tracking — full session archive with replay+ ✅ No signup fees · No paywalls · No premium tier · No limits
🏗️ System Architecture
High-Level Overview
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'secondaryColor': '#0f172a', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart TD
subgraph CLIENT["🖥️ CLIENT TIER — Next.js 16 + React 19"]
U["👤 User"] --> FE["⚡ App Router + Turbopack"]
FE --> AUTH_UI["🔐 Auth Pages\nLogin · Register"]
FE --> DASH_UI["📊 Dashboard\nAnalytics Hub"]
FE --> INT_UI["🎙️ Interview Engine\nCompany Selector"]
FE --> RES_UI["📄 Resume Workspace\nPDF Upload + ATS"]
FE --> ROAD_UI["🗺️ Roadmap Builder\nWeekly Plans"]
FE --> CODE_UI["💻 LeetCode Arena\n500+ Problems"]
FE --> VOICE_UI["🎤 Voice AI\nSpeech Analysis"]
FE --> DESIGN_UI["🏗️ System Design\nArchitecture Canvas"]
FE --> HIST_UI["📜 History · Profile · Settings"]
end
subgraph API["🛡️ API TIER — Spring Boot 3 + Java 23"]
GW["🌐 REST Controllers\n14 Route Modules"] --> SEC["🔒 Spring Security\nJWT Filter Chain"]
SEC --> AUTH_SVC["🔐 Auth"]
SEC --> INT_SVC["🎙️ Interview"]
SEC --> SESSION_SVC["📋 Session"]
SEC --> Q_SVC["❓ Question"]
SEC --> ANS_SVC["💬 Answer"]
SEC --> AI_SVC["🧠 AI Orchestration"]
SEC --> RES_SVC["📄 Resume"]
SEC --> ROAD_SVC["🗺️ Roadmap"]
SEC --> DASH_SVC["📊 Dashboard"]
SEC --> PROF_SVC["👤 Profile"]
SEC --> RESULT_SVC["📈 Result"]
end
subgraph AI_TIER["🧠 AI TIER — Google Gemini"]
AI_SVC --> PROMPT["📝 Context-Aware\nPrompt Builder\n+ Company Context"]
PROMPT --> GEMINI["✨ Gemini 2.5 Flash\nAPI"]
GEMINI --> PARSE["✅ Response Validator\n+ JSON Parser"]
end
subgraph DATA["🗄️ DATA TIER"]
DB[("🐘 PostgreSQL\n10+ Tables")]
PDF["📑 Apache PDFBox\nPDF Parser"]
end
AUTH_UI --> GW
DASH_UI --> GW
INT_UI --> GW
RES_UI --> GW
ROAD_UI --> GW
HIST_UI --> GW
AUTH_SVC --> DB
INT_SVC --> DB
SESSION_SVC --> DB
Q_SVC --> DB
ANS_SVC --> DB
RES_SVC --> DB
RES_SVC --> PDF
RESULT_SVC --> DB
PROF_SVC --> DB
style CLIENT fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style API fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
style AI_TIER fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style DATA fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
Loading
🔄 Core Product Flow
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["🔐 Register\nLogin"] --> B["📊 Dashboard"]
B --> C["⚙️ Configure\nRole · Type\nDifficulty"]
C --> C2["🏢 Select\nCompany\n(FREE)"]
C2 --> D["🎙️ Live Interview\nAI Questions"]
D --> D2["🎤 Voice AI\nOR Text"]
D2 --> E["🧠 AI Evaluation\nScoring per Answer"]
E --> F["📈 Performance\nReport"]
F --> G["🗺️ Career\nRoadmap"]
G --> B
B --> H["📄 Resume\nATS Analysis"]
B --> I["💻 LeetCode\n500+ Problems"]
style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style B fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
style C fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
style C2 fill:#0f172a,stroke:#10b981,stroke-width:2px,color:#10b981
style D fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style D2 fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style E fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style F fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
style H fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
style I fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
Loading
📦 Component Architecture Map
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart TD
subgraph PAGES["📄 App Router Pages"]
LP["🏠 Landing"]
AUTH["🔐 Auth\nLogin · Register"]
DASH["📊 Dashboard"]
INT["🎙️ Interview Setup"]
LIVE["🎬 Live Session"]
RES["📈 Result"]
RESUME["📄 Resume"]
ROAD["🗺️ Roadmap"]
CODE["💻 Coding Arena"]
PROF["👤 Profile"]
SET["⚙️ Settings"]
HIST["📜 History"]
end
subgraph COMPONENTS["🧩 Feature Components"]
RS["RoleSelector\n30+ roles"]
ITS["InterviewTypeSelector\n6 types"]
DS["DifficultySelector\n3 tiers"]
CKS["CompanyKitSelector\n12 companies"]
VR["VoiceRecorder\nSpeech-to-Text"]
CS["CodeSandbox\n4 languages"]
SDC["SystemDesignCanvas\nArchitecture"]
end
subgraph STORES["🗃️ State Management"]
ZA["Zustand Auth Store\nJWT · User State"]
ZI["Zustand Interview Store\nSession state"]
end
INT --> RS & ITS & DS & CKS
LIVE --> VR & CS & SDC
CODE --> CS
AUTH --> ZA
INT --> ZI
style PAGES fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style COMPONENTS fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
style STORES fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading
🗄️ Database Entity-Relationship Diagram
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#00d2ff', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
erDiagram
USERS {
uuid id PK
string full_name
string email UK
string password_hash
string role
string target_role
boolean is_premium
}
INTERVIEWS {
long id PK
string title
string role
string difficulty
string company
datetime created_at
uuid user_id FK
}
INTERVIEW_SESSIONS {
long id PK
datetime started_at
datetime ended_at
string status
double score
uuid user_id FK
long interview_id FK
}
QUESTIONS {
long id PK
string question_text
string answer
string category
string difficulty
datetime created_at
long interview_id FK
}
ANSWERS {
long id PK
string answer_text
integer score
string evaluation
long session_id FK
long question_id FK
}
RESUMES {
long id PK
string file_name
string extracted_text
string analysis
integer ats_score
datetime created_at
uuid user_id FK
}
COMPANY_READINESS {
long id PK
string company
integer readiness_score
string missing_skills
string recommendation
datetime created_at
uuid user_id FK
}
INTERVIEW_RESULTS {
long id PK
double overall_score
string summary
long session_id FK
}
USERS ||--o{ INTERVIEWS : creates
USERS ||--o{ INTERVIEW_SESSIONS : participates
USERS ||--o{ RESUMES : uploads
USERS ||--o{ COMPANY_READINESS : evaluates
INTERVIEWS ||--o{ QUESTIONS : contains
INTERVIEWS ||--o{ INTERVIEW_SESSIONS : hosts
INTERVIEW_SESSIONS ||--o{ ANSWERS : records
INTERVIEW_SESSIONS ||--|| INTERVIEW_RESULTS : produces
QUESTIONS ||--o{ ANSWERS : answered_by
Loading
🧠 AI Pipeline Deep Dive
Question Generation Pipeline
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ff6b6b', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart TD
A["📥 Interview Config\nRole + Type + Difficulty + Company"] --> B["🔍 Interview Type\nResolver"]
B --> C{"🏢 Company\nProvided?"}
C -->|"Yes"| D["📝 Inject Company Context\nHiring bar · Culture · Loop style"]
C -->|"No"| E["📝 General Prompt\nRole-aware questions"]
D --> F["🧠 Gemini 2.5 Flash\nJSON Generation"]
E --> F
F --> G["🧹 Response Cleaner\nStrip markdown · Trim"]
G --> H{"✅ Valid\nJSON?"}
H -->|"Yes"| I["📦 Deserialize\nQuestion Array"]
H -->|"No"| J["🔴 RuntimeException\nInvalid response"]
I --> K["💾 Persist to DB\nQuestionRepository.saveAll"]
K --> L["📤 Return to Client\nTyped Question List"]
style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style F fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style D fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style L fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading
Answer Evaluation Pipeline
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#64ffda', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["💬 User Answer\nText or Voice"] --> B["📝 Build Eval Prompt\nQuestion + Answer + Role Context"]
B --> C["🧠 Gemini 2.5\nMulti-Dimensional Scoring"]
C --> D["📊 Parse Score\n0-10 Scale"]
D --> E["📋 Extract Breakdown\nStrengths · Weaknesses · Suggestions"]
E --> F["💾 Persist\nAnswer + Evaluation"]
F --> G["📤 Real-time\nFeedback to UI"]
style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style C fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading
Resume Analysis Pipeline
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#7b2ff7', 'lineColor': '#00d2ff', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["📄 PDF Upload\nMultipart Form"] --> B["📑 PDFBox\nText Extraction"]
B --> C["🧠 Gemini AI\nATS Analysis Prompt"]
C --> D["📊 ATS Score\n0-100"]
D --> E["🔍 Skill Gap\nDetection"]
E --> F["📝 Improvement\nRecommendations"]
F --> G["💾 Persist\nResume + Analysis"]
style A fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style C fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style G fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
Loading
LeetCode Code Execution Pipeline
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#ffd93d', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
A["✍️ User Writes Code\nJS · Python · Java · C++"] --> B["▶️ Run Code\nClient-side Execution"]
B --> C["📤 Capture Output\nconsole.log / print"]
C --> D{"🔍 Compare Output\nvs Expected"}
D -->|"Match"| E["✅ ACCEPTED\nauto-mark solved"]
D -->|"Mismatch"| F["❌ WRONG ANSWER\nshow diff"]
E --> G["🧠 AI Code Audit\nTime · Space Complexity"]
style A fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style B fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style E fill:#0f172a,stroke:#64ffda,stroke-width:2px,color:#64ffda
style F fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
style G fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
Loading 🔍 Full Request Lifecycle — Sequence Diagram (click to expand)
%%{init: {'theme': 'dark', 'themeVariables': { 'actorBkg': '#0f172a', 'actorBorder': '#00d2ff', 'actorTextColor': '#e2e8f0', 'signalColor': '#7b2ff7', 'signalTextColor': '#e2e8f0', 'noteBkgColor': '#1e293b', 'noteTextColor': '#e2e8f0', 'noteBorderColor': '#00d2ff', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
sequenceDiagram
participant C as 👤 Candidate
participant F as ⚡ Next.js Frontend
participant A as 🛡️ Spring Boot API
participant S as 🔒 Security Layer
participant P as 📝 Prompt Builder
participant G as ✨ Gemini AI
participant V as ✅ JSON Validator
participant D as 🗄️ PostgreSQL
C->>F: Submit credentials
F->>A: POST /api/v1/auth/login
A->>D: Lookup user by email
D-->>A: User record
A->>A: BCrypt password verification ✅
A->>S: Generate signed JWT 🔑
S-->>A: Token
A-->>F: { token, user }
F->>F: Store in Zustand + redirect
Note over C,D: ── Company-Targeted Interview Flow (FREE) ──
C->>F: Select Google + Configure interview
F->>A: POST /api/v1/interviews (JWT + company=Google)
A->>S: Validate JWT
A->>D: Create interview (with company field)
A-->>F: { interviewId }
F->>A: POST /api/v1/sessions/start
A->>D: Create session
A-->>F: { sessionId }
F->>A: GET /api/v1/sessions/{id}/questions
A->>P: Build role-aware prompt + company context
P->>G: Generate company-tailored questions (JSON)
G-->>V: Raw AI response
V->>V: Parse + validate structure
V->>D: Persist questions
D-->>A: Confirmed
A-->>F: Question[] (typed response)
C->>F: Submit answer (text or voice transcript)
F->>A: POST /api/v1/answers/submit
A->>P: Build evaluation prompt
P->>G: Evaluate answer (multi-dimensional)
G-->>V: Scoring response
V->>D: Persist evaluation
A-->>F: { score, strengths, weaknesses, suggestions }
Loading
🔄 CI/CD Pipeline
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#64ffda', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
subgraph TRIGGER["⚡ Trigger"]
A["📤 Push to main\nor PR opened"]
end
subgraph FRONTEND_CI["🖥️ Frontend CI"]
B["📥 Checkout"] --> C["📦 Node.js 20\nnpm ci"]
C --> D["🔨 npm run build"]
end
subgraph BACKEND_CI["⚙️ Backend CI"]
E["📥 Checkout"] --> F["☕ JDK 23\nTemurin"]
F --> G["🔨 mvn package\n-DskipTests"]
end
A --> B
A --> E
D --> H["✅ Frontend\nPassed"]
G --> I["✅ Backend\nPassed"]
style TRIGGER fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style FRONTEND_CI fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style BACKEND_CI fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
git clone https://github.com/Jawahar08/interviewforge-ai.git
cd interviewforge-ai
# Set environment variablesexport DB_URL=jdbc:postgresql://localhost:5432/interviewforge
export DB_USERNAME=postgres
export DB_PASSWORD=your_password
export JWT_SECRET=your_secure_jwt_secret_at_least_32_chars
export GEMINI_API_KEY=your_gemini_api_key # or "mock-dev-key" for local dev
2️⃣ Start Backend
cd backend
mvn clean compile
mvn spring-boot:run
# 🟢 API → http://localhost:8080# 📄 Swagger → http://localhost:8080/swagger-ui/index.html
3️⃣ Start Frontend
cd frontend
npm install
npm run dev
# 🟢 App → http://localhost:3000
💡 Local Dev Tip: Set GEMINI_API_KEY=mock-dev-key to run the full platform locally without a real Gemini API key. The backend will serve realistic mock responses for all AI features.
🌐 Deployment
Free Deployment Architecture
%%{init: {'theme': 'dark', 'themeVariables': { 'primaryColor': '#1e293b', 'primaryTextColor': '#e2e8f0', 'primaryBorderColor': '#10b981', 'lineColor': '#7b2ff7', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
flowchart LR
subgraph FRONTEND["🖥️ Vercel (Free)"]
V["Next.js 16\nAuto-deployed"]
end
subgraph BACKEND["⚙️ Render (Free)"]
R["Spring Boot\nDocker Container"]
end
subgraph DATABASE["🗄️ Neon (Free)"]
N["PostgreSQL\n0.5GB Storage"]
end
subgraph AI["🧠 Google AI"]
G["Gemini 2.5 Flash\nFree Tier API"]
end
V -->|"REST API"| R
R -->|"JDBC"| N
R -->|"HTTP"| G
style FRONTEND fill:#0f172a,stroke:#00d2ff,stroke-width:2px,color:#00d2ff
style BACKEND fill:#0f172a,stroke:#7b2ff7,stroke-width:2px,color:#7b2ff7
style DATABASE fill:#0f172a,stroke:#ffd93d,stroke-width:2px,color:#ffd93d
style AI fill:#0f172a,stroke:#ff6b6b,stroke-width:2px,color:#ff6b6b
Loading
Service
Provider
Free Tier
Config File
🖥️ Frontend
Vercel
Unlimited
frontend/vercel.json
⚙️ Backend
Render
750h/month
render.yaml
🗄️ Database
Neon
0.5GB
—
🧠 AI
Google AI
Free tier
.env
🗺️ Development Roadmap
%%{init: {'theme': 'dark', 'themeVariables': { 'cScale0': '#00d2ff', 'cScale1': '#7b2ff7', 'cScale2': '#64ffda', 'cScale3': '#ff6b6b', 'cScale4': '#ffd93d', 'cScale5': '#00d2ff', 'cScale6': '#7b2ff7', 'cScale7': '#ff6b6b', 'cScale8': '#64ffda', 'cScale9': '#10b981', 'cScaleLabel0': '#0a0a1a', 'cScaleLabel1': '#0a0a1a', 'cScaleLabel2': '#0a0a1a', 'cScaleLabel3': '#0a0a1a', 'cScaleLabel4': '#0a0a1a', 'cScaleLabel5': '#0a0a1a', 'cScaleLabel6': '#0a0a1a', 'cScaleLabel7': '#0a0a1a', 'cScaleLabel8': '#0a0a1a', 'cScaleLabel9': '#0a0a1a', 'fontFamily': 'JetBrains Mono, monospace'}}}%%
timeline
title InterviewForge AI — Development Timeline
section Phase 1 ✅
Platform Foundation : Repository + monorepo setup
: Next.js 16 frontend scaffolding
: Spring Boot backend scaffolding
: PostgreSQL integration
: CI/CD pipelines
section Phase 2 ✅
Authentication : User registration + validation
: Login with BCrypt + JWT
: Spring Security integration
: Protected routing + Zustand
section Phase 3 ✅
Interview Engine : Multi-domain role selector (30+ roles)
: 6 interview types + 3 difficulty tiers
: Session lifecycle management
: Live interview workspace
section Phase 4 ✅
AI Runtime : Gemini 2.5 Flash integration
: Context-aware prompt engineering
: Structured JSON output parsing
: Retry logic + error resilience
section Phase 5 ✅
Evaluation : Multi-dimensional answer scoring
: Session score aggregation
: Performance reports
: Interview history tracking
section Phase 6 ✅
Career Intelligence : Resume PDF upload + ATS scoring
: AI career roadmap generation
: Interactive weekly task checklist
: Dashboard analytics
section Phase 7 ✅
Company Prep : 12 company options (FAANG+)
: Company-aware AI prompt injection
: All companies FREE for everyone
section Phase 8 ✅
Voice AI + Coding Arena : Voice AI mock with Web Speech API
: Filler word detection + WPM gauge
: Voice confidence score (0-100%)
: 500+ LeetCode problems (18 categories)
: Code sandbox (JS, Python, Java, C++)
: Test case verification + auto-solved marking
: System Design Canvas + AI review
section Phase 9 ✅
100% Free Launch : All features unlocked for everyone
: No premium tiers or paywalls
: Free cloud deployment (Vercel + Render + Neon)
: Kaggle MCQ question bank import
section Phase 10 🔵
Scale + Community : Redis caching layer
: Rate limiting
: Community contributions
: Mobile-responsive optimization
: Additional language support