AI-Powered Technical Interview Simulator & Skill Gap Analyzer
โจ Features ยท ๐ Project Structure ยท ๐ Tech Stack ยท ๐ Getting Started ยท ๐ Architecture ยท ๐ค Contributing
SkillGap AI is a full-stack monorepo application that simulates real technical interviews using AI and identifies skill gaps. It generates adaptive, role-specific questions across DSA, System Design, and HR/Behavioral domains โ adjusting difficulty in real-time based on your responses. Get detailed AI-powered feedback, per-question scoring, and track your progress over time.
๐ข Run it locally by following the Getting Started guide below.
๐ก Whether you're a beginner preparing for your first SDE interview or a senior engineer brushing up on system design โ this app adapts to your level and helps you identify and close skill gaps.
skillgap-ai/
โ
โโโ frontend/ # Next.js 16 (App Router)
โ โโโ src/
โ โ โโโ app/ # Pages & API routes
โ โ โโโ components/ # UI components (shadcn/ui)
โ โ โโโ hooks/ # Custom React hooks
โ โ โโโ lib/ # Utilities & Zustand store
โ โโโ public/ # Static assets
โ โโโ prisma/ # Database schema
โ โโโ package.json
โ
โโโ backend/ # FastAPI (Python)
โ โโโ app/
โ โ โโโ main.py # FastAPI app entry point
โ โ โโโ config.py # Pydantic settings
โ โ โโโ api/ # API route handlers
โ โ โโโ services/ # Business logic & LLM service
โ โ โโโ models/ # Pydantic request/response models
โ โ โโโ db/ # SQLAlchemy database setup
โ โโโ requirements.txt
โ
โโโ ai-engine/ # LLM + prompts (standalone module)
โ โโโ prompts/
โ โ โโโ evaluation.txt # Answer evaluation prompt
โ โ โโโ question.txt # Question generation prompt
โ โ โโโ feedback.txt # Overall feedback prompt
โ โ โโโ hint.txt # Hint generation prompt
โ โโโ llm_service.py # Python LLM service
โ โโโ README.md
โ
โโโ database/
โ โโโ schema.sql # PostgreSQL schema (Supabase-ready)
โ โโโ supabase.md # Supabase setup guide
โ
โโโ docs/
โ โโโ architecture.md # System architecture with diagrams
โ โโโ flow.md # Interview flow documentation
โ
โโโ scripts/
โ โโโ seed_data.py # Database seeding script
โ
โโโ .env.example # Environment variable template
โโโ docker-compose.yml # Docker orchestration
โโโ README.md
- Adaptive Difficulty โ Questions get harder or easier based on your answer quality
- Multiple Question Types โ DSA, System Design, and HR/Behavioral
- 7 Tech Roles โ SDE, Frontend, Backend, Full Stack, DevOps, Data Analyst, ML Engineer
- 3 Experience Levels โ Beginner, Intermediate, Senior
- Question Type Filter โ Focus on specific categories you want to practice
- Real-time Chat Interface โ Smooth, animated message flow with staggered entrance
- Per-Question Timer Ring โ SVG circular progress showing time per question
- Typing Indicator โ Animated "Analyzing your response..." with brain avatar
- Code Block Formatting โ Syntax-highlighted code blocks with one-click copy
- Skip Question โ Skip difficult questions; AI generates an easier one next
- Pause/Resume โ Pause the interview anytime with Ctrl+P
- AI Hints โ Stuck on a question? Get a hint without revealing the answer
- No-Pressure Learning โ Practice at your own pace with guided assistance
- AI Performance Review โ Overall score (1-10) with strengths & improvements
- Per-Question AI Scoring โ Star ratings (1-5) with brief feedback after each answer
- Performance Radar Chart โ Pentagon radar showing DSA, System Design, HR, Communication, Problem Solving
- Difficulty Curve Visualization โ SVG chart tracking question difficulty progression
- Session Comparison โ Compare current score vs. your historical average
- Bookmark Questions โ Save questions for later review
- Interview History โ Tracks last 50 sessions with scores, duration, and transcripts
- Transcript Viewer โ Expand any past session to see the full Q&A transcript
- Voice Input โ Speak your answers using Web Speech API (Chrome/Edge)
- Text-to-Speech โ Listen to questions read aloud with one click
- Keyboard Shortcuts โ Ctrl+Enter (send), Ctrl+K (skip), Ctrl+P (pause), ? (help)
- PDF Export โ Print-friendly format with clean A4 layout
- Copy Transcript โ Formatted text with header + Q&A pairs
- Export JSON โ Full structured data including stats and feedback
- Teal/Emerald Theme โ Vibrant, modern color palette with dark mode support
- Glassmorphism Effects โ Frosted glass panels with backdrop blur
- Floating Orb Animations โ Animated gradient orbs on setup & summary pages
- Phase Transitions โ Smooth slide animations between setup โ interview โ summary
- Micro-Interactions โ Hover scales, ripple effects, spring animations
- Social Proof Section โ Testimonials from engineers at top companies
- Mobile Responsive โ Full mobile support with bottom action bar
- Custom Scrollbars โ Styled scrollbars matching the theme
| Category | Frontend | Backend |
|---|---|---|
| Framework | Next.js 16 (App Router) | FastAPI |
| Language | TypeScript 5 | Python 3.11+ |
| Styling | Tailwind CSS 4 + shadcn/ui | โ |
| Animations | Framer Motion | โ |
| State | Zustand | โ |
| AI Engine | z-ai-web-dev-sdk | httpx (direct gateway calls) |
| Database | Prisma (SQLite) | SQLAlchemy |
| Icons | Lucide React | โ |
| Theming | next-themes | โ |
| Validation | Zod | Pydantic |
| Deployment | Docker / any Node host | Docker / any Python host |
- Node.js 18+ or Bun runtime
- Python 3.11+ (for backend)
- Docker (optional, for containerized setup)
# Clone the repository
git clone https://github.com/subrattandon/skillgap-ai.git
cd skillgap-ai
# Install dependencies
bun install
# Set up environment variables
cp .env.example frontend/.env
# Edit frontend/.env with your configuration
# Push database schema
bun run db:push
# Start development server
bun run devThe frontend will be running at http://localhost:3000
# Terminal 1: Start frontend
bun run dev:frontend
# Terminal 2: Start backend
cd backend
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload# Start all services
docker compose up -d
# Frontend: http://localhost:3000
# Backend: http://localhost:8000
# API Docs: http://localhost:8000/docsCopy .env.example and fill in your configuration:
# Database
DATABASE_URL=file:./db/custom.db
# Z-AI Gateway (for LLM calls)
ZAI_API_KEY=your-api-key-here
ZAI_GATEWAY_URL=http://localhost:3000
# Frontend
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Backend
BACKEND_URL=http://localhost:8000โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ โ โ โ โ โ
โ Frontend โโโโโโถโ Backend โโโโโโถโ AI Engine โ
โ (Next.js) โ โ (FastAPI) โ โ (z-ai SDK) โ
โ Port: 3000 โ โ Port: 8000 โ โ โ
โ โ โ โ โ โ
โโโโโโโโโโฌโโโโโโโโโ โโโโโโโโโโฌโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ โ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
โ โ โ โ
โ Prisma โ โ SQLAlchemy โ
โ (SQLite) โ โ (SQLite/PG) โ
โ โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ
| Action | Method | Endpoint | Description |
|---|---|---|---|
start |
POST | /api/interview |
Generate first question based on profile |
next |
POST | /api/interview |
Generate follow-up question based on answer |
skip |
POST | /api/interview |
Skip current question, get easier/different one |
hint |
POST | /api/interview |
Get AI hint for current question (practice mode) |
evaluate |
POST | /api/interview |
Score a specific answer (1-5 stars + feedback) |
feedback |
POST | /api/interview |
Generate comprehensive interview feedback |
| Health | GET | /api/health |
Backend health check |
User Input โ Frontend (React) โ API Route โ LLM Service โ z-ai Gateway โ AI Response
โ โ
โผ โผ
Prisma/SQLite JSON Response
๐ For detailed architecture diagrams, see docs/architecture.md ๐ For interview flow diagrams, see docs/flow.md
- Set up your profile โ Choose your role, experience level, and skills
- Customize your session โ Select question types, enable practice mode, or use quick-start presets
- Start the interview โ Answer questions as the AI adapts to your performance
- Use power features โ Bookmark questions, request hints, use voice input, or TTS
- Review your performance โ Get detailed AI feedback with scores, radar chart, and actionable improvements
- Track progress โ View interview history and compare sessions over time
| Shortcut | Action |
|---|---|
Ctrl + Enter |
Send answer |
Ctrl + K |
Skip question |
Ctrl + P |
Pause / Resume interview |
? |
Show keyboard shortcuts |
Escape |
Close dialogs |
| Decision | Rationale |
|---|---|
| Monorepo Structure | Single repo for frontend, backend, and AI engine โ easier coordination |
| FastAPI Backend | High-performance Python API with automatic OpenAPI docs |
| Separate AI Engine | Prompts isolated for easy A/B testing and iteration |
| Client-side Voice/TTS | Web Speech API for zero-cost, zero-latency voice features |
| localStorage for History | Simple persistence without backend auth requirement |
| Zustand over Context | Better performance, simpler API, no provider nesting |
| SVG Charts | Lightweight, responsive charts without heavy chart libraries |
| window.print() for PDF | Native browser PDF with @media print CSS โ no dependencies |
| Supabase-ready Schema | PostgreSQL schema with RLS policies for production deployment |
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- WebSocket for real-time question streaming
- Resume/Cover letter analysis feature
- Collaborative interview mode (multiple interviewers)
- More question sub-types (debugging, code review, estimation)
- Interview templates for specific companies
- Leaderboard and community features
- Mobile app with React Native
- Skill gap visualization dashboard
- Learning resource recommendations based on weak areas
- Multi-language support
This project is licensed under the MIT License โ see the LICENSE file for details.
Built with โค๏ธ by Subrat Tandon
โญ If this project helped you prepare for your interview, give it a star!