AI-powered recruitment platform that intelligently matches candidates with job opportunities through advanced natural language processing and AI algorithms.
- AI-Powered Matching: Uses OpenAI embedding models to match candidates with suitable job openings
- Smart Resume Processing: Automatically extracts skills, experience, and qualifications from resumes
- Candidate Persona Generation: Creates detailed candidate profiles using AI
- Recruiter Collaboration: Share candidates and jobs with team members
- Advanced Role-Based Access Control: Granular permission system with administrator, senior recruiter, and recruiter roles
- Cloud Storage Integration: Store candidate resumes in Google Cloud Storage
- Responsive Design: Modern Material Design-inspired UI
- Bulk Resume Upload: Process multiple candidate resumes at once
- Job Token System: Intelligently groups similar job postings for improved analytics
- Candidate Rating System: Collect and manage recruiter feedback on candidates
The platform includes a sophisticated data sharing system that allows recruiters to collaborate effectively:
- Sharing During Invitation: Administrators and Senior Recruiters can enable data sharing when inviting new team members
- Granular Permissions: Choose to share job listings, candidates, or both
- Visual Indicators: Shared resources display "Shared by [Name]" to clearly indicate ownership
- Filtering Options: Dedicated tabs for filtering between owned and shared resources
- Dynamic Updates: Changes to shared resources are instantly visible to all team members with access
- Python 3.9+
- PostgreSQL database
- Google Cloud Storage account (optional, falls back to local storage)
- OpenAI API key
-
Clone the repository
git clone https://github.com/yourusername/ai-recruiter-pro.git cd ai-recruiter-pro
-
Set up a virtual environment
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
-
Install dependencies
pip install -r requirements.txt # For exact versions # OR pip install -r requirements-app.txt # For minimum versions
-
Configure environment variables
cp .env.example .env # Edit .env with your configuration
-
Set up the database
python migrations.py
-
Run the application
python main.py
-
Access the application Open your browser and go to: http://localhost:5000
See .env.example
for a complete list of configuration options. The most important ones are:
Variable | Description |
---|---|
DATABASE_URL |
PostgreSQL database connection string |
OPENAI_API_KEY |
Your OpenAI API key for AI features |
GOOGLE_APPLICATION_CREDENTIALS |
Path to GCP service account credentials file |
GCS_BUCKET_NAME |
Google Cloud Storage bucket name for resume storage |
SECRET_KEY |
Secret key for session encryption |
DEMO_PASSWORD |
Password for the demo admin account (improves security) |
This application can use Google Cloud Storage to store candidate resumes, making them accessible from anywhere and reducing local storage needs:
- Create a Google Cloud Project
- Create a service account with Storage Admin permissions
- Download the service account credentials JSON file
- Set the
GOOGLE_APPLICATION_CREDENTIALS
environment variable to the path of this file - Create a bucket and set the
GCS_BUCKET_NAME
environment variable
The application will automatically fall back to local storage if GCS credentials are not provided.
After installation, create an admin account:
python create_admin.py --email [email protected] --password SecurePassword123
You can add sample data to test the application:
python add_test_data.py
- Keep your
.env
file secure and never commit it to version control - Store the Google Cloud credentials file securely
- Regularly rotate your API keys and credentials
- Use strong passwords for database and admin accounts
- Always set the
DEMO_PASSWORD
environment variable to a secure value - Never expose login credentials in UI elements or public-facing pages
- Set up proper HTTPS in production
The application implements a three-tier role hierarchy:
- Administrator: Full system access with user management capabilities
- Senior Recruiter: Enhanced permissions for team management, with ability to invite users and share data
- Recruiter: Standard permissions for candidate and job management
Each role has specific permissions:
Feature | Recruiter | Senior Recruiter | Administrator |
---|---|---|---|
View Candidates | ✓ | ✓ | ✓ |
Rate Candidates | ✓ | ✓ | ✓ |
Manage Jobs | ✓ | ✓ | ✓ |
Bulk Upload | ✗ | ✓ | ✓ |
Invite Users | ✗ | ✓ | ✓ |
Manage Teams | ✗ | ✓ | ✓ |
System Config | ✗ | ✗ | ✓ |
Data Analytics | ✗ | ✓ | ✓ |
The application uses a special security mechanism for the demo admin account:
- The password for the demo admin account (
[email protected]
) is controlled by theDEMO_PASSWORD
environment variable - This variable is loaded from the
.env
file at startup - The application automatically synchronizes the demo account password with this environment variable
- Regular user accounts (non-demo) continue to use standard password management
- This approach ensures that demo credentials can be centrally managed without hardcoding
- The demo account password is automatically reset to match the environment variable upon application startup
For production deployment:
- Set
FLASK_ENV=production
andDEBUG=False
- Use a production WSGI server like Gunicorn:
gunicorn --bind 0.0.0.0:5000 main:app
- Set up proper HTTPS with a valid SSL certificate
- Configure database connection pooling
- Consider using a reverse proxy like Nginx
This project is licensed under the MIT License - see the LICENSE file for details.
Contributions, issues, and feature requests are welcome! Feel free to check the issues page.