| | --- |
| | title: Axion |
| | emoji: π€ |
| | colorFrom: blue |
| | colorTo: purple |
| | sdk: docker |
| | app_file: app.py |
| | pinned: false |
| | --- |
| | |
| | # Axion - AI-Powered Hiring Platform |
| |
|
| | Axion is a comprehensive hiring automation system that streamlines the entire recruitment process from resume parsing to interview scheduling. Built with Flask and powered by Google's Gemini AI models, it helps organizations efficiently match candidates to job requirements and conduct automated evaluations. |
| |
|
| | ## What it does |
| |
|
| | The platform handles the complete hiring workflow: |
| |
|
| | - **Resume Processing**: Automatically parses PDF resumes and converts them into structured data |
| | - **Smart Matching**: Uses semantic search to find the best candidates for job descriptions |
| | - **Interview Management**: Generates technical and behavioral interview questions |
| | - **Automated Evaluation**: Scores candidate responses with detailed feedback |
| | - **Scheduling System**: Manages interview slots and sends automated email invitations |
| |
|
| | ## Getting Started |
| |
|
| | ### Prerequisites |
| |
|
| | - Python 3.8+ |
| | - PostgreSQL database (for vector embeddings) |
| | - MySQL database (for user management) |
| | - Google AI API key |
| |
|
| | ### Installation |
| |
|
| | 1. Clone the repository |
| | ```bash |
| | git clone <repository-url> |
| | cd Axion |
| | ``` |
| |
|
| | 2. Install dependencies |
| | ```bash |
| | pip install -r requirements.txt |
| | ``` |
| |
|
| | 3. Set up your environment variables in `.env`: |
| | ``` |
| | GOOGLE_API_KEY=your_google_api_key |
| | API_KEY=your_embedding_api_key |
| | Connection_String=your_postgresql_connection_string |
| | Collection_Name=Resume |
| | Host=your_mysql_host |
| | Port=your_mysql_port |
| | User=your_mysql_user |
| | Password=your_mysql_password |
| | DB_Name=your_database_name |
| | app_password=your_email_app_password |
| | ``` |
| |
|
| | 4. Create the resume directory |
| | ```bash |
| | mkdir resume |
| | ``` |
| |
|
| | 5. Run the application |
| | ```bash |
| | python app.py |
| | ``` |
| |
|
| | ## API Endpoints |
| |
|
| | ### Resume Processing |
| | - `POST /parse` - Processes all PDF resumes in the `/resume` folder and creates embeddings |
| |
|
| | ### Candidate Matching |
| | - `POST /match` - Finds best matching candidates for a job description |
| | ```json |
| | { |
| | "job_description": "Software Engineer position requiring Python...", |
| | "candidates": 5 |
| | } |
| | ``` |
| |
|
| | ### Interview Management |
| | - `POST /interview1` - Get interview questions (0 for behavioral, 1 for technical) |
| | - `POST /interview` - Update question sets |
| | - `POST /evaluate` - Score candidate responses |
| |
|
| | ### Scheduling |
| | - `POST /schedule` - Schedule interview slots and send emails |
| | ```json |
| | { |
| | "date": "2024-03-15", |
| | "time": "09:00", |
| | "length": 30 |
| | } |
| | ``` |
| |
|
| | ### Authentication |
| | - `POST /login-user` - Candidate login |
| | - `POST /login-org` - Organization login |
| |
|
| | ## How it works |
| |
|
| | 1. **Resume Parsing**: Upload PDF resumes to the `/resume` folder. The system extracts text and structures it into JSON format with fields like experience, skills, education, etc. |
| |
|
| | 2. **Embedding Creation**: Structured resumes are converted to vector embeddings using Google's text-embedding model and stored in PostgreSQL with pgvector. |
| |
|
| | 3. **Job Matching**: When you provide a job description, it gets structured and embedded. The system then finds the most similar candidate profiles using semantic search. |
| |
|
| | 4. **Interview Process**: The platform generates relevant questions based on the role type and evaluates responses using AI scoring with detailed feedback. |
| |
|
| | 5. **Scheduling**: Automatically creates interview time slots, manages candidate data in MySQL, and sends professional email invitations. |
| |
|
| | ## Project Structure |
| |
|
| | ``` |
| | Axion/ |
| | βββ app.py # Main Flask application |
| | βββ Models.py # Google Gemini AI integration |
| | βββ Parser.py # PDF resume parsing |
| | βββ Embedder.py # Vector embedding management |
| | βββ Evaluator.py # Interview question generation and scoring |
| | βββ Scheduler.py # Email scheduling system |
| | βββ DB.py # Database connections (PostgreSQL + MySQL) |
| | βββ requirements.txt # Python dependencies |
| | βββ Dockerfile # Container configuration |
| | βββ resume/ # Directory for PDF resumes |
| | ``` |
| |
|
| | ## Database Setup |
| |
|
| | The system uses two databases: |
| | - **PostgreSQL**: Stores vector embeddings for semantic search |
| | - **MySQL**: Manages user accounts, scores, and scheduling data |
| |
|
| | Make sure both databases are properly configured and accessible with the credentials in your `.env` file. |
| |
|
| | ## Contributing |
| |
|
| | Feel free to submit issues and pull requests. The codebase is designed to be modular, so you can easily extend functionality or integrate with other systems. |
| |
|
| | ## License |
| |
|
| | This project is licensed under the MIT License. |