A FastRTC-powered job interview simulator with real-time voice interaction that helps job seekers practice and improve their interview skills. The application uses LLM's to create realistic interview scenarios based on specific job descriptions, with the AI playing the role of the interviewer. Users engage in natural voice conversations, receive immediate responses, and get detailed performance feedback after each session. With customisable difficulty levels and industry-specific questions, this tool provides a risk-free environment to build confidence and refine responses before real interviews. This can be run localy using Ollama, kokoro and local whisper.
Features • How It Works • Installation • Usage • Configuration • Tech Stack • Contributing • License
- 🎙️ Real-time voice interaction - Have natural conversations with an AI interviewer
- 💼 Customizable job scenarios - Practice for positions in various industries
- 🔄 Multiple difficulty levels - From beginner-friendly to stress interviews
- 💡 Comprehensive feedback - Get scored on your performance with actionable insights
- 📊 Performance analytics - Track your improvement over time
- 🧠 Adaptive questioning - Interviewer responds based on your answers
- 📝 Interview transcripts - Review the full conversation afterward
Job Interview Simulator uses WebRTC for real-time voice communication and AI language models to create realistic interview experiences:
- Setup - Enter job description, position details, and select interview difficulty
- Briefing - Review the generated job scenario and interview context
- Interview - Engage in a voice conversation with the AI interviewer
- Feedback - Receive detailed assessment and actionable improvement recommendations
- Python 3.10+
- For Local use:
- Ollama
- Kokoro TTS
- Local Whisper
# Clone the repository
git clone https://github.com/dwain-barnes/fastrtc-job-interview-simulator.git
cd job-interview-simulator
# Create and activate virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
Create a .env
file in the root directory:
# LLM configuration
LLM_BASE_URL=https://your-llm-api-url.com
LLM_MODEL=your-model-name
LLM_API_KEY=your-api-key
# STT configuration
STT_BASE_URL=https://your-stt-api-url.com
STT_MODEL=your-stt-model
STT_API_KEY=your-stt-api-key
STT_RESPONSE_FORMAT=json
LANGUAGE=en
# TTS configuration
TTS_BASE_URL=https://your-tts-api-url.com
TTS_API_KEY=your-tts-api-key
TTS_MODEL=your-tts-model
TTS_VOICE=en-US-neural2-J
TTS_BACKEND=standard
TTS_AUDIO_FORMAT=mp3
MODE=WEB
python app.py
The application will be available at http://localhost:7860
-
Enter job details:
- Paste the job description
- Specify the position title
- Select the industry
- Choose difficulty level
-
Start the interview:
- Review the briefing information
- Click "Start Interview" when ready
- Allow microphone access when prompted
-
During the interview:
- Speak naturally into your microphone
- Listen to the interviewer's questions
- End the interview when finished
-
Review feedback:
- See your overall score
- Review strengths and areas for improvement
- Get specific recommendations for future interviews
- Easy: Beginner-friendly questions with a supportive interviewer
- Medium: Standard professional interview with balanced questions
- Hard: Challenging questions requiring detailed answers
- Expert: Stress interview with rapid-fire questions and interruptions
- Technical Questions: Toggle on/off for role-specific technical assessment
- Behavioral Questions: Toggle on/off for soft skills and experience evaluation
- Backend: FastAPI, Python
- Voice Processing: FastRTC
- AI/ML: OpenAI, Custom prompt engineering, Ollama
- Frontend: HTML/CSS/JavaScript
- Audio: Speech-to-Text and Text-to-Speech APIs
job-interview-simulator/
├── app.py # Main application file
├── feedback.py # Interview assessment logic
├── scenario_prompting.py # Interview scenario generation
├── settings.py # Application settings
├── speech.py # Speech processing
├── static/ # CSS, JavaScript, etc.
├── templates/ # HTML templates
│ ├── index.html # Home page
│ ├── briefing.html # Interview briefing page
│ └── interview.html # Interview interface
├── requirements.txt # Dependencies
└── README.md # This file
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- FastRTC for real-time communicatio
Made with ❤️ for job seekers everywhere