A fault-tolerant video interview platform designed for low-end smartphones with unstable internet connectivity. Conducts AI-powered video interviews, automated evaluation, and fraud detection.
┌─────────────────────────────────────────────────────┐
│ Frontend (React PWA) │
│ ┌─────────────────────────────────────────────┐ │
│ │ Interview Recording Engine │ │
│ │ - Chunk-based video recording │ │
│ │ - IndexedDB caching │ │
│ │ - Resume capability │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ User Dashboard │ │
│ │ - View results │ │
│ │ - Playback videos │ │
│ │ - See scores & feedback │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ Backend (FastAPI) │
│ ┌─────────────────────────────────────────────┐ │
│ │ Upload Pipeline │ │
│ │ - Chunk validation & reassembly │ │
│ │ - Resilient upload handling │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ Processing Layer │ │
│ │ - Audio extraction │ │
│ │ - Speech-to-text (Whisper) │ │
│ │ - NLP evaluation │ │
│ └─────────────────────────────────────────────┘ │
│ ↓ │
│ ┌─────────────────────────────────────────────┐ │
│ │ AI Pipeline │ │
│ │ - Fraud detection (face, liveness) │ │
│ │ - Score evaluation │ │
│ │ - Job-ready classification │ │
│ └─────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ Admin Dashboard (React) │
│ - Candidate management │
│ - Results review │
│ - Fraud flag investigation │
└─────────────────────────────────────────────────────┘
- Project setup (React + Vite + PWA)
- Interview flow UI
- Basic video recording
- Question navigation
- Chunk-based recording
- IndexedDB storage
- Resume system
- Upload queue
- FastAPI setup
- PostgreSQL schema
- Chunk upload API
- Candidate storage
- Audio extraction
- Speech-to-text
- Transcript storage
- Benchmark answers
- Relevance scoring
- Clarity scoring
- Completeness scoring
- Face detection
- Liveness detection
- Multi-speaker detection
- Fitment scoring
- Job-ready classification
- Result storage
- User dashboard
- Admin dashboard
- Results playback
- Candidate management
- Node.js 18+ (frontend)
- Python 3.9+ (backend)
- PostgreSQL 12+
Frontend:
cd frontend
npm install
npm run devBackend:
cd backend
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
python main.pybharatAI/
├── frontend/ # React PWA
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── pages/ # Page components
│ │ ├── hooks/ # Custom hooks
│ │ ├── utils/ # Utility functions
│ │ ├── services/ # API & storage services
│ │ └── App.jsx
│ └── package.json
├── backend/ # FastAPI
│ ├── app/
│ │ ├── routes/ # API endpoints
│ │ ├── models/ # SQLAlchemy models
│ │ ├── services/ # Business logic
│ │ ├── utils/ # Utility functions
│ │ └── main.py
│ └── requirements.txt
└── README.md
✅ Video Recording
- Chunk-based recording for stability
- Works with unstable internet
- Automatic resume capability
- IndexedDB caching
✅ Interview Flow
- 7-question structured interview
- Video + audio recording
- Real-time question display
- Progress tracking
✅ Evaluation Engine
- Automatic speech-to-text
- Relevance, clarity, completeness scoring
- Benchmark-based evaluation
- Job-ready classification
✅ Fraud Detection
- Face detection
- Liveness detection
- Multi-speaker detection
- Critical/High/Medium severity flags
✅ Dashboards
- User results view
- Detailed question playback
- Admin candidate management
- Advanced filtering & search
POST /api/candidates/register Create new candidate
POST /api/submissions/upload-chunk Upload video chunk
POST /api/submissions/complete Mark submission complete
GET /api/user/results/{id} Get user results summary
GET /api/user/results/{id}/detailed Get detailed question breakdown
GET /api/admin/candidates List all candidates (paginated, filterable)
GET /api/admin/candidates/{id} Get candidate detail with all data
PATCH /api/admin/candidates/{id} Update candidate status
DELETE /api/admin/candidates/{id} Delete candidate record
- Frontend: Use Tailwind CSS for styling, Framer Motion for animations
- Backend: Follow RESTful conventions, use async/await for I/O operations
- Database: Use SQLAlchemy ORM, maintain data consistency
- Error Handling: Graceful degradation, informative error messages
- Performance: Optimize for low-end devices, minimize bundle size
- Week 1-2: Basic UI and recording foundation
- Week 3-4: Backend and upload pipeline
- Week 5-6: Speech processing and evaluation
- Week 7-8: Fraud detection and dashboards
- Week 9+: Optimization, testing, deployment
Vision: Build a fault-tolerant video data pipeline that enables fair AI-powered skill assessment on any device, anywhere, with any connection.