An open-source AI-powered interview simulation platform for candidate practice and company screening. Features real-time AI interviewers, multi-LLM support, and WebSocket communication.
Key Features:
- π€ AI-Powered Interviewers - Multiple LLM providers (OpenAI, DeepSeek, Gemini, Grok)
- π― Dual-Mode Operation - Candidate practice and company screening modes
- β‘ Real-Time Communication - WebSocket-based bidirectional communication
- π¨ Modern UI - Built with React, TypeScript, and Tailwind CSS
- π§ Flexible Configuration - JSON-based interview configuration system
- π Comprehensive Evaluation - Automated scoring and feedback system
This platform transforms the interview experience by providing AI-powered interviewers, real-time evaluation, and comprehensive feedback. Built with React, TypeScript, and modern web technologies, it supports three distinct deployment modes for different use cases.
Purpose: Independent candidates practice interviews to improve skills
- Features: Full signup, practice scenarios, skill development, resume upload
- Target Users: Job seekers, students, professionals wanting to practice
- Experience: Comprehensive practice platform with learning features
Purpose: Companies create and manage AI-powered interview screening
- Features: Company signup, interview creation, candidate management, analytics
- Target Users: HR teams, hiring managers, recruitment agencies
- Experience: Full interview management and candidate screening platform
Purpose: Candidates take company-created interviews
- Features: No signup, interview code login, focused interview experience
- Target Users: Candidates invited by companies for screening
- Experience: Streamlined, professional interview session
- Frontend: React 18 + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS + shadcn/ui components
- Routing: Wouter (lightweight React router)
- State Management: React Context API
- Real-time Communication: WebSocket
- AI Integration: OpenAI, DeepSeek, Gemini, Grok APIs
- Audio/Video: WebRTC, ElevenLabs, Google Speech
# Clone the repository
git clone git@github.com:HopeLoom/AI-Interview.git
cd AI-Interview
# Frontend setup
npm install
# Backend setup
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
cd ..
# Configure environment (see SETUP.md for details)
cp .env.example .env
cp backend/.env.example backend/.env
# Edit .env files with your API keys and configurationStart Backend:
cd backend
python main.py
# Backend runs on http://localhost:8000Start Frontend (in another terminal):
# Candidate Practice Mode
npm run dev:candidate
# Company Interviewing Mode
npm run dev:company
# Company Candidate Interview Mode
npm run dev:company-candidate
# Default development mode
npm run dev
# Frontend runs on http://localhost:3000π For detailed setup instructions, see SETUP.md
# Build for different modes
# Candidate Practice Platform
npm run build:candidate
# Company Interviewing Platform
npm run build:company
# Company Candidate Interview Platform
npm run build:company-candidate
# Default build
npm run buildThe platform uses environment-specific configuration files that are automatically loaded based on the build mode.
.env # Base environment (fallback)
.env.staging # Staging backend config
.env.production # Production backend config
# Mode-specific configurations
.env.candidate-practice # Development candidate mode + staging backend
.env.company-interviewing # Development company mode + staging backend
.env.company-candidate-interview # Development company candidate mode + staging backend
# Production mode-specific configurations
.env.candidate-practice.production # Production candidate mode + production backend
.env.company-interviewing.production # Production company mode + production backend
.env.company-candidate-interview.production # Production company candidate mode + production backend
# Core Configuration
VITE_APP_MODE=candidate-practice # Application mode
VITE_API_BASE_URL=api.hopeloom.com # Backend API URL
VITE_ENV=production # Environment (staging/production)
# Feature Flags
VITE_ENABLE_COMPANY_FEATURES=true # Enable company-specific features
VITE_ENABLE_CANDIDATE_FEATURES=true # Enable candidate-specific features
# Application Metadata
VITE_APP_TITLE=AI Interview Practice # Application title
VITE_APP_DESCRIPTION=Practice interviews with AI-powered interviewersFor detailed architecture documentation with diagrams, see ARCHITECTURE.md.
Master Agent System:
- Orchestrates the entire interview process
- Manages communication between all agents
- Handles WebSocket communication with frontend
- Tracks interview state and flow
AI Panelist Agents:
- Multiple AI panelists with distinct personalities
- Each panelist has memory, decision-making, and response generation
- Supports multiple LLM providers (OpenAI, DeepSeek, Gemini, Grok)
Activity Agent:
- Monitors coding activities during interviews
- Analyzes candidate code submissions
- Provides feedback to panelists
WebSocket Communication:
- Real-time bidirectional communication
- Handles audio, text, and code submissions
- Manages interview state synchronization
Simulation/
βββ client/ # Frontend React application
β βββ src/
β β βββ components/ # Reusable UI components
β β β βββ signup/ # Signup form components
β β β βββ interview/ # Interview-related components
β β β βββ configuration/ # Interview configuration components
β β β βββ ui/ # Base UI components (shadcn/ui)
β β βββ pages/ # Page components
β β βββ contexts/ # React context providers
β β βββ hooks/ # Custom React hooks
β β βββ lib/ # Utility libraries
β β βββ services/ # API service layer
β βββ package.json
βββ backend/ # Python backend services
β βββ master_agent/ # Master agent orchestration
β βββ panelist_agent/ # AI panelist agents
β βββ interview_configuration/ # Configuration management
β βββ routers/ # API route handlers
β βββ core/ # Core functionality
β β βββ database/ # Database abstraction
β β βββ memory/ # Agent memory systems
β β βββ prompting/ # Prompt strategies
β βββ server/ # WebSocket server
βββ shared/ # Shared TypeScript schemas
βββ .env.* # Environment configuration files
βββ README.md
The platform supports multiple database backends:
- SQLite - Easiest for development (included with Python)
- PostgreSQL - Production-ready relational database
- Firebase - NoSQL cloud database
See SETUP.md for database configuration.
Each mode has different feature sets enabled:
| Feature | Candidate Practice | Company Interviewing | Company Candidate Interview |
|---|---|---|---|
| Candidate Signup | β | β | β |
| Company Signup | β | β | β |
| Candidate Dashboard | β | β | β |
| Company Dashboard | β | β | β |
| Interview Configuration | β | β | β |
| Practice Mode | β | β | β |
| Screening Mode | β | β | β |
Each mode has different allowed routes and default destinations:
// Example: Company Candidate Interview Mode
{
mode: 'company-candidate-interview',
routing: {
defaultRoute: '/interview',
allowedRoutes: ['/login', '/interview']
}
}The platform is designed to be deployed as three separate applications:
- Practice Platform:
npm run build:candidate - Company Platform:
npm run build:company - Interview Platform:
npm run build:company-candidate
# Build all three platforms
npm run build:candidate
npm run build:company
npm run build:company-candidate
# Each build creates optimized production files in dist/public/- Staging: Uses
.env.{mode}files with staging backend - Production: Uses
.env.{mode}.productionfiles with production backend
- Candidates: Practice users and company interview takers
- Companies: Interview creators and managers
- Practice Mode: Full signup/login for candidates
- Company Mode: Company signup + candidate signup
- Interview Mode: Email + interview code only
- Multiple AI models (OpenAI, DeepSeek, Gemini, Grok)
- Real-time conversation simulation
- Context-aware responses
- Industry-specific knowledge
- Custom question creation
- Multiple interview formats
- Candidate tracking
- Performance analytics
- WebSocket-based communication
- Audio/video integration
- Live transcription
- Session recording
npm run check# Test different modes
npm run dev:candidate
npm run dev:company
npm run dev:company-candidateThe platform integrates with a Python backend that provides:
- User authentication and management
- Interview configuration and management
- AI model integration
- Real-time communication services
/api/auth/*- Authentication endpoints/api/interviews/*- Interview management/api/candidates/*- Candidate management/api/companies/*- Company management
- β Multi-round interviews with different panelists per round
- β Real-time AI conversation via WebSocket
- β Coding activity monitoring with live code analysis
- β Evaluation system with scoring and feedback
- β Multiple LLM providers (OpenAI, DeepSeek, Gemini, Grok)
- β Dynamic interview configuration generation from job descriptions
- β Template-based setup with example configurations
- β Granular topic selection for interview rounds
- β Custom panelist personalities and roles
- β Candidate Practice Mode - Self-service interview practice
- β Company Interviewing Mode - Full interview management
- β Company Candidate Mode - Streamlined interview experience
This project is licensed under the MIT License - see the LICENSE file for details.
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
- SETUP.md - Detailed setup and configuration guide
- CONTRIBUTING.md - Contribution guidelines
- REQUIREMENTS.md - Feature requirements and specifications
- OPEN_SOURCE_READINESS_ASSESSMENT.md - Project readiness assessment
- Setup Guide: SETUP.md - Detailed setup instructions
- Contributing: CONTRIBUTING.md - How to contribute
- Architecture: ARCHITECTURE.md - System architecture and diagrams
- Security: SECURITY.md - Security policy and reporting
- Changelog: CHANGELOG.md - Version history
- Issues: Report issues via GitHub Issues
- Discussions: Join discussions for questions and ideas
If this project helped you, please consider:
- β Starring this repository
- π Reporting bugs and suggesting features
- π‘ Contributing code or documentation
- π’ Sharing with others who might find it useful
- Enhanced authentication and authorization
- More LLM provider integrations
- Advanced analytics dashboard
- Mobile app support
- Multi-language support
- Video recording capabilities
- Integration with popular HR tools
See Projects for detailed roadmap.
This is a prototype/starter project:
- Authentication and authorization are intentionally simplified for development
- Add proper security (password hashing, JWT, authorization) before production use
- Database schema is created automatically on first run
- See OPEN_SOURCE_READINESS_ASSESSMENT.md for details
- β Candidate Practice Mode
- β Company Interviewing Mode
- β Company Candidate Interview Mode
- β Mode-aware routing and configuration
- β Environment-specific builds
- β Clean component architecture
Built with β€οΈ by the HopeLoom Team