File size: 4,694 Bytes
8ce5dba e734216 f8ec457 8ce5dba 00fcb16 8ce5dba 55c183c 8308b2a a890181 8308b2a 18b9ae2 8308b2a 18b9ae2 8308b2a 25e76a8 8308b2a c023b63 8308b2a c023b63 8308b2a c023b63 8308b2a e1f3632 8308b2a 47a7ea0 8308b2a 86e7a38 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 |
---
title: Automated Interview Filtering
emoji: π
colorFrom: red
colorTo: purple
sdk: gradio
sdk_version: "5.6.0"
app_file: src/app.py
pinned: true
---
[![Sync to Hugging Face hub](https://github.com/How-to-Train-Your-AI-Dragon/Automated-Interview-Filtering/actions/workflows/main.yml/badge.svg)](https://github.com/How-to-Train-Your-AI-Dragon/Automated-Interview-Filtering/actions/workflows/main.yml)
# 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
1. Clone the repository:
```bash
git clone https://github.com/How-to-Train-Your-AI-Dragon/Automated-Interview-Filtering.git
cd automated-interview-filtering
```
2. Create and activate virtual environment:
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
3. Install dependencies:
```bash
pip install -r requirements.txt
```
4. Set up environment variables:
```bash
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:
1. Install black and pre-commit:
```bash
pip install black pre-commit
```
2. Run pre-commit hooks:
```bash
pre-commit install
```
3. Run Black manually:
```bash
black .
```
4. Configure VS Code (optional):
```json
{
"python.formatting.provider": "black",
"editor.formatOnSave": true
}
```
Refer to the [Black documentation](https://black.readthedocs.io/en/stable/) for more information. Reference from the article [here](https://dev.to/emmo00/how-to-setup-black-and-pre-commit-in-python-for-auto-text-formatting-on-commit-4kka)
### Git Workflow
#### Creating a New Branch
```bash
# Update main branch
git checkout main
git pull origin main
# Create new feature branch
git checkout -b feature/your-feature-name
```
#### Making Changes
```bash
# 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
```bash
python -m src.presentation.gradio.interface
```
The interface will be available at `http://localhost:7860`
#### Running Tests
```bash
# 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
```env
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
1. Clone the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. 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`](LICENSE) for more information.
|