metadata
title: ATS Resume Intelligence Engine
emoji: π
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
license: mit
suggested_hardware: cpu-upgrade
ATS Intelligence Engine
An AI-powered Applicant Tracking System that scores resumes against job descriptions using semantic similarity.
Built with FastAPI, LangChain, and Hugging Face β deployable as a Docker Space.
Features
- Upload resume & job description (PDF or text)
- Extract text using PyMuPDF
- Semantic similarity via Sentence Transformers
- Keyword matching for skill overlap
- Final ATS score with LangChain + Hugging Face LLM feedback
- REST API built with FastAPI
- Docker Space ready (port 7860)
Tech Stack
| Layer | Technology |
|---|---|
| Backend | FastAPI, Uvicorn |
| ML / Embeddings | Sentence Transformers, Scikit-learn |
| LLM / Feedback | LangChain, Hugging Face Inference API |
| PDF Parsing | PyMuPDF |
| Frontend | HTML / JS (served by FastAPI) |
| Deployment | Docker, Hugging Face Spaces |
Deploy on Hugging Face Spaces (Docker)
1. Create a new Space
- Go to huggingface.co/new-space
- Choose Docker as the SDK
- Pick a name (e.g.
ats-resume-intelligence) - Hardware: CPU upgrade (recommended for Sentence Transformers)
2. Push this repository
git remote add space https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
git push space main
Or clone the empty Space repo and copy these files into it, then commit and push.
3. Add your Hugging Face token (required for AI feedback)
In the Space β Settings β Repository secrets, add:
| Secret name | Value |
|---|---|
HF_TOKEN |
Your Hugging Face access token (create one) with Inference permission |
The Space will rebuild automatically after you push or add secrets.
4. Open your live app
Your Space URL will be:
https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME
The UI and API run on the same origin (port 7860), so no CORS or proxy setup is needed.
Run locally with Docker
Prerequisites
- Docker
- Hugging Face API token
Setup
Create a .env file:
HF_TOKEN=your_huggingface_token_here
Start
docker compose up --build
API Endpoints
POST /predict/ats β JSON
{
"resume_text": "...",
"job_description": "..."
}
POST /predict/ats/upload β multipart
| Field | Type | Description |
|---|---|---|
| resume_pdf | File | Resume PDF |
| resume_text | string | Resume text |
| jd_pdf | File | Job description PDF |
| job_description | string | Job description text |
Response
{
"semantic_score": 0.82,
"keyword_score": 0.74,
"final_ats_score": 0.79,
"summary": "..."
}
GET /health β health check
Development (without Docker)
pip install -r requirements.txt
set HF_TOKEN=your_token_here
uvicorn main:app --reload --port 7860
For local dev without the Space URL, in Frontend/app.js set:
const API = 'http://localhost:7860';
Environment variables
| Variable | Description |
|---|---|
HF_TOKEN |
Hugging Face API token (Space secret or .env) |
License
MIT License