A newer version of the Gradio SDK is available:
5.9.1
title: Automated Interview Filtering
emoji: π
colorFrom: red
colorTo: purple
sdk: gradio
sdk_version: 5.6.0
app_file: src/app.py
pinned: true
Automated Interview Filtering
Overview
The Automated Interview Filtering System is an AI-powered tool that helps HR professionals streamline their interview process through automated analysis of video interviews, resumes, and candidate responses. The system leverages multiple AI technologies including emotion detection, speech-to-text conversion, and natural language processing to provide comprehensive candidate assessments.
Architecture
The project follows a clean, layered monolith architecture:
src/
βββ domain/ # Core business logic and entities
βββ service/ # Use cases and business rules
βββ utils/ # Helper functions and utilities
βββ app.py # Frontend interface
tests/
βββ integration/ # Integration tests
Key Components
- Domain Layer: Contains business entities, value objects, and enums
- Service Layer: Core business logic and use cases
- LangChain for LLM integration
- DeepFace for emotion analysis
- Google Speech-to-Text for audio transcription
- LlamaParse for resume parsing
- Frontend Interface: Gradio-based user interface
- Utils: Helper functions and utilities
Technologies Used
- Frontend: Gradio
- AI/ML:
- LangChain for LLM operations
- DeepFace for facial emotion analysis
- Google Speech-to-Text API
- LlamaParse for resume parsing
- Development Tools:
- Python 3.9+
- Black for code formatting
- pytest for testing
- pre-commit hooks
Prerequisites
- Python 3.9 or higher
- pip package manager
- Git
Installation
- Clone the repository:
git clone https://github.com/How-to-Train-Your-AI-Dragon/Automated-Interview-Filtering.git
cd automated-interview-filtering
- 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
- Set up environment variables:
cp .env.example .env
# Edit .env with your API keys and configurations
Development Setup
Code Formatting
We use Black for code formatting. To set up:
- Install black and pre-commit:
pip install black pre-commit
- Run pre-commit hooks:
pre-commit install
- Run Black manually:
black .
- Configure VS Code (optional):
{
"python.formatting.provider": "black",
"editor.formatOnSave": true
}
Refer to the Black documentation for more information. Reference from the article here
Git Workflow
Creating a New Branch
# Update main branch
git checkout main
git pull origin main
# Create new feature branch
git checkout -b feature/your-feature-name
Making Changes
# Stage changes
git add .
# Commit changes
git commit -m "feat: your descriptive commit message"
# Push to remote
git push origin feature/your-feature-name
Running the Application
Starting Gradio Interface
python -m src.presentation.gradio.interface
The interface will be available at http://localhost:7860
Running Tests
# Run all tests
pytest
# Run specific test file
pytest tests/unit/test_interview_analyzer.py
# Run with coverage
pytest --cov=src tests/
Configuration
Environment Variables
OPENAI_API_KEY=your_key_here
GOOGLE_SPEECH_KEY=your_key_here
LLAMAPARSE_API_KEY=your_key_here
Supported File Formats
- Video: MP4, AVI, MOV, WMV
- Resume: PDF, DOCX, DOC, TXT
Error Handling
The system implements comprehensive error handling for:
- Invalid file formats
- API failures
- Resource limitations
- Processing errors
Contributing
- Clone the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
Commit Message Format
[<type>]: <subject>
[<body>]
[<footer>]
Types:
- feat: New feature
- fix: Bug fix
- docs: Documentation
- style: Formatting
- refactor: Code restructuring
License
This project is licensed under the MIT License. See LICENSE
for more information.