This project is an advanced Applicant Tracking System (ATS) designed to streamline and optimize recruitment processes. It leverages modern technologies for OCR-based resume parsing, advanced resume verification, candidate analytics, and more, all built on a scalable microservices architecture.
-
OCR & Resume Parsing:
Utilize OpenCV and Tesseract to extract and analyze text from resumes. Advanced parsing techniques, including NLP (with spaCy/Hugging Face), extract candidate details accurately. -
Candidate Analytics:
Analyze and score resumes based on skills, experience, and other relevant factors to help HR teams quickly identify top candidates. -
Integrated HR Workflow:
Support for candidate tracking, interview scheduling, and communication, all integrated within a unified platform. -
Scalable Microservices Architecture:
Designed to scale with Docker and Kubernetes, allowing for independent scaling of OCR processing, verification logic, and analytics modules. -
Full-Stack Integration:
A modern FastAPI backend serves both API endpoints and static frontend assets, while a responsive HTML/JavaScript frontend provides a seamless user experience.
advanced-ats-software/
├── backend/
│ ├── app/
│ │ ├── __init__.py # Package initializer
│ │ ├── main.py # FastAPI app entry point, mounts static files and includes API routes
│ │ ├── routes.py # API endpoints (e.g., /evaluate)
│ │ ├── ocr.py # OCR processing using OpenCV and Tesseract
│ │ ├── resume_verification.py # Advanced resume parsing and verification logic
│ │ └── models/
│ │ ├── __init__.py # Models package initializer
│ │ ├── resume.py # Pydantic model for resume data
│ │ └── user.py # Pydantic model for user data
│ ├── requirements.txt # Backend Python dependencies
│ └── Dockerfile # Dockerfile for containerizing the backend
├── frontend/
│ ├── index.html # Main HTML interface for resume upload and candidate evaluation
│ ├── js/
│ │ └── app.js # JavaScript for handling file uploads and API calls
│ └── css/
│ └── styles.css # Basic styling for the frontend
├── docker-compose.yml # Docker Compose configuration to orchestrate backend (and other services)
├── README.md # Project documentation (this file)
└── .gitignore # Git ignore file to exclude unnecessary files
-
Backend:
- Language: Python 3.x
- Framework: FastAPI
- Asynchronous Server: Uvicorn
- Modules: OpenCV, Tesseract (pytesseract), spaCy/NLP libraries
- Data Storage: PostgreSQL and MongoDB (for structured and unstructured data)
- Containerization: Docker, Docker Compose, Kubernetes (planned for production)
-
Frontend:
- HTML/CSS/JavaScript: Basic responsive design for file uploads and result display
- Static Assets: Served via FastAPI's static file integration
-
Backend Setup:
- Navigate to the
backend
directory:cd backend
- Install dependencies:
pip install -r requirements.txt
- Run the backend server with Uvicorn:
uvicorn app.main:app --host 0.0.0.0 --port 5000 --reload
- The backend and static frontend will be accessible at http://localhost:5000.
- Navigate to the
-
Frontend:
- The frontend files in the
frontend
folder are served automatically by FastAPI at the root URL.
- The frontend files in the
- Build and Run:
- From the project root, run:
docker-compose up --build
- This command builds the backend container and starts the service on port 5000.
- From the project root, run:
-
Advanced NLP Integration:
Enhance resume parsing with transformer models for semantic matching and candidate scoring. -
User Management & Authentication:
Implement user registration, login, and role-based access for HR teams. -
Analytics Dashboard:
Build an interactive dashboard for recruiters to visualize candidate data and analytics. -
Integration with External HR Systems:
Connect with third-party HR tools and job boards for seamless data exchange.
This project is licensed under the MIT License. See the LICENSE file for details.
Contributions are welcome! Feel free to fork this repository and submit pull requests for new features or bug fixes. Please ensure that you follow the established code style and include tests for any new functionality.