Skip to content

Ajaykumar3305/FINALYEAR_PROJECT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽฏ AI-Powered Interview Evaluation System

A comprehensive, AI-driven platform for conducting, analyzing, and evaluating technical interviews with real-time insights and data-driven hiring decisions.

React Node.js MongoDB Groq AI License


๐Ÿ“‹ Table of Contents


๐ŸŒŸ Overview

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.

Key Highlights

  • ๐Ÿค– 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

๐Ÿ—๏ธ Architecture

System Architecture Diagram

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                         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      โ”‚  โ”‚                         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Component Architecture

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

โœจ Features

1. User Management

  • โœ… Secure user registration and login
  • โœ… JWT-based authentication
  • โœ… Password encryption with bcrypt
  • โœ… Protected routes and role-based access

2. Interview Group Management

  • โœ… Create and organize interview groups by:
    • College/University
    • Department
    • Batch/Year
    • Position/Role
  • โœ… Group-based interview filtering
  • โœ… Bulk interview management

3. Candidate 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

4. Audio Interview Processing

  • โœ… 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

5. AI-Powered Evaluation

  • โœ… 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

6. Analytics Dashboard

  • โœ… Total interview groups count
  • โœ… Total interviews processed
  • โœ… Completed interviews statistics
  • โœ… Real-time data visualization
  • โœ… Performance trends

7. Interview Management

  • โœ… 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

8. PDF Report Generation

  • โœ… 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

9. Real-Time Updates

  • โœ… Automatic status polling during processing
  • โœ… Live progress indicators
  • โœ… Background data refresh
  • โœ… Toast notifications for status changes
  • โœ… No page refresh required

10. Modern UI/UX

  • โœ… 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 Stack

Frontend Technologies

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

Backend Technologies

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

AI/ML Services

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

Development Tools

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

๐Ÿ“Š Workflow

Complete System Workflow (End-to-End)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    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         โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Scoring Algorithm

// 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 Development

๐Ÿ“ Project Structure

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

๐Ÿš€ Installation

Prerequisites

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

Step-by-Step Installation

1. Clone the Repository

git clone https://github.com/yourusername/interview-evaluation-system.git
cd interview-evaluation-system

2. Install Root Dependencies

npm install

3. Setup Backend

cd server
npm install

Create .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-files

4. Setup Frontend

cd ../client
npm install

Create .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.0

5. Start MongoDB

Make sure MongoDB is running:

# If using local MongoDB
mongod

# If using MongoDB Atlas, ensure connection string is correct in server/.env

โš™๏ธ Configuration

Environment Variables

Server Environment Variables

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

Client Environment Variables

Variable Description Required Default
VITE_API_URL Backend API URL Yes -
VITE_SERVER_URL Backend server URL Yes -

Groq AI Configuration

The system uses two Groq AI models:

  1. whisper-large-v3-turbo: For audio transcription

    • Temperature: 0.0 (deterministic)
    • Language: English
    • Response format: Text
  2. llama-3.3-70b-versatile: For Q&A extraction and evaluation

    • Temperature: 0.0 (deterministic)
    • Seed: 12345 (for consistency)
    • Response format: JSON

๐Ÿ’ป Usage

Starting the Application

Development Mode

Terminal 1 - Start Backend:

cd server
npm run dev
# Server will start on http://localhost:5000

Terminal 2 - Start Frontend:

cd client
npm run dev
# Client will start on http://localhost:5173

Production Mode

Build Frontend:

cd client
npm run build

Start Production Server:

cd server
npm start

Using the Application

1. First Time Setup

  1. Navigate to http://localhost:5173
  2. Click "Sign Up" to create an account
  3. Enter your details and create password
  4. Login with your credentials

2. Create Interview Group

  1. Navigate to "Interview Groups"
  2. Click "Create New Group"
  3. Fill in:
    • Group Name
    • College/University
    • Department
    • Batch/Year
    • Position
  4. Click "Create Group"

3. Add Candidate

  1. Select an interview group
  2. Click "Add Candidate"
  3. Enter candidate details:
    • Name, Email, Phone
    • College, CGPA, Batch
    • Experience, Skills
  4. Save candidate

4. Upload Interview

  1. Navigate to "Interviews" for a group
  2. Click "New Interview"
  3. Select candidate from dropdown
  4. Choose audio/video file
  5. (Optional) Upload questions file
  6. Click "Upload and Process"

5. Monitor Processing

  • Watch real-time progress bar
  • Processing stages:
    • Transcribing (0-50%)
    • Extracting Q&A (50-75%)
    • Evaluating (75-100%)
  • Automatic refresh when complete

6. View Results

  1. Once "Analyzed", click "View Details"
  2. See:
    • Full transcript
    • Q&A breakdown
    • Individual scores per question
    • Overall evaluation
    • AI feedback

7. Generate Reports

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

๐Ÿ“š API Documentation

Base URL

http://localhost:5000/api

Authentication Endpoints

Register User

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"
  }
}

Login User

POST /auth/login
Content-Type: application/json

{
  "email": "john@example.com",
  "password": "securePassword123"
}

Response: 200 OK
{
  "token": "jwt_token_here",
  "user": { ... }
}

Interview Endpoints

Create Interview

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 Interview by ID

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 by Group

GET /interviews?interviewGroup=group_id
Authorization: Bearer {token}

Response: 200 OK
{
  "interviews": [...]
}

Evaluation Endpoints

Trigger Manual Evaluation

POST /evaluation/evaluate-interview
Authorization: Bearer {token}
Content-Type: application/json

{
  "interviewId": "interview_id"
}

Response: 200 OK
{
  "message": "Evaluation completed",
  "evaluation": { ... }
}

Dashboard Endpoints

Get Dashboard Statistics

GET /dashboard/stats
Authorization: Bearer {token}

Response: 200 OK
{
  "totalGroups": 5,
  "totalInterviews": 25,
  "completedInterviews": 20,
  "pendingInterviews": 5
}

Response Codes

Code Description
200 Success
201 Created
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
500 Internal Server Error

๐Ÿค Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a 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

Coding Standards

  • Follow ESLint rules
  • Write meaningful commit messages
  • Add comments for complex logic
  • Update documentation for new features
  • Write tests for new functionality

๐Ÿ› Troubleshooting

Common Issues

Issue: "No analyzed interviews found with scores"

  • Ensure interviews have been fully processed (status: "Analyzed")
  • Check that aiEvaluation.overall_score exists in database

Issue: MongoDB connection failed

  • Verify MongoDB is running
  • Check MONGO_URI in .env file
  • Ensure network access for MongoDB Atlas

Issue: Groq API errors

  • Verify GROQ_API_KEY is 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

๐Ÿ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


๐Ÿ‘ฅ Authors


๐Ÿ™ Acknowledgments

  • 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

๐Ÿ“ž Support

For support, email support@yourapp.com or create an issue in the repository.


๐Ÿ”ฎ Future Enhancements

  • 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages