StaffAssist is an AI-powered HR tool that helps you analyze resumes using natural language questions. Just upload resumes, ask questions in plain English (like "Compare candidates' leadership experience"), and get detailed insights backed by evidence from the resumes. Built with Azure OpenAI and FastAPI.
Main interface showing resume analysis in action
StaffAssist is a powerful web application that leverages Azure OpenAI's Assistant API to analyze resumes and provide detailed candidate evaluations. The application enables HR professionals and recruiters to perform in-depth analysis of candidate profiles using natural language queries.
- Interactive Web Interface: Clean, modern UI built with FastAPI and Tailwind CSS
- Natural Language Queries: Ask questions about candidates in plain English
- Real-time Analysis: Get instant, AI-powered insights about candidates
- Comparative Analysis: Compare multiple candidates across various dimensions
- Evidence-based Responses: All analyses include citations from source resumes
- Stream Processing: Asynchronous response handling for better performance
- Sample Data: Includes demo resumes for immediate testing
- Backend: FastAPI, Python 3.8+
- AI/ML: Azure OpenAI Assistant API, Semantic Kernel
- Frontend: HTML5, Tailwind CSS, JavaScript
- Template Engine: Jinja2
- Development: Uvicorn (ASGI server)
- Python 3.8 or higher
- Azure OpenAI resource with Assistant API access
- Azure subscription
- Basic knowledge of Python and web development
-
Clone the Repository
git clone https://github.com/yourusername/staffassist.git cd staffassist
-
Create 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 Create a
.env
file in the project root:AZURE_OPENAI_API_KEY=your_api_key AZURE_OPENAI_ENDPOINT=your_endpoint AZURE_OPENAI_CHAT_COMPLETION_DEPLOYED_MODEL_NAME=your_deployment_name
-
Create Required Directories
mkdir templates mkdir resumes
-
Copy Template Files
- Copy the provided
index.html
to thetemplates
directory - Sample resumes will be automatically created in the
resumes
directory
- Copy the provided
-
Start the Server
python main.py
-
Access the Application
- Open your browser and navigate to
http://localhost:8000
- The application will be ready to use
- Open your browser and navigate to
Here are some example queries you can try:
-
Technical Competency Analysis
Create a technical competency matrix for both candidates focusing on: AI/ML expertise, cloud infrastructure, and leadership.
-
Project Experience
What are the most recent and relevant projects each candidate has led? Include team sizes and outcomes.
-
Deployment Experience
Compare both candidates' experience with ML systems deployment and provide evidence of successful implementations.
-
Comprehensive Evaluation
Create a final recommendation table with: top 3 strengths, growth areas, and risk factors for each candidate.
staffassist/
├── main.py # Main application file
├── requirements.txt # Project dependencies
├── .env # Environment variables
├── templates/
│ └── index.html # Web interface template
├── resumes/ # Resume storage directory
│ ├── john_doe.txt
│ └── jane_smith.txt
└── README.md # Project documentation
- Handles resume file operations
- Manages sample resume data
- Provides file path utilities
- Manages Azure OpenAI Assistant configuration
- Handles chat thread creation and management
- Processes analysis requests
- Manages response streaming
- Provides REST API endpoints
- Handles web interface rendering
- Manages asynchronous operations
The application can be configured through environment variables:
AZURE_OPENAI_API_KEY=your_api_key
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_OPENAI_CHAT_COMPLETION_DEPLOYED_MODEL_NAME=your_deployment_name
Additional configuration options in main.py
:
temperature
: Controls response creativity (0.0 - 1.0)base_directory
: Location for resume storage- Server host and port settings
-
API Key Protection
- Never commit
.env
file - Use secure key management in production
- Never commit
-
File Access
- Implement proper file access controls
- Validate file types and content
-
Input Validation
- Sanitize user inputs
- Implement rate limiting
For production deployment:
-
Environment Setup
- Use production-grade ASGI server
- Configure proper logging
- Set up monitoring
-
Security
- Enable HTTPS
- Implement authentication
- Set up proper CORS policies
-
Performance
- Configure proper worker count
- Implement caching if needed
- Set up load balancing
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.