Skip to content

krishn1122/Smart-ATS-Checker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Smart ATS - AI-Powered Resume Analyzer

An intelligent Application Tracking System (ATS) that uses Google's Gemini AI to analyze resumes against job descriptions, providing comprehensive feedback on compatibility, formatting, and optimization suggestions.

📸 Dashboard Screenshots

Home Page - Resume Upload

Home Page

Analysis Results - Comprehensive Scoring

Analysis Results

Detailed Feedback - Grammar & Format Issues

Detailed Feedback

Analytics Dashboard - Score Distribution

Analytics Dashboard

✨ Features

Core Analysis

  • AI-Powered Analysis - Leverages Google Gemini 1.5 Flash for intelligent resume evaluation
  • JD Match Scoring - Calculates percentage match between resume and job description
  • Missing Keywords Detection - Identifies important keywords from JD missing in resume
  • Profile Summary - AI-generated professional summary of candidate profile

Quality Checks

  • Grammar Analysis - Detects and highlights grammatical errors
  • Word Repetition Detection - Identifies overused words and phrases
  • Format Issues - Checks for formatting problems and inconsistencies
  • Readability Score - Calculates resume readability using industry-standard metrics

User Experience

  • Multi-Format Support - Accepts both PDF and DOCX resume formats
  • Real-time Processing - Background task processing with status polling
  • Professional UI - Modern, responsive design with Bootstrap 5
  • Analytics Dashboard - Visual insights into analysis history and score distribution
  • Caching System - Improved performance for repeated analyses

🏗️ Architecture

Technology Stack

Backend (FastAPI)

  • FastAPI 0.104.1 - Modern, fast web framework
  • Uvicorn - ASGI server
  • Google Generative AI (Gemini 1.5 Flash)
  • PyPDF2 & python-docx for document parsing
  • Pydantic for data validation

Frontend (Flask)

  • Flask 3.0.0 - Web framework
  • Bootstrap 5 - Responsive UI
  • Chart.js - Data visualization
  • AOS - Scroll animations

AI & Processing

  • Google Gemini AI API
  • NLTK for text processing
  • Textstat for readability metrics

Project Structure

Smart-ATS-Checker/
├── backend/                    # FastAPI Backend
│   ├── app/
│   │   ├── __init__.py
│   │   └── main.py            # API endpoints
│   ├── models/
│   │   ├── __init__.py
│   │   └── ats_models.py      # Pydantic models
│   ├── services/
│   │   ├── __init__.py
│   │   └── ai_service.py      # AI analysis service
│   └── utils/
│       ├── __init__.py
│       └── document_parser.py # Document parsing
├── frontend/                   # Flask Frontend
│   ├── app.py                 # Flask application
│   ├── static/
│   │   ├── css/
│   │   │   └── style.css
│   │   └── js/
│   │       └── main.js
│   └── templates/
│       ├── base.html
│       ├── index.html
│       ├── results.html
│       ├── dashboard.html
│       └── about.html
├── Dashboard/                  # UI Screenshots
│   ├── 1.png
│   ├── 2.png
│   ├── 3.png
│   └── 4.png
├── logs/                       # Application logs
├── uploads/                    # Temporary file storage
├── .env                        # Environment variables (not committed)
├── .env.example               # Environment template
├── config.py                  # Configuration management
└── requirements.txt           # Python dependencies

🚀 Getting Started

Prerequisites

  • Python 3.8 or higher
  • Google Gemini API key (Get it here)
  • pip package manager

Installation

  1. Clone the repository
git clone https://github.com/yourusername/Smart-ATS-Checker.git
cd Smart-ATS-Checker
  1. Create virtual environment
python -m venv venv

# Windows
venv\Scripts\activate

# Linux/Mac
source venv/bin/activate
  1. Install dependencies
pip install -r requirements.txt
  1. Configure environment variables
# Copy the example file
cp .env.example .env

# Edit .env and add your API key
GOOGLE_API_KEY=your_google_api_key_here
SECRET_KEY=your_generated_secret_key_here

Generate a secure SECRET_KEY:

python -c "import secrets; print(secrets.token_hex(32))"

Running the Application

Option 1: Run Both Services Manually

Terminal 1 - Backend:

cd backend
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000

Terminal 2 - Frontend:

cd frontend
python app.py

Option 2: Access the Application

📊 Scoring Algorithm

The Smart ATS uses a comprehensive scoring system:

Overall Score Calculation

Total Score = (JD Match × 0.70) + (Other Factors × 0.30)

JD Match (70%)

  • Keyword matching between resume and job description
  • Skill alignment
  • Experience relevance

Other Factors (30%)

  • Grammar quality (10%)
  • Format consistency (10%)
  • Readability score (10%)

Score Tiers

  • 90-100%: Excellent - Highly optimized for ATS
  • 75-89%: Good - Well-aligned with requirements
  • 60-74%: Fair - Needs improvement
  • Below 60%: Poor - Significant optimization needed

🔧 API Endpoints

POST /api/analyze-resume

Analyze a resume against a job description

Request:

  • resume_file: File (PDF or DOCX)
  • job_description: String

Response:

{
  "success": true,
  "message": "Analysis started",
  "data": {
    "analysis_id": "uuid",
    "status": "processing",
    "estimated_time": "30-60 seconds"
  }
}

GET /api/analysis/{analysis_id}/status

Check analysis status

Response:

{
  "analysis_id": "uuid",
  "status": "completed",
  "timestamp": "2024-01-01T12:00:00"
}

GET /api/analysis/{analysis_id}

Get complete analysis results

Response:

{
  "success": true,
  "message": "Analysis result retrieved",
  "data": {
    "id": "uuid",
    "percentage_score": 85,
    "jd_match": 88,
    "missing_keywords": ["Python", "Docker"],
    "profile_summary": "Experienced software engineer...",
    "grammar_mistakes": [...],
    "word_repetitions": [...],
    "format_issues": [...],
    "readability_score": 65,
    "timestamp": "2024-01-01T12:00:00",
    "status": "completed"
  }
}

GET /api/analytics

Get analytics data for dashboard

⚙️ Configuration

Environment Variables

Variable Description Default
GOOGLE_API_KEY Google Gemini API key Required
SECRET_KEY Flask session secret Required
BACKEND_URL Backend API URL http://localhost:8000
FRONTEND_URL Frontend URL http://localhost:5000
MAX_CONTENT_LENGTH Max file upload size 16777216 (16MB)
ANALYSIS_TIMEOUT Analysis timeout 300 seconds
RATE_LIMIT API rate limit 60 requests/min
LOG_LEVEL Logging level INFO

See .env.example for complete configuration options.

🧪 Testing

Run the setup validation:

python test_setup.py

Run scoring algorithm tests:

python test_scoring.py

📝 Usage Guide

  1. Upload Resume: Navigate to home page and upload your resume (PDF/DOCX)
  2. Paste Job Description: Copy and paste the target job description
  3. Analyze: Click "Analyze Resume" to start processing
  4. View Results: Wait for analysis to complete (30-60 seconds)
  5. Review Feedback: Check score, missing keywords, and improvement suggestions
  6. Dashboard: View analytics and historical analysis data

🔒 Security Features

  • Environment variable protection for API keys
  • CORS configuration for secure API access
  • File type validation (PDF/DOCX only)
  • File size limits (16MB max)
  • Rate limiting on API endpoints
  • Secure session management

🐛 Troubleshooting

Common Issues

ModuleNotFoundError

# Ensure virtual environment is activated
pip install -r requirements.txt

API Key Error

# Verify .env file exists and contains valid GOOGLE_API_KEY
cat .env

Port Already in Use

# Change port in command
uvicorn app.main:app --port 8001  # Backend
# Or modify frontend/app.py for frontend port

File Upload Fails

  • Check file size (max 16MB)
  • Verify file format (PDF or DOCX only)
  • Ensure file is not corrupted

🤝 Contributing

Contributions are welcome! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/AmazingFeature)
  3. Commit your changes (git commit -m 'Add some AmazingFeature')
  4. Push to the branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • Google Gemini AI for powerful language model
  • FastAPI for excellent async framework
  • Flask for simple and elegant frontend framework
  • Bootstrap for responsive UI components
  • Chart.js for beautiful data visualizations

📧 Contact

For questions or support, please open an issue on GitHub.


Note: This application is for educational and professional development purposes. Always review AI-generated suggestions critically and ensure your resume accurately represents your skills and experience.

About

AI-powered Application Tracking System (ATS) that analyzes resumes against job descriptions using Google's Gemini AI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors