https://github.com/nehalvaghasiya/interview-bot
AI-powered virtual interview bot to simulate real interview practice.
https://github.com/nehalvaghasiya/interview-bot
ai chatbot interview-preparation llm machine-learning natural-language-processing nlp opeani python streamlit transformers
Last synced: 2 months ago
JSON representation
AI-powered virtual interview bot to simulate real interview practice.
- Host: GitHub
- URL: https://github.com/nehalvaghasiya/interview-bot
- Owner: nehalvaghasiya
- Created: 2023-07-05T16:12:28.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2025-11-22T22:54:50.000Z (7 months ago)
- Last Synced: 2025-11-23T00:19:02.551Z (7 months ago)
- Topics: ai, chatbot, interview-preparation, llm, machine-learning, natural-language-processing, nlp, opeani, python, streamlit, transformers
- Language: Python
- Homepage:
- Size: 132 MB
- Stars: 5
- Watchers: 1
- Forks: 6
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# AI Interview Chatbot
## Table of Contents
- [Overview](#overview)
- [Technical Aspect](#technical-aspect)
- [Installation](#installation)
- [Usage](#usage)
- [Configuration](#configuration)
- [Examples](#examples)
- [Directory Tree](#directory-tree)
- [Troubleshooting](#troubleshooting)
- [Bug / Feature Request](#bug--feature-request)
- [Technologies Used](#technologies-used)
## Overview
This project is an AI Interview Chatbot that uses OpenAI's GPT models (GPT-4o-mini by default) and the Streamlit framework. The chatbot generates job-specific interview questions and evaluates candidate responses using advanced language model capabilities.
https://github.com/nehalvaghasiya/interview-bot/assets/78668871/514c7ac2-c2e8-4e60-a4f4-2dd76bd30edd
## Technical Aspect
The Interview Chatbot project consists of three main components:
1. **Question Generation**: Creates job-specific interview questions based on a configurable job description
2. **Response Collection**: Interactive chat interface for collecting candidate answers
3. **Evaluation**: AI-powered assessment of candidate responses against job requirements
The project uses OpenAI's API with support for custom base URLs, making it compatible with OpenAI-compatible endpoints.
## Installation
### Prerequisites
- Python 3.11 or higher
- [uv](https://github.com/astral-sh/uv) package manager (recommended) or pip
### Setup Environment Variables
1. Copy the `.env.example` file to create your own `.env` file:
```bash
cp .env.example .env
```
2. **Choose your LLM provider** - Edit the `.env` file:
**Option A: Using OpenAI**
```env
LLM_PROVIDER=openai
OPENAI_API_KEY=your_actual_api_key_here
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
```
- Replace `your_actual_api_key_here` with your actual OpenAI API key
- Update `OPENAI_BASE_URL` if using a custom OpenAI-compatible endpoint
- Change `OPENAI_MODEL` to use a different model (e.g., `gpt-4`, `gpt-4-turbo`)
**Option B: Using Ollama (Local/Free)**
```env
LLM_PROVIDER=ollama
OLLAMA_BASE_URL=http://localhost:11434/v1
OLLAMA_MODEL=llama3.2
OLLAMA_API_KEY=ollama
```
- Install Ollama from [ollama.ai](https://ollama.ai)
- Pull a model: `ollama pull llama3.2` (or `llama3.1`, `mistral`, `qwen2.5`, etc.)
- Start Ollama: `ollama serve` (usually runs automatically)
- Change `OLLAMA_MODEL` to any model you have pulled
### Installation Methods
#### Method 1: Using uv (Recommended)
```bash
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone the repository
git clone https://github.com/nehalvaghasiya/interview-bot.git
cd interview-bot
# Install dependencies using uv
uv sync
# Activate the virtual environment
source .venv/bin/activate # Linux/Mac
# or
.venv\Scripts\activate # Windows
# Run the application
streamlit run chatbot.py
```
#### Method 2: Using uv with requirements.txt
```bash
# Create a virtual environment and install dependencies
uv venv
source .venv/bin/activate # Linux/Mac
uv pip install -r requirements.txt
# Run the application
streamlit run chatbot.py
```
#### Method 3: Using pip
```bash
# Create a virtual environment
python3 -m venv .venv
source .venv/bin/activate # Linux/Mac
# or
.venv\Scripts\activate # Windows
# Install dependencies
pip install -r requirements.txt
# Run the application
streamlit run chatbot.py
```
## Usage
1. **Start the application**:
```bash
streamlit run chatbot.py
```
2. **Access the chatbot**: Open your browser at `http://localhost:8501`
3. **Interact with the bot**:
- The chatbot will greet you and begin asking interview questions
- Type your answers in the text input field
- Press Enter to submit each answer
- After all questions are answered, you'll receive an AI-generated evaluation
## Configuration
### Customizing the Job Description
Edit `config.py` to customize the job description and prompts:
```python
class Parameters:
MODEL = os.environ.get("OPENAI_MODEL", "gpt-4o-mini")
JOB_DESCRIPTION = """
Your custom job description here...
"""
# Customize prompts as needed
QUESTIONS_PROMPT = "..."
EVALUATION_PROMPT = "..."
```
### Environment Variables
| Variable | Description | Default | Required |
|----------|-------------|---------|----------|
| `LLM_PROVIDER` | LLM provider to use (`openai` or `ollama`) | `openai` | Yes |
| **OpenAI Settings** | | | |
| `OPENAI_API_KEY` | Your OpenAI API key | - | If using OpenAI |
| `OPENAI_BASE_URL` | OpenAI API base URL | `https://api.openai.com/v1` | No |
| `OPENAI_MODEL` | OpenAI model name | `gpt-4o-mini` | No |
| **Ollama Settings** | | | |
| `OLLAMA_BASE_URL` | Ollama API base URL | `http://localhost:11434/v1` | No |
| `OLLAMA_MODEL` | Ollama model name | `llama3.2` | No |
| `OLLAMA_API_KEY` | Placeholder (Ollama doesn't need real key) | `ollama` | No |
## Examples
### Example Interview Flow
1. **Bot**: "Hello! I'm your interviewer bot powered by OpenAI. I will ask you a few questions, and your responses will be evaluated. Let's get started."
2. **Bot**: "What is your experience with Machine Learning and AI implementation?"
3. **User**: "I have 5 years of experience implementing ML models in production..."
4. **Bot**: "Can you describe a challenging NLP project you've worked on?"
5. **User**: "I developed a sentiment analysis system for customer feedback..."
6. *(After all questions)*
7. **Bot**: "Thank you for your thoughtful responses. Based on your answers, it appears that your skills, experience, and understanding align well with the requirements of the role..."
## Directory Tree
```
interview-bot/
├── .env.example # Environment variables template
├── .github/ # GitHub configuration
├── .gitignore # Git ignore rules
├── README.md # This file
├── chatbot.py # Main Streamlit application
├── config.py # Configuration and prompts
├── utils.py # Utility functions (API calls, text processing)
├── pyproject.toml # Project metadata and dependencies (uv)
├── requirements.txt # Python dependencies (pip)
├── uv.lock # Locked dependencies (uv)
├── devtools/ # Development tools
│ └── lint.py
├── images/ # Project images
│ ├── openai.png
│ └── streamlit.jpg
├── src/ # Source package (if using as package)
│ └── interview_bot.egg-info/
└── tests/ # Test files
└── test_placeholder.py
```
## Troubleshooting
### Common Issues
#### Module Not Found Errors
If you encounter import errors:
```bash
# Ensure you're in the virtual environment
source .venv/bin/activate # Linux/Mac
# Reinstall dependencies
uv pip install -r requirements.txt
# or
pip install -r requirements.txt
```
#### API Connection Errors
**For OpenAI:**
- Verify your `.env` file exists and contains valid credentials
- Check that `OPENAI_API_KEY` is set correctly
- Ensure `OPENAI_BASE_URL` is accessible from your network
**For Ollama:**
- Ensure Ollama is running: `ollama serve` (or check if it's running as a service)
- Verify the model is installed: `ollama list`
- Pull the model if missing: `ollama pull llama3.2`
- Check Ollama is accessible: `curl http://localhost:11434/api/tags`
- Verify `OLLAMA_BASE_URL` points to the correct endpoint
#### Model Not Found Error
**For OpenAI:**
- Update the `OPENAI_MODEL` in your `.env` file to a model available in your account
- Common models: `gpt-4o-mini`, `gpt-4o`, `gpt-4-turbo`, `gpt-4`
**For Ollama:**
- List available models: `ollama list`
- Pull the desired model: `ollama pull `
- Popular models: `llama3.2`, `llama3.1`, `mistral`, `qwen2.5`, `phi3`
- Update `OLLAMA_MODEL` in `.env` to match an installed model
#### Ollama-Specific Issues
**Ollama not responding:**
```bash
# Check if Ollama is running
ps aux | grep ollama
# Start Ollama
ollama serve
```
**Slow responses with Ollama:**
- Local models require sufficient RAM and compute
- Consider using smaller models: `phi3`, `llama3.2:1b`
- Or faster models: `qwen2.5:3b`, `mistral`
#### Streamlit Errors
If Streamlit throws errors:
```bash
# Clear Streamlit cache
streamlit cache clear
# Restart the application
streamlit run chatbot.py
```
### Getting Help
If issues persist:
1. Check that all dependencies are correctly installed
2. Verify Python version is 3.11 or higher: `python --version`
3. Review error logs in the terminal
4. Open an issue on GitHub with error details
## Bug / Feature Request
If you find a bug or the chatbot doesn't work as expected, please open an issue [here](https://github.com/nehalvaghasiya/interview-bot/issues/new) with:
- Description of the issue
- Steps to reproduce
- Error messages or screenshots
- Your environment details (OS, Python version)
If you'd like to request a new feature, open an issue [here](https://github.com/nehalvaghasiya/interview-bot/issues/new) with:
- Feature description
- Use case and benefits
- Example scenarios
## Technologies Used

- **OpenAI API** - GPT-4o-mini and other models for question generation and evaluation
- **Ollama** - Local LLM support (Llama 3.2, Mistral, Qwen, and more)
- **Streamlit** - Web framework for the interactive chat interface
- **Python-dotenv** - Environment variable management
- **uv** - Fast Python package manager
### Supported LLM Providers
#### OpenAI
- Cloud-based API
- High-quality responses
- Requires API key and costs per token
- Models: GPT-4o, GPT-4o-mini, GPT-4-turbo, GPT-3.5-turbo
#### Ollama
- Run models locally on your machine
- Free and private
- No internet required after model download
- Popular models: Llama 3.2, Llama 3.1, Mistral, Qwen 2.5, Phi-3
- Learn more: [ollama.ai](https://ollama.ai)