An AI-powered tool that evaluates how well a resume matches a job description using Gemini 2.0 Flash, built with FastAPI (Backend) and React.js (Frontend).
AI_ATS_SCANNER/
├── backend/ # FastAPI + Gemini Flash + PostgreSQL
├── frontend/ # React App with UI + Animations
-
- Docker & Docker Compose installed
-
- Gemini API Key from Google AI Studio
-
- PostgreSQL credentials (used inside Docker by default)
backend/
├── app/
├── main.py
├── database.py
├── utils.py
├── models.py
├── requirements.txt
├── Dockerfile
├── dcoker-compose.yml
├── .env
Create a .env file in the backend/ folder:
GEMINI_API_KEY=your_gemini_api_key
DATABASE_URL=postgresql://postgres:postgres@db:5432/ats_dbFrom the project root AI_ATS_SCANNER/, run:
cd backend
docker build -t ats-backend .
docker run -d -p 8000:8000 --env-file .env ats-backend✅ Your backend will now be available at:
http://localhost:8000
-
- Node.js and npm installed
frontend/
├── src/
│ └── App.js, App.css, etc.
├── package.json
cd frontend
npm install
npm start✅ Frontend runs at
http://localhost:3000and connects to the backend onhttp://localhost:8000
Endpoint , Method ,Description
/evaluate-resume , POST ,Accepts resume (PDF) and JD (text), returns ATS score
-
- Frontend: React.js, Framer Motion, Confetti, Lucide Icons
-
- Backend: FastAPI, PyMuPDF (PDF Parsing), PostgreSQL, Gemini Flash API
-
- Database: PostgreSQL (via Docker)
{
"ats_score": 88,
"message": "ATS score successfully calculated.",
"record_id": 69
}-
- Resume vs Job Description Keyword Matching
-
- Score out of 100 using Gemini Flash
-
- Beautiful animated UI (confetti for success, emoji for fail)
-
- Data stored in PostgreSQL for future LLM training
So many candidates apply without knowing how ATS systems work. This tool bridges that gap — giving real-time, AI-powered feedback before hitting "Apply."