This is a comprehensive, voice-based interview application built with Streamlit. It allows admins to upload job descriptions, candidates to take AI-powered audio interviews, and interviewers to review, evaluate, and manage the results.
- Admin Dashboard: Upload, manage, and set active Job Descriptions (JDs).
- Voice-Based Interview Flow: Candidates interact via voice. The app uses Text-to-Speech (TTS) to ask questions and Speech-to-Recognition (ASR) to transcribe answers.
- Real-time AI Evaluation: Candidate answers are evaluated in real-time by an AI agent based on relevance, clarity, depth, and accuracy.
- Dynamic Follow-ups: The system can generate follow-up questions on the fly if a candidate's answer is incomplete or needs more detail (limited to one follow-up per question).
- Results Dashboard: A private admin tab to view all completed interviews, sorted by score and filterable by status (Pending, Accepted, Rejected).
- Accept/Reject Workflow: Admins can directly accept or reject candidates from the dashboard, which updates the interview result file.
- Detailed Reporting: A "pop-out" dialog shows a full breakdown of the interview, including the AI's overall summary, each question, the candidate's answer, and the detailed evaluation scores.
- uv: This project uses
uvfor package management and running. See the uv installation guide. - PortAudio: The
sounddevicelibrary requires the PortAudio C library.- macOS (Homebrew):
brew install portaudio - Windows:
uvshould bundle this, but if not, you may need to install it manually. - Linux (APT):
sudo apt-get install portaudio19-dev
- macOS (Homebrew):
- API Keys: You will need API keys from your AI providers (Google -> For LLM Request, Groq -> For Speech Related LLM)
-
Clone the Repository
git clone <your-repo-url> cd <your-repo-name>
-
Set Up Environment Rename or copy the
.env_examplefile to.envand add your API keys.# .env GOOGLE_API_KEY="your_google_api_key_here" GROQ_API_KEY="your_groq_api_key_here"
-
Install Dependencies
uv syncwill create a virtual environment and install all packages fromrequirements.txt.uv sync
-
Run the Application This command will run the Streamlit app using the
uv-managed environment.uv run streamlit run main.py
-
Access the App Open your browser and navigate to the local URL provided by Streamlit (usually
http://localhost:8501).
- Admin (Setup): The admin navigates to the "Admin Dashboard" (
/admin) and uploads a new Job Description. - Candidate (Interview): The candidate opens the main page, selects the active job, and begins the interview. The app plays the first question's audio.
- Candidate (Answering): The candidate clicks "Start Recording," provides their verbal answer, and clicks "Stop Recording."
- System (Evaluation): The app transcribes the audio, sends the text to the
EvaluationAgent, and receives scores. If the answer is poor, the agent generates a follow-up question. - System (Loop): The app moves to the next question (or the follow-up) and repeats the process.
- System (Completion): After the interview, the app generates an "overall evaluation summary" and saves the complete interview JSON (e.g.,
9876543210_AI_Engineer.json) to the results directory. - Admin (Review): The admin goes to the "View Interview Results" tab, sees the new candidate, reviews their score and the AI summary, and then clicks "View Details" to see the full report. They can then "Accept" or "Reject" the candidate.