An interactive AI Interviewer powered by Google GenAI Live API — conducts real-time, voice-based interviews for any role using your uploaded job description and resume.
This project combines a Python backend (WebSocket + GenAI Live API) with a browser frontend (HTML + JS) to simulate a spoken job interview.
- 🎙️ Live audio input/output
- 📄 Resume parsing from PDF
- 🌍 Multilingual support (EN, TR, RU, AZ)
- 💬 Customizable prompts for different roles
- 🔌 Simple setup — no frameworks required
.
├─ config/ # Job title & description text files
├─ prompts/ # System prompt template (optional)
├─ ai_interviewer_bot.py # Python backend server
├─ index.html # Frontend (runs in browser)
├─ resume.pdf # Candidate resume
├─ .env # API key + project config
├─ .gitignore
└─ README.md
- Python 3.10+
- A Google GenAI API key (with Live API access)
- Modern browser with mic + audio support (Chrome, Edge, Firefox)
git clone <your-repo-url>
cd ai-interview-botpip install -U pip
pip install google-genai websockets python-dotenv pypdfGEMINI_API_KEY=YOUR_API_KEY_HERE
PROJECT_ID=ai_interviewer-botconfig/job_title.txt→ e.g. AI Engineerconfig/job_description.txt→ Paste role detailsresume.pdf→ Candidate’s resume
python ai_interviewer_bot.pyYou’ll see:
Server: ws://localhost:8765
Backend ready! Open index.html in your browser.
Just open index.html in your browser.
| Language | Code |
|---|---|
| English | en-US |
| Turkish | tr-TR |
| Russian | ru-RU |
| Azerbaijani | az-AZ |
- Browser connects via WebSocket →
ws://localhost:8765 - User audio (16 kHz PCM) is streamed to the backend
- Backend sends it to Google GenAI Live API
- AI responds with speech + text
- Browser plays AI’s voice and shows text log
- Change number of questions:
Edit
self.max_questionsinInterviewSession(default6) - Change voice:
Modify
voice_nameintypes.PrebuiltVoiceConfig - Custom system prompt:
Add
prompts/system_prompt.txt(uses placeholders{job_title},{language},{job_description},{resume},{max_questions})
- No AI responses: Check your
GEMINI_API_KEY - Mic issues: Allow microphone access in browser
- Parsing failed: Use a text-based (not scanned) PDF