File size: 3,688 Bytes
d2b7a80
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
---
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

<p align="center">
  <b>An AI-powered Applicant Tracking System that scores resumes against job descriptions using semantic similarity.</b><br>
  Built with FastAPI, LangChain, and Hugging Face β€” deployable as a Docker Space.
</p>

---

## 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

1. Go to [huggingface.co/new-space](https://huggingface.co/new-space)
2. Choose **Docker** as the SDK
3. Pick a name (e.g. `ats-resume-intelligence`)
4. Hardware: **CPU upgrade** (recommended for Sentence Transformers)

### 2. Push this repository

```bash
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](https://huggingface.co/settings/tokens)) 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:

```env
HF_TOKEN=your_huggingface_token_here
```

### Start

```bash
docker compose up --build
```

Open **http://localhost:7860**

---

## API Endpoints

### `POST /predict/ats` β€” JSON

```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

```json
{
  "semantic_score": 0.82,
  "keyword_score": 0.74,
  "final_ats_score": 0.79,
  "summary": "..."
}
```

### `GET /health` β€” health check

---

## Development (without Docker)

```bash
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:

```js
const API = 'http://localhost:7860';
```

---

## Environment variables

| Variable | Description |
| -------- | ----------- |
| `HF_TOKEN` | Hugging Face API token (Space secret or `.env`) |

---

## License

MIT License