An Adaptive, Composable AI Interview Engine
Simulating real technical and behavioral interviews with hiring-grade evaluation reports
๐ Live Application
- Overview
- Features
- Tech Stack
- Architecture
- Prerequisites
- Installation
- Configuration
- Usage
- Project Structure
- API Endpoints
- Contributing
- License
InterViewFlow AI is not just a chatbotโit's an AI Evaluation Engine that simulates real technical and behavioral interviews. The system treats an interview as a closed-loop reasoning pipeline, dynamically adapting questions based on candidate performance and producing comprehensive, hiring-grade evaluation reports.
๐ Try it live
- Questions are probes: Designed to test specific concepts
- Answers are signals: Multi-dimensional analysis reveals truth
- Memory is intelligence: Patterns emerge from structured history
- Scores are diagnostics: Meaningful metrics, not arbitrary numbers
- Adaptation is control: Real-time strategy adjustment
- Reports are decisions: Hiring-grade evaluation documents
- Dynamic Question Generation: Questions adapt based on candidate performance
- Difficulty Scaling: Automatically adjusts difficulty (Junior โ Mid-Level โ Senior)
- Skill-Based Probing: Focuses on weak areas while reinforcing strengths
- Context-Aware: Maintains conversation context throughout the interview
- Multi-Dimensional Scoring: Evaluates clarity, coherence, depth, communication, and overall performance
- Real-Time Feedback: Instant feedback after each answer
- Performance Analytics: Tracks trends, consistency, and improvement over time
- Concept Mastery Mapping: Identifies strong and weak areas per concept
- Email/Password Authentication: Secure local authentication with JWT
- Google OAuth: One-click sign-in with Google
- Email Verification: OTP-based email verification during registration
- Password Reset: Secure password reset via email
- Account Management: Update email and password in settings
- OTP Verification: Email verification during registration
- Password Reset: Secure password reset emails
- Email Updates: OTP verification for email changes
- Comprehensive Reports: Detailed evaluation reports with scores and feedback
- PDF Export: Export reports as PDF documents
- Share Functionality: Share reports via Web Share API or clipboard
- Performance Breakdown: Skill-wise performance analysis
- Coaching Recommendations: Personalized improvement suggestions
- Responsive Design: Works seamlessly on desktop and mobile
- Glass Morphism: Beautiful glass-card design system
- Smooth Animations: Framer Motion animations throughout
- Real-Time Updates: Live score updates during interviews
- Progress Tracking: Visual pipeline showing interview stages
- Runtime: Node.js
- Framework: Express.js 5.x
- Database: MongoDB (Mongoose)
- Authentication: JWT, Passport.js (Google OAuth)
- AI Integration: GitHub Models API (Azure AI Inference)
- Email: Nodemailer
- Security: bcryptjs for password hashing
- Framework: React 18
- Build Tool: Vite
- Routing: React Router DOM
- Styling: Tailwind CSS
- Animations: Framer Motion
- UI Components: Custom components with Radix UI primitives
- PDF Generation: jsPDF, html2canvas
- Primary: GitHub Models API (Azure AI Inference)
- Model: OpenAI GPT-4o (via GitHub Models)
- Fallback: Automatic model fallback for reliability
Role โ Context โ Question Generation โ Memory โ Evaluation โ Analytics โ Adaptation โ Final Report
- Interview State (Central Brain): Maintains cognitive state, performance trends, and mastery maps
- Question Generation Block: Generates adaptive questions based on performance
- Evaluation Block: Multi-dimensional answer analysis
- Memory Service: Stores conversation history and patterns
- Analytics Block: Computes performance metrics
- Adaptation Block: Decides next strategy based on performance
- Coaching Block: Generates personalized improvement plans
- Report Block: Creates comprehensive evaluation reports
Each block operates independently but shares state through the central Interview State object.
For detailed architecture documentation, see ARCHITECTURE.md.
Before you begin, ensure you have the following installed:
- Node.js (v18 or higher)
- npm or yarn
- MongoDB (MongoDB Atlas account recommended)
- GitHub Account (for GitHub Models API token)
- Google Account (for OAuth setup, optional)
- Email Account (Gmail recommended for SMTP)
git clone <repository-url>
cd InterVirewFlowcd interviewflow-backend
npm installcd ../interviewflow-frontend
npm install- Create
.envfile ininterviewflow-backend/:
# Server
PORT=5001
FRONTEND_URL=http://localhost:5173
# Database
MONGO_URI=your-mongodb-connection-string
# JWT
JWT_SECRET=your-super-secret-jwt-key
# GitHub Models API (Azure AI Inference)
GITHUB_TOKEN=your-github-token-with-models-read-permission
GITHUB_MODEL=openai/gpt-4o
# Email Configuration (Gmail)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-gmail-app-password
# Google OAuth (Optional)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
GOOGLE_CALLBACK_URL=http://localhost:5001/api/auth/google/callbackThe frontend automatically connects to http://localhost:5001 for API calls. No additional configuration needed.
-
MongoDB Atlas:
- Create a free cluster at MongoDB Atlas
- Get your connection string and add it to
.env
-
GitHub Models API:
- Create a GitHub Personal Access Token with
models:readpermission - See GitHub Models Documentation
- Add token to
.envasGITHUB_TOKEN
- Create a GitHub Personal Access Token with
-
Gmail SMTP (for email services):
- Enable 2-Step Verification on your Google account
- Generate an App Password at Google App Passwords
- Use the App Password (not your regular password) in
.env
-
Google OAuth (optional):
- Follow instructions in OAUTH_SETUP.md
- Add credentials to
.env
- Start Backend Server:
cd interviewflow-backend
npm run devThe server will start on http://localhost:5001
- Start Frontend Development Server:
cd interviewflow-frontend
npm run devThe frontend will start on http://localhost:5173
- Open in Browser:
Navigate to http://localhost:5173
- Build Frontend:
cd interviewflow-frontend
npm run build- Start Backend:
cd interviewflow-backend
npm startInterVirewFlow/
โโโ interviewflow-backend/ # Backend API
โ โโโ src/
โ โ โโโ config/ # Configuration files
โ โ โ โโโ db.js # MongoDB connection
โ โ โ โโโ github-models.js # GitHub Models API config
โ โ โ โโโ passport.js # OAuth strategies
โ โ โโโ controllers/ # Route controllers
โ โ โ โโโ auth.controller.js
โ โ โ โโโ interview.controller.js
โ โ โโโ models/ # Mongoose models
โ โ โ โโโ User.js
โ โ โ โโโ Interview.js
โ โ โ โโโ Memory.js
โ โ โ โโโ OTP.js
โ โ โ โโโ PasswordReset.js
โ โ โโโ routes/ # Express routes
โ โ โ โโโ auth.routes.js
โ โ โ โโโ interview.routes.js
โ โ โโโ services/ # Business logic
โ โ โ โโโ blocks/ # AI intelligence blocks
โ โ โ โ โโโ question.block.js
โ โ โ โ โโโ evaluation.block.js
โ โ โ โ โโโ adaptation.block.js
โ โ โ โ โโโ analytics.block.js
โ โ โ โ โโโ coaching.block.js
โ โ โ โ โโโ report.block.js
โ โ โ โโโ interview.js # Interview orchestration
โ โ โ โโโ memory.js # Memory service
โ โ โ โโโ report.js # Report generation
โ โ โ โโโ email.service.js # Email service
โ โ โโโ middleware/ # Express middleware
โ โ โ โโโ auth.middleware.js
โ โ โโโ app.js # Express app setup
โ โ โโโ server.js # Server entry point
โ โโโ .env # Environment variables
โ โโโ package.json
โ โโโ ARCHITECTURE.md # Architecture documentation
โ
โโโ interviewflow-frontend/ # Frontend React app
โโโ src/
โ โโโ components/ # React components
โ โ โโโ flow/ # Interview flow components
โ โ โโโ shared/ # Shared components
โ โ โโโ ui/ # UI primitives
โ โโโ pages/ # Page components
โ โ โโโ Home.jsx
โ โ โโโ Login.jsx
โ โ โโโ Register.jsx
โ โ โโโ Setup.jsx
โ โ โโโ Interview.jsx
โ โ โโโ Report.jsx
โ โ โโโ Settings.jsx
โ โ โโโ ForgotPassword.jsx
โ โ โโโ ResetPassword.jsx
โ โโโ hooks/ # Custom React hooks
โ โ โโโ useInterviewSession.js
โ โโโ layout/ # Layout components
โ โ โโโ AppShell.jsx
โ โ โโโ Header.jsx
โ โโโ lib/ # Utilities and contexts
โ โ โโโ AuthContext.jsx
โ โ โโโ api.js
โ โ โโโ constants.js
โ โ โโโ utils.js
โ โโโ styles/ # Global styles
โ โ โโโ globals.css
โ โโโ App.jsx # Main app component
โโโ package.json
โโโ vite.config.js
POST /api/auth/send-otp- Send OTP for email verificationPOST /api/auth/verify-otp- Verify OTP and registerPOST /api/auth/login- User loginPOST /api/auth/forgot-password- Request password resetPOST /api/auth/reset-password- Reset password with tokenPOST /api/auth/send-email-update-otp- Send OTP for email updatePUT /api/auth/update-email- Update email (requires OTP)PUT /api/auth/update-password- Update passwordGET /api/auth/me- Get current user (protected)GET /api/auth/google- Google OAuth loginGET /api/auth/google/callback- Google OAuth callback
POST /api/interview/start- Start new interview sessionPOST /api/interview/answer- Submit answer and get next questionGET /api/interview/:id- Get interview detailsGET /api/interview/:id/report- Get interview report
GET /health- Health checkGET /api/diagnostics- API configuration diagnostics
Questions are generated based on:
- Current difficulty level
- Candidate's performance history
- Detected weak areas
- Experience level (Junior/Mid-Level/Senior)
- Previous questions asked
Each answer is evaluated across:
- Relevance: Does it address the question?
- Correctness: Are technical statements accurate?
- Depth: Understanding of internals vs surface knowledge
- Clarity: Coherent and well-structured explanation
- Confidence: Decisive vs vague responses
The system adapts in real-time:
- If struggling: Reduces difficulty, asks foundational questions
- If excelling: Increases difficulty, asks deeper questions
- If inconsistent: Focuses on weak areas
- If improving: Gradually increases challenge
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the ISC License.
- Built with React and Express.js
- AI powered by GitHub Models API
- UI components inspired by modern design systems
- Icons by Lucide
๐ Live Application: https://interview-flow-ai-oewj.vercel.app/
For detailed deployment instructions, see DEPLOYMENT.md.
- Backend: Deploy to Railway
- Frontend: Deploy to Vercel
- Set environment variables as documented
- Update OAuth callback URLs
For issues, questions, or contributions, please open an issue on the repository.
Made with โค๏ธ for better interview experiences