2.4 KiB
2.4 KiB
AI Interviewer
A real-time AI-powered interview platform with audio streaming, face verification, and intelligent evaluation.
Architecture
ai_interview_assistant/
├── server/ # NestJS backend
│ └── src/
│ ├── candidate/ # Profile, resume upload, OCR
│ ├── face-auth/ # face-api.js face verification
│ ├── interview/ # WebSocket gateway, orchestrator, voice providers
│ └── brain/ # Cerebras LLM integration, evaluation
├── client/ # React + Vite frontend
│ └── src/
│ ├── components/ # Avatar
│ ├── pages/ # Onboarding, InterviewRoom
│ ├── hooks/ # useSocket, useAudioRecorder
│ └── services/ # REST API client
└── .env.example # Environment variables template
Quick Start
1. Environment Setup
cp .env.example .env
# Fill in your API keys: DEEPGRAM_API_KEY, SARVAM_API_KEY, CEREBRAS_API_KEY
2. Backend
cd server
npm install
npm run start:dev # http://localhost:3001
Note:
face-api.jsrequires model weight files inserver/face-models/. Download them from face-api.js models.
3. Frontend
cd client
npm install
npm run dev # http://localhost:5173
4. MongoDB
Ensure MongoDB is running on localhost:27017 (or update MONGODB_URI in .env).
Tech Stack
| Layer | Technology |
|---|---|
| Backend | NestJS, Mongoose, Socket.io, face-api.js |
| Frontend | React 19, Vite, TailwindCSS, socket.io |
| LLM | Cerebras (llama-4-scout) |
| STT/TTS | Deepgram (primary), Sarvam (fallback) |
| OCR | pdf-parse + tesseract.js |
| Database | MongoDB |
Key Features
- Real-time audio streaming via WebSocket (Socket.io)
- Face verification on interview start (flag-only, non-blocking)
- Resume OCR supporting text PDFs and scanned images
- Stage-aware interviewing (Intro → Technical → Behavioral → Wrap-up)
- Structured evaluation with per-dimension ratings and reviews
- Swappable voice providers (Deepgram ↔ Sarvam via env config)