Skip to content

itslovepatel/Resume-ATS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

23 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

🎯 ATS Resume Analyzer

Live Demo Backend API GitHub Stars License: MIT

Free ATS Resume Checker Β· AI-Powered Resume Scanner Β· No Signup Required Β· Instant ATS Score

A modern, AI-powered ATS (Applicant Tracking System) Resume Analyzer that helps job seekers understand how their resume performs in automated screening systems. Supports 25+ industries including Software, Healthcare, Finance, Legal, Education, and more!

πŸ”— Try it Live β†’

ATS Resume Analyzer Preview

πŸ”— Deployments

✨ What It Does

Upload your resume (PDF or DOCX) and get instant, comprehensive analysis:

  • See your ATS compatibility score (0-100)
  • Understand what's working and what needs improvement
  • Get AI-powered suggestions tailored to your industry
  • Download a detailed PDF report

🏭 Supported Industries (25+)

Technology Business Healthcare Other
Software / IT Marketing Healthcare / Medical Legal
Data Science / AI Finance / Banking Pharmaceutical / Biotech Education
Cybersecurity Sales Real Estate
Design / UX Human Resources Hospitality
Operations / Supply Chain Retail / E-commerce
Consulting Government
Project Management Non-Profit

πŸš€ Features

  • ATS Compatibility Score: Get a comprehensive score (0-100) showing how well your resume will perform
  • Candidate Profile Extraction: Automatically extract name, email, phone, LinkedIn, and GitHub
  • Domain Detection: AI detects your primary job domain (IT, Data, Marketing, Finance, etc.)
  • Skills Analysis: Comprehensive breakdown of technical skills, frameworks, tools, and soft skills
  • Projects Review: Analyze project descriptions, technologies used, and impact statements
  • Experience Analysis: Evaluate work experience quality, action verbs usage, and metrics
  • Issue Detection: Identify formatting issues, missing sections, and ATS compatibility problems
  • Smart Suggestions: Get actionable recommendations to improve your ATS score
  • PDF Report Download: Download a professional PDF report of your analysis

πŸ–¨οΈ Local OCR Fallback (Scanned Resumes)

Resume-ATS now includes a fully local OCR fallback to handle scanned or image-based PDFs. Key points:

  • The backend attempts standard PDF text extraction first (PyPDF). OCR runs only when extraction quality is poor (heuristics: text length < 800 chars, word count < 150, missing email or phone).
  • OCR uses Tesseract via pytesseract and pdf2image to convert pages at 300 DPI and preprocess images (grayscale, contrast, sharpening) before OCR.
  • Safety controls: max 5 OCR pages, 15s OCR timeout, never OCR DOCX, never store OCR images, never overwrite original PDFs.
  • Safety controls: max 5 OCR pages, 30s OCR timeout, never OCR DOCX, never store OCR images, never overwrite original PDFs.
  • API responses include parsing_method ("standard" | "ocr" | "ocr_unavailable") and ocr_confidence ("low" | "medium" | "high").

This makes Resume-ATS more robust for scanned resumes while keeping all processing localβ€”no cloud OCR, no external APIs.

πŸ› οΈ Tech Stack

Frontend

  • Next.js 14
  • React 18
  • TypeScript
  • Tailwind CSS
  • Framer Motion
  • Lucide React Icons

Backend

  • Python 3.10+
  • FastAPI
  • PyMuPDF (PDF parsing)
  • python-docx (DOCX parsing)

πŸ“¦ Installation

Prerequisites

  • Node.js 18+
  • Python 3.10+
  • pip

Backend Setup

  1. Navigate to the backend directory:
cd backend
  1. Create a virtual environment:
python -m venv venv
  1. Activate the virtual environment:
  • Windows:
venv\Scripts\activate
  • macOS/Linux:
source venv/bin/activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Start the backend server:
uvicorn app.main:app --reload --port 8000

The API will be available at http://localhost:8000

Frontend Setup

  1. Navigate to the frontend directory:
cd frontend
  1. Install dependencies:
npm install
  1. Start the development server:
npm run dev

The application will be available at http://localhost:3000

πŸ“ Project Structure

Resume-ATS/
β”œβ”€β”€ backend/
β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”œβ”€β”€ main.py              # FastAPI application
β”‚   β”‚   β”œβ”€β”€ models/
β”‚   β”‚   β”‚   β”œβ”€β”€ __init__.py
β”‚   β”‚   β”‚   └── schemas.py       # Pydantic models
β”‚   β”‚   └── services/
β”‚   β”‚       β”œβ”€β”€ __init__.py
β”‚   β”‚       β”œβ”€β”€ resume_parser.py # PDF/DOCX parsing
β”‚   β”‚       β”œβ”€β”€ skill_extractor.py
β”‚   β”‚       β”œβ”€β”€ domain_classifier.py
β”‚   β”‚       └── ats_scorer.py    # ATS scoring logic
β”‚   └── requirements.txt
β”‚
β”œβ”€β”€ frontend/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   β”œβ”€β”€ app/
β”‚   β”‚   β”‚   β”œβ”€β”€ globals.css
β”‚   β”‚   β”‚   β”œβ”€β”€ layout.tsx
β”‚   β”‚   β”‚   └── page.tsx
β”‚   β”‚   β”œβ”€β”€ components/
β”‚   β”‚   β”‚   β”œβ”€β”€ Header.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Hero.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ HowItWorks.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Features.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ UploadSection.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ LoadingOverlay.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ ResultsDashboard.tsx
β”‚   β”‚   β”‚   β”œβ”€β”€ Footer.tsx
β”‚   β”‚   β”‚   └── results/
β”‚   β”‚   β”‚       β”œβ”€β”€ ScoreCircle.tsx
β”‚   β”‚   β”‚       β”œβ”€β”€ ScoreBreakdownCard.tsx
β”‚   β”‚   β”‚       β”œβ”€β”€ SkillsCard.tsx
β”‚   β”‚   β”‚       β”œβ”€β”€ ExperienceCard.tsx
β”‚   β”‚   β”‚       β”œβ”€β”€ ProjectsCard.tsx
β”‚   β”‚   β”‚       β”œβ”€β”€ KeywordsCard.tsx
β”‚   β”‚   β”‚       β”œβ”€β”€ IssuesCard.tsx
β”‚   β”‚   β”‚       └── SuggestionsCard.tsx
β”‚   β”‚   └── types/
β”‚   β”‚       └── index.ts
β”‚   β”œβ”€β”€ package.json
β”‚   β”œβ”€β”€ tailwind.config.js
β”‚   └── next.config.js
β”‚
└── README.md

🎯 ATS Scoring Logic

The ATS score is calculated based on:

Factor Weight
Keyword Relevance 20%
Section Completeness 20%
Formatting Score 15%
Skill Relevance 20%
Experience Clarity 15%
Project Impact 10%

Score Categories:

  • 80-100: Excellent - Resume is well-optimized for ATS
  • 60-79: Good - Minor improvements needed
  • 40-59: Needs Improvement - Significant optimization required
  • 0-39: Poor - Major restructuring needed

πŸ“‘ API Endpoints

POST /api/analyze

Analyze a resume file and return comprehensive ATS analysis.

Request:

  • Content-Type: multipart/form-data
  • Body: file (PDF or DOCX, max 5MB)

Response:

{
  "success": true,
  "candidate": {
    "name": "John Doe",
    "email": "john@example.com",
    "phone": "+1-555-123-4567",
    "location": "New York, NY"
  },
  "ats_score": 85,
  "score_category": "Excellent",
  "domain": {
    "primary": "Software / IT",
    "confidence": 0.92
  },
  "skills": {...},
  "experience": {...},
  "projects": [...],
  "issues": [...],
  "suggestions": [...]
}

GET /health

Health check endpoint.

πŸ”’ Security

  • Files are processed in memory and immediately deleted after analysis
  • No data is stored on the server
  • No user tracking or analytics
  • No signup required

🚧 Future Features

  • User authentication and resume history
  • Job description matching
  • AI-powered resume rewriting
  • Recruiter dashboard
  • Resume comparison
  • Industry-specific scoring

πŸ“„ License

MIT License - feel free to use this project for personal or commercial purposes.

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.


Built with ❀️ for job seekers everywhere