Skip to content

anish00700/InterviewFlow-AI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

19 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

InterViewFlow AI

An Adaptive, Composable AI Interview Engine

Simulating real technical and behavioral interviews with hiring-grade evaluation reports

Live Demo Node.js React MongoDB License

๐ŸŒ Live Application


๐Ÿ“‹ Table of Contents


๐ŸŽฏ Overview

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

Key Philosophy

  • 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

โœจ Features

๐ŸŽ“ Adaptive Interview System

  • 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

๐Ÿ“Š Comprehensive Evaluation

  • 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

๐Ÿ” Authentication & Security

  • 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

๐Ÿ“ง Email Services

  • OTP Verification: Email verification during registration
  • Password Reset: Secure password reset emails
  • Email Updates: OTP verification for email changes

๐Ÿ“„ Report Generation

  • 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

๐ŸŽจ Modern UI/UX

  • 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

๐Ÿ›  Tech Stack

Backend

  • 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

Frontend

  • 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

AI & LLM

  • Primary: GitHub Models API (Azure AI Inference)
  • Model: OpenAI GPT-4o (via GitHub Models)
  • Fallback: Automatic model fallback for reliability

๐Ÿ— Architecture

Interview Pipeline

Role โ†’ Context โ†’ Question Generation โ†’ Memory โ†’ Evaluation โ†’ Analytics โ†’ Adaptation โ†’ Final Report

Core Components

  1. Interview State (Central Brain): Maintains cognitive state, performance trends, and mastery maps
  2. Question Generation Block: Generates adaptive questions based on performance
  3. Evaluation Block: Multi-dimensional answer analysis
  4. Memory Service: Stores conversation history and patterns
  5. Analytics Block: Computes performance metrics
  6. Adaptation Block: Decides next strategy based on performance
  7. Coaching Block: Generates personalized improvement plans
  8. 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.


๐Ÿ“ฆ Prerequisites

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)

๐Ÿš€ Installation

1. Clone the Repository

git clone <repository-url>
cd InterVirewFlow

2. Install Backend Dependencies

cd interviewflow-backend
npm install

3. Install Frontend Dependencies

cd ../interviewflow-frontend
npm install

โš™๏ธ Configuration

Backend Configuration

  1. Create .env file in interviewflow-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/callback

Frontend Configuration

The frontend automatically connects to http://localhost:5001 for API calls. No additional configuration needed.

Setup Instructions

  1. MongoDB Atlas:

    • Create a free cluster at MongoDB Atlas
    • Get your connection string and add it to .env
  2. GitHub Models API:

  3. 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
  4. Google OAuth (optional):


๐ŸŽฎ Usage

Development Mode

  1. Start Backend Server:
cd interviewflow-backend
npm run dev

The server will start on http://localhost:5001

  1. Start Frontend Development Server:
cd interviewflow-frontend
npm run dev

The frontend will start on http://localhost:5173

  1. Open in Browser:

Navigate to http://localhost:5173

Production Build

  1. Build Frontend:
cd interviewflow-frontend
npm run build
  1. Start Backend:
cd interviewflow-backend
npm start

๐Ÿ“ Project Structure

InterVirewFlow/
โ”œโ”€โ”€ 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

๐Ÿ”Œ API Endpoints

Authentication

  • POST /api/auth/send-otp - Send OTP for email verification
  • POST /api/auth/verify-otp - Verify OTP and register
  • POST /api/auth/login - User login
  • POST /api/auth/forgot-password - Request password reset
  • POST /api/auth/reset-password - Reset password with token
  • POST /api/auth/send-email-update-otp - Send OTP for email update
  • PUT /api/auth/update-email - Update email (requires OTP)
  • PUT /api/auth/update-password - Update password
  • GET /api/auth/me - Get current user (protected)
  • GET /api/auth/google - Google OAuth login
  • GET /api/auth/google/callback - Google OAuth callback

Interview

  • POST /api/interview/start - Start new interview session
  • POST /api/interview/answer - Submit answer and get next question
  • GET /api/interview/:id - Get interview details
  • GET /api/interview/:id/report - Get interview report

Health & Diagnostics

  • GET /health - Health check
  • GET /api/diagnostics - API configuration diagnostics

๐ŸŽฏ Key Features Explained

Adaptive Question Generation

Questions are generated based on:

  • Current difficulty level
  • Candidate's performance history
  • Detected weak areas
  • Experience level (Junior/Mid-Level/Senior)
  • Previous questions asked

Multi-Dimensional Evaluation

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

Real-Time Adaptation

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

๐Ÿค Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

๐Ÿ“ License

This project is licensed under the ISC License.


๐Ÿ™ Acknowledgments


๐Ÿš€ Deployment

๐ŸŒ Live Application: https://interview-flow-ai-oewj.vercel.app/

For detailed deployment instructions, see DEPLOYMENT.md.

Quick Deploy

  1. Backend: Deploy to Railway
  2. Frontend: Deploy to Vercel
  3. Set environment variables as documented
  4. Update OAuth callback URLs

๐Ÿ“ž Support

For issues, questions, or contributions, please open an issue on the repository.


Made with โค๏ธ for better interview experiences

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published