A comprehensive, AI-driven platform for conducting, analyzing, and evaluating technical interviews with real-time insights and data-driven hiring decisions.
- Overview
- Architecture
- Features
- Technology Stack
- Workflow
- Project Structure
- Installation
- Configuration
- Usage
- API Documentation
- Contributing
- License
The AI-Powered Interview Evaluation System revolutionizes the hiring process by leveraging cutting-edge AI technology to analyze interview recordings, extract insights, and provide objective, bias-free candidate evaluations. This full-stack application combines speech-to-text transcription, natural language processing, and machine learning to deliver comprehensive interview analytics.
- ๐ค AI-Driven Analysis: Powered by Groq's Llama 3.3 70B model for intelligent Q&A extraction and evaluation
- ๐๏ธ Audio Transcription: Automated speech-to-text using Whisper large-v3-turbo
- ๐ Real-Time Analytics: Live dashboard with interview statistics and performance metrics
- ๐ PDF Reports: Professional, downloadable evaluation reports
- ๐ Secure Authentication: JWT-based user authentication and authorization
- ๐ฑ Responsive Design: Modern, mobile-friendly UI built with React and Tailwind CSS
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ CLIENT LAYER โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ React UI โ โ TailwindCSS โ โ Vite Dev โ โ
โ โ (19.1.1) โ โ (3.4.0) โ โ (7.1.2) โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โ HTTP/REST API
โ (axios 1.11.0)
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ SERVER LAYER โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ Express.js โ โ CORS โ โ JWT Auth โ โ
โ โ (4.18.0) โ โ (2.8.5) โ โ (9.0.2) โ โ
โ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ API ROUTES & MIDDLEWARE โ โ
โ โ /auth /candidates /interviews /evaluation โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโดโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ DATABASE LAYER โ โ AI SERVICE LAYER โ
โ โโโโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโโโโ โ
โ โ MongoDB โ โ โ โ Groq Cloud โ โ
โ โ (Mongoose โ โ โ โ Llama 3.3 70B โ โ
โ โ 8.18.0) โ โ โ โ Whisper v3 โ โ
โ โโโโโโโโโโโโโโโโโโโ โ โ โโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ Collections: โ โ Services: โ
โ โข Users โ โ โข Transcription โ
โ โข Candidates โ โ โข Q&A Extraction โ
โ โข Interviews โ โ โข AI Evaluation โ
โ โข InterviewGroups โ โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ
Frontend (React)
src/
โโโ components/ # Reusable UI components
โ โโโ AIEvaluationSection
โ โโโ InterviewsTable
โ โโโ CreateInterviewModal
โ โโโ InterviewDetails
โโโ pages/ # Route-based pages
โ โโโ Dashboard
โ โโโ Login
โ โโโ Interviews
โ โโโ InterviewGroups
โ โโโ EvaluateQA
โโโ context/ # React Context API
โ โโโ AuthContext
โโโ hooks/ # Custom React hooks
โ โโโ useInterviewData
โโโ services/ # API service layer
โ โโโ authService
โโโ utils/ # Utility functions
โโโ aiEvaluation
Backend (Node.js/Express)
src/
โโโ models/ # MongoDB schemas
โ โโโ User
โ โโโ Candidate
โ โโโ Interview
โ โโโ InterviewGroup
โโโ routes/ # API endpoints
โ โโโ auth
โ โโโ candidates
โ โโโ interviews
โ โโโ evaluation
โ โโโ dashboard
โโโ middleware/ # Express middleware
โ โโโ auth
โโโ services/ # Business logic
โโโ transcriptionService
โโโ qaExtractor
โโโ groqEvaluationService
- โ Secure user registration and login
- โ JWT-based authentication
- โ Password encryption with bcrypt
- โ Protected routes and role-based access
- โ
Create and organize interview groups by:
- College/University
- Department
- Batch/Year
- Position/Role
- โ Group-based interview filtering
- โ Bulk interview management
- โ
Add candidates with comprehensive details:
- Personal information (name, email, phone)
- Academic background (college, CGPA, batch)
- Professional details (experience, skills)
- โ Search and filter candidates
- โ Candidate-interview association
- โ Upload audio/video interview files
- โ Supported formats: MP3, MP4, WAV, M4A, WEBM
- โ Automatic speech-to-text transcription (Groq Whisper)
- โ Real-time processing status updates
- โ Progress tracking with percentage completion
- โ Background processing with polling mechanism
- โ Automatic Q&A Extraction: AI identifies questions and answers from transcripts
- โ
Multi-Dimensional Scoring:
- Technical Depth (0-10): Evaluates technical knowledge and accuracy
- Communication Skills (0-10): Assesses grammar, clarity, and fluency
- Confidence Level (0-10): Measures response confidence and assertiveness
- Final Score: Weighted average (60% technical + 25% communication + 15% confidence)
- โ Intelligent Filtering: Automatically excludes introductory/administrative questions
- โ Detailed Feedback: AI-generated feedback for each answer
- โ Overall Performance Summary: Comprehensive evaluation with recommendations
- โ Total interview groups count
- โ Total interviews processed
- โ Completed interviews statistics
- โ Real-time data visualization
- โ Performance trends
- โ View all interviews in a group
- โ Search by candidate name, email, or interviewer
- โ Pagination support (5 interviews per page)
- โ Delete interviews
- โ View detailed interview information
- โ Access full transcripts
- โ View Q&A breakdown
- โ
Individual Evaluation Reports:
- Candidate information
- Overall score with visual indicators
- Detailed question-by-question analysis
- Score breakdowns with color coding
- Professional formatting
- โ
Top N Candidates Report:
- Filter by top performers
- Ranked list with scores
- Candidate contact information
- Exportable for hiring decisions
- โ Automatic status polling during processing
- โ Live progress indicators
- โ Background data refresh
- โ Toast notifications for status changes
- โ No page refresh required
- โ Dark mode theme with gradient effects
- โ Responsive design (mobile, tablet, desktop)
- โ Smooth animations and transitions
- โ Loading states and skeleton screens
- โ Error handling with user-friendly messages
- โ Accessible design patterns
| Technology | Version | Purpose |
|---|---|---|
| React | 19.1.1 | UI library for building component-based interfaces |
| Vite | 7.1.2 | Fast build tool and development server |
| React Router DOM | 7.8.2 | Client-side routing and navigation |
| Axios | 1.11.0 | HTTP client for API requests |
| Tailwind CSS | 3.4.0 | Utility-first CSS framework |
| Heroicons | 2.2.0 | Beautiful hand-crafted SVG icons |
| Framer Motion | 12.23.12 | Animation library for React |
| React Toastify | 11.0.5 | Toast notifications |
| Recharts | 3.1.2 | Charting library for data visualization |
| jsPDF | 3.0.2 | PDF generation in browser |
| html2canvas | 1.4.1 | Screenshot capability for PDF export |
| Lucide React | 0.548.0 | Additional icon library |
| Technology | Version | Purpose |
|---|---|---|
| Node.js | 18+ | JavaScript runtime environment |
| Express.js | 4.18.0 | Web application framework |
| MongoDB | 8.18.0 | NoSQL database |
| Mongoose | 8.18.0 | MongoDB object modeling |
| Groq SDK | 0.37.0 | AI model integration (Llama 3.3 70B) |
| JWT | 9.0.2 | JSON Web Token authentication |
| bcryptjs | 3.0.2 | Password hashing |
| Multer | 2.0.2 | File upload middleware |
| CORS | 2.8.5 | Cross-origin resource sharing |
| dotenv | 17.2.1 | Environment variable management |
| Nodemailer | 7.0.6 | Email sending capability |
| UUID | 9.0.1 | Unique identifier generation |
| Puppeteer | 24.18.0 | Headless browser automation |
| AWS SDK | 2.1692.0 | AWS service integration |
| Service | Model | Purpose |
|---|---|---|
| Groq Cloud | Llama 3.3 70B Versatile | Natural language understanding, Q&A extraction, evaluation |
| Groq Whisper | whisper-large-v3-turbo | Speech-to-text transcription |
| Tool | Version | Purpose |
|---|---|---|
| ESLint | 9.33.0 | Code linting and style enforcement |
| Nodemon | 3.1.10 | Auto-restart server on changes |
| Autoprefixer | 10.4.21 | CSS vendor prefixing |
| PostCSS | 8.5.6 | CSS transformation |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 1. USER AUTHENTICATION โ
โ User Login โ JWT Token Generation โ Token Storage โ Auth โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 2. INTERVIEW GROUP CREATION โ
โ Navigate to Groups โ Create New Group โ Define Criteria โ
โ (College, Department, Batch, Position) โ Save Group โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 3. CANDIDATE REGISTRATION โ
โ Add Candidate โ Enter Details (Name, Email, Phone, Skills, โ
โ College, CGPA) โ Save to Database โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 4. INTERVIEW CREATION & UPLOAD โ
โ Select Group โ Click "New Interview" โ Choose Candidate โ โ
โ Upload Audio/Video File โ Submit โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 5. AUDIO PROCESSING (BACKEND) โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Step 5.1: File Upload & Validation โ โ
โ โ - Receive audio file via Multer โ โ
โ โ - Validate file type (mp3, mp4, wav, m4a, webm) โ โ
โ โ - Store in /uploads directory โ โ
โ โ - Create Interview document with "Pending" status โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Step 5.2: Audio Transcription โ โ
โ โ - Update status to "Processing" (0% progress) โ โ
โ โ - Send audio to Groq Whisper large-v3-turbo โ โ
โ โ - Parameters: language="en", temperature=0.0 โ โ
โ โ - Receive full transcript text โ โ
โ โ - Store transcript in Interview.transcript field โ โ
โ โ - Update progress to 50% โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Step 5.3: Q&A Extraction (AI Processing) โ โ
โ โ - Send transcript to Groq Llama 3.3 70B โ โ
โ โ - AI identifies interviewer questions โ โ
โ โ - AI identifies candidate answers โ โ
โ โ - Extract structured Q&A pairs โ โ
โ โ - Store in Interview.qaPairs array โ โ
โ โ - Update progress to 75% โ โ
โ โ - Parameters: temperature=0.0, seed=12345 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Step 5.4: AI Evaluation โ โ
โ โ - Send Q&A pairs to Groq Llama 3.3 70B โ โ
โ โ - For each Q&A pair: โ โ
โ โ โข Identify if technical or administrative โ โ
โ โ โข Score technical_depth (0-10) โ โ
โ โ โข Score communication (0-10) โ โ
โ โ โข Score confidence (0-10) โ โ
โ โ โข Calculate final_score (weighted average) โ โ
โ โ โข Generate detailed feedback โ โ
โ โ โข Mark excluded if non-technical โ โ
โ โ - Calculate overall_score (average of technical only) โ โ
โ โ - Generate summary and recommendations โ โ
โ โ - Store in Interview.aiEvaluation โ โ
โ โ - Parameters: temperature=0.0, seed=12345 โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Step 5.5: Finalization โ โ
โ โ - Update status to "Analyzed" โ โ
โ โ - Set progress to 100% โ โ
โ โ - Save all data to MongoDB โ โ
โ โ - Return success response โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 6. REAL-TIME STATUS UPDATES โ
โ Client Polls Every 3 Seconds โ Check Processing Status โ โ
โ Update UI Progress Bar โ Continue Until "Analyzed" โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 7. VIEW EVALUATION RESULTS โ
โ Interview Appears in List โ Click "View Details" โ โ
โ Display Transcript, Q&A Breakdown, Scores, Feedback โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 8. GENERATE REPORTS โ
โ Option A: Individual PDF Report โ
โ - Click "Export PDF" on evaluation โ
โ - Generate professional PDF with scores โ
โ โ
โ Option B: Top N Candidates Report โ
โ - Click filter icon โ Enter N โ Generate PDF โ
โ - Shows top performers with contact info โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 9. DASHBOARD ANALYTICS โ
โ View Statistics โ Total Groups, Interviews, Completed โ โ
โ Track Performance Metrics โ Make Data-Driven Decisions โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
// Weighted Score Calculation
final_score = (technical_depth ร 0.60) +
(communication ร 0.25) +
(confidence ร 0.15)
// Overall Score Calculation
overall_score = average(all_technical_questions.final_score)
// Note: Excludes administrative/introductory questions
// Score Interpretation
9.0 - 10.0 โ Exceptional Candidate
8.0 - 8.9 โ Excellent Performer
7.0 - 7.9 โ Strong Performer
6.0 - 6.9 โ Good Performer
5.0 - 5.9 โ Average Performer
0.0 - 4.9 โ Needs DevelopmentINTERVIEW/
โ
โโโ client/ # Frontend React Application
โ โโโ public/ # Static assets
โ โโโ src/
โ โ โโโ api/
โ โ โ โโโ axios.js # Axios configuration
โ โ โโโ components/
โ โ โ โโโ AIEvaluationSection.jsx # Evaluation display
โ โ โ โโโ CircularProgress.jsx # Progress indicator
โ โ โ โโโ CreateInterviewModal.jsx # Interview creation
โ โ โ โโโ InterviewDetails.jsx # Interview modal
โ โ โ โโโ InterviewsTable.jsx # Interview list
โ โ โ โโโ Layout.jsx # App layout
โ โ โ โโโ ProtectedRoute.jsx # Auth guard
โ โ โโโ context/
โ โ โ โโโ AuthContext.jsx # Authentication context
โ โ โโโ hooks/
โ โ โ โโโ useInterviewData.js # Interview data hook
โ โ โโโ pages/
โ โ โ โโโ Dashboard.jsx # Landing page
โ โ โ โโโ EvaluateQA.jsx # Evaluation page
โ โ โ โโโ InterviewGroups.jsx # Group management
โ โ โ โโโ Interviews.jsx # Interview list page
โ โ โ โโโ Login.jsx # Authentication
โ โ โ โโโ ProcessingPage.jsx # Processing status
โ โ โโโ services/
โ โ โ โโโ authService.js # Auth API calls
โ โ โโโ utils/
โ โ โ โโโ aiEvaluation.js # PDF generation
โ โ โโโ App.jsx # Root component
โ โ โโโ main.jsx # Entry point
โ โ โโโ index.css # Global styles
โ โโโ eslint.config.js # ESLint configuration
โ โโโ postcss.config.js # PostCSS configuration
โ โโโ tailwind.config.js # Tailwind CSS config
โ โโโ vite.config.js # Vite configuration
โ โโโ package.json # Frontend dependencies
โ
โโโ server/ # Backend Node.js Application
โ โโโ src/
โ โ โโโ middleware/
โ โ โ โโโ auth.js # JWT authentication
โ โ โโโ models/
โ โ โ โโโ Candidate.js # Candidate schema
โ โ โ โโโ Interview.js # Interview schema
โ โ โ โโโ InterviewGroup.js # Group schema
โ โ โ โโโ User.js # User schema
โ โ โโโ routes/
โ โ โ โโโ auth.js # Auth endpoints
โ โ โ โโโ candidates.js # Candidate CRUD
โ โ โ โโโ dashboard.js # Analytics APIs
โ โ โ โโโ evaluation.js # Evaluation APIs
โ โ โ โโโ interviewGroups.js # Group CRUD
โ โ โ โโโ interviews.js # Interview CRUD
โ โ โโโ services/
โ โ โโโ groqEvaluationService.js # AI evaluation
โ โ โโโ qaExtractor.js # Q&A extraction
โ โ โโโ transcriptionService.js # Audio transcription
โ โโโ uploads/ # Uploaded audio files
โ โโโ index.js # Server entry point
โ โโโ package.json # Backend dependencies
โ
โโโ .gitignore # Git ignore rules
โโโ package.json # Root package file
โโโ README.md # This file
Before installation, ensure you have the following installed:
- Node.js (v18 or higher)
- MongoDB (v6 or higher) - Running locally or cloud instance
- npm (v9 or higher) or yarn
- Git
- Groq API Key - Sign up at groq.com
git clone https://github.com/yourusername/interview-evaluation-system.git
cd interview-evaluation-systemnpm installcd server
npm installCreate .env file in the server directory:
# Server Configuration
PORT=5000
NODE_ENV=development
# MongoDB Configuration
MONGO_URI=mongodb://localhost:27017/interview-evaluation
# OR for MongoDB Atlas
# MONGO_URI=mongodb+srv://username:password@cluster.mongodb.net/interview-evaluation
# JWT Configuration
JWT_SECRET=your_super_secret_jwt_key_here_min_32_characters
JWT_EXPIRE=7d
# Groq AI Configuration
GROQ_API_KEY=your_groq_api_key_here
# File Upload Configuration
MAX_FILE_SIZE=100000000
UPLOAD_PATH=./uploads
# Email Configuration (Optional)
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
# AWS Configuration (Optional)
AWS_ACCESS_KEY_ID=your_aws_access_key
AWS_SECRET_ACCESS_KEY=your_aws_secret_key
AWS_REGION=us-east-1
AWS_BUCKET_NAME=interview-filescd ../client
npm installCreate .env file in the client directory:
# API Configuration
VITE_API_URL=http://localhost:5000/api
VITE_SERVER_URL=http://localhost:5000
# App Configuration
VITE_APP_NAME=Interview Evaluation System
VITE_APP_VERSION=1.0.0Make sure MongoDB is running:
# If using local MongoDB
mongod
# If using MongoDB Atlas, ensure connection string is correct in server/.env| Variable | Description | Required | Default |
|---|---|---|---|
PORT |
Server port number | No | 5000 |
MONGO_URI |
MongoDB connection string | Yes | - |
JWT_SECRET |
Secret key for JWT tokens | Yes | - |
JWT_EXPIRE |
JWT expiration time | No | 7d |
GROQ_API_KEY |
Groq AI API key | Yes | - |
MAX_FILE_SIZE |
Max upload size in bytes | No | 100MB |
NODE_ENV |
Environment mode | No | development |
| Variable | Description | Required | Default |
|---|---|---|---|
VITE_API_URL |
Backend API URL | Yes | - |
VITE_SERVER_URL |
Backend server URL | Yes | - |
The system uses two Groq AI models:
-
whisper-large-v3-turbo: For audio transcription
- Temperature: 0.0 (deterministic)
- Language: English
- Response format: Text
-
llama-3.3-70b-versatile: For Q&A extraction and evaluation
- Temperature: 0.0 (deterministic)
- Seed: 12345 (for consistency)
- Response format: JSON
Terminal 1 - Start Backend:
cd server
npm run dev
# Server will start on http://localhost:5000Terminal 2 - Start Frontend:
cd client
npm run dev
# Client will start on http://localhost:5173Build Frontend:
cd client
npm run buildStart Production Server:
cd server
npm start- Navigate to
http://localhost:5173 - Click "Sign Up" to create an account
- Enter your details and create password
- Login with your credentials
- Navigate to "Interview Groups"
- Click "Create New Group"
- Fill in:
- Group Name
- College/University
- Department
- Batch/Year
- Position
- Click "Create Group"
- Select an interview group
- Click "Add Candidate"
- Enter candidate details:
- Name, Email, Phone
- College, CGPA, Batch
- Experience, Skills
- Save candidate
- Navigate to "Interviews" for a group
- Click "New Interview"
- Select candidate from dropdown
- Choose audio/video file
- (Optional) Upload questions file
- Click "Upload and Process"
- Watch real-time progress bar
- Processing stages:
- Transcribing (0-50%)
- Extracting Q&A (50-75%)
- Evaluating (75-100%)
- Automatic refresh when complete
- Once "Analyzed", click "View Details"
- See:
- Full transcript
- Q&A breakdown
- Individual scores per question
- Overall evaluation
- AI feedback
Individual Report:
- Click "Export PDF" in evaluation section
- Download professional report
Top Candidates Report:
- Click filter icon
- Enter number of top candidates (e.g., 5)
- Click "Generate PDF"
- Get ranked list with scores
http://localhost:5000/api
POST /auth/register
Content-Type: application/json
{
"name": "John Doe",
"email": "john@example.com",
"password": "securePassword123"
}
Response: 201 Created
{
"token": "jwt_token_here",
"user": {
"id": "user_id",
"name": "John Doe",
"email": "john@example.com"
}
}POST /auth/login
Content-Type: application/json
{
"email": "john@example.com",
"password": "securePassword123"
}
Response: 200 OK
{
"token": "jwt_token_here",
"user": { ... }
}POST /interviews
Authorization: Bearer {token}
Content-Type: multipart/form-data
{
"candidate": "candidate_id",
"interviewGroup": "group_id",
"position": "Software Engineer",
"audioFile": <audio_file>,
"questionsFile": <questions_file> (optional)
}
Response: 201 Created
{
"interview": {
"_id": "interview_id",
"candidate": { ... },
"analysisStatus": "Pending",
...
}
}GET /interviews/:id
Authorization: Bearer {token}
Response: 200 OK
{
"interview": {
"_id": "interview_id",
"transcript": "full transcript...",
"qaPairs": [...],
"aiEvaluation": {
"overall_score": 8.5,
"results": [...]
},
...
}
}GET /interviews?interviewGroup=group_id
Authorization: Bearer {token}
Response: 200 OK
{
"interviews": [...]
}POST /evaluation/evaluate-interview
Authorization: Bearer {token}
Content-Type: application/json
{
"interviewId": "interview_id"
}
Response: 200 OK
{
"message": "Evaluation completed",
"evaluation": { ... }
}GET /dashboard/stats
Authorization: Bearer {token}
Response: 200 OK
{
"totalGroups": 5,
"totalInterviews": 25,
"completedInterviews": 20,
"pendingInterviews": 5
}| Code | Description |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 500 | Internal Server Error |
We welcome contributions! Please follow these steps:
- Fork the repository
- Create a 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
- Follow ESLint rules
- Write meaningful commit messages
- Add comments for complex logic
- Update documentation for new features
- Write tests for new functionality
Issue: "No analyzed interviews found with scores"
- Ensure interviews have been fully processed (status: "Analyzed")
- Check that
aiEvaluation.overall_scoreexists in database
Issue: MongoDB connection failed
- Verify MongoDB is running
- Check
MONGO_URIin.envfile - Ensure network access for MongoDB Atlas
Issue: Groq API errors
- Verify
GROQ_API_KEYis correct - Check API rate limits
- Ensure internet connectivity
Issue: File upload fails
- Check file size (max 100MB by default)
- Verify file format is supported
- Ensure
uploads/directory exists and is writable
Issue: Score variations on same audio
- This is expected due to AI non-determinism (ยฑ0.1-0.2)
- Temperature=0 and seed minimize but don't eliminate variation
- Due to different Q&A extraction on each run
This project is licensed under the MIT License - see the LICENSE file for details.
- Devi Sree Prasanth - Initial work - DeviSreePrasanth
- Groq AI for providing powerful LLM infrastructure
- MongoDB for robust database solutions
- React Team for the amazing frontend library
- Tailwind CSS for beautiful styling utilities
- Open Source Community for inspiration and support
For support, email support@yourapp.com or create an issue in the repository.
- Video interview support with facial analysis
- Multi-language support
- Real-time interview conducting
- Interview scheduling system
- Advanced analytics with ML insights
- Integration with HR systems
- Mobile application (iOS/Android)
- Live interview recording
- Automated email notifications
- Role-based access control (Admin, HR, Interviewer)
- Collaborative evaluation features
- Interview templates library
- Performance comparison analytics
- Export to Excel/CSV
- Custom scoring rubrics
โญ Star this repo if you find it helpful! โญ
Made with โค๏ธ by the Interview Evaluation Team