Skip to content

AI-powered Resume Analyzer & Job Recommendation System

License

Notifications You must be signed in to change notification settings

Dhruvrana8/ResumeMatchAI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

18 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ResumeMatchAI β€” ATS Resume Scanner

Python Version Streamlit spaCy License

🎯 Overview

ResumeMatchAI is an advanced Applicant Tracking System (ATS) resume scanner that analyzes resumes against job descriptions to provide comprehensive compatibility scores and actionable improvement recommendations. Using natural language processing and machine learning, it helps job seekers optimize their resumes for better ATS performance.

✨ Key Features

  • πŸ” Advanced ATS Scoring: Comprehensive scoring algorithm with 7 weighted factors
  • πŸ€– AI-Powered Analysis: Meta Llama 3.2-1B model for professional HR-level insights
  • πŸ“„ Direct Document Analysis: Optional OCR-based file processing (experimental)
  • πŸ“Š Keyword Analysis: Intelligent keyword matching with similarity detection
  • πŸ‘€ Enhanced Personal Info Extraction: Accurate name, email, phone, and location detection
  • 🎯 Smart Recommendations: Prioritized, actionable feedback for resume improvement
  • πŸ“„ Multi-Format Support: PDF and DOCX resume processing
  • 🌐 Web-Friendly Interface: Clean Streamlit web application
  • ⚑ Real-time Analysis: Instant results with detailed breakdowns

πŸš€ Quick Start

Prerequisites

  • Python 3.11 or higher
  • pip package manager
  • Virtual environment (recommended)

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/ResumeMatchAI.git
    cd ResumeMatchAI/streamlit_app
  2. Create and activate virtual environment

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. Install dependencies

    pip install -r requirements.txt
  4. Download spaCy language model

    python -m spacy download en_core_web_sm

Running the Application

streamlit run app.py

Open your browser to http://localhost:8501 to access the application.

πŸ“‹ How It Works

1. Job Description Input

Paste the complete job description you're applying for. The system will extract key requirements and skills.

2. Resume Upload

Upload your resume in PDF or DOCX format. The system supports text extraction from various document formats.

3. ATS Analysis

The system performs comprehensive analysis including:

  • Keyword Matching: Exact and similar keyword detection
  • Personal Information: Name, contact details, and location extraction
  • Skills Alignment: Technical skills assessment
  • Experience Relevance: Work experience analysis
  • Formatting Quality: Resume structure evaluation

4. AI-Powered Profile Extraction (Optional)

Extract structured user profile from your resume using Meta's Llama 3.2-1B model:

  • Direct File Processing: Analyzes your resume file with OCR-enhanced extraction
  • Structured Data Extraction: Personal info, skills, experience, education, certifications, projects
  • PostgreSQL Storage: Automatically saves extracted profiles to PostgreSQL
  • JSON Format: Clean, structured data ready for integration

5. Results & Recommendations

Receive a detailed ATS compatibility report with:

  • Overall score (0-100) with letter grade
  • Component breakdown with visual progress bars
  • Prioritized improvement recommendations
  • Pass rate predictions
  • Optional AI analysis with professional insights

🎯 ATS Scoring System

Scoring Components & Weights

Component Weight Description
Keyword Match 40% Exact and similar keyword detection
Keyword Density 15% Balanced keyword distribution
Personal Info 15% Contact information completeness
Skills Alignment 10% Technical skills matching
Experience Match 10% Relevant experience assessment
Education Match 5% Qualifications alignment
Formatting 5% Resume structure quality

Score Interpretation

  • 90-100 (A): Exceptional - 95%+ chance of passing ATS
  • 80-89 (B): Excellent - 85%+ chance of passing ATS
  • 70-79 (C): Very Good - 75%+ chance of passing ATS
  • 60-69 (D): Good - 65%+ chance of passing ATS
  • 50-59 (F): Fair - 55%+ chance of passing ATS
  • Below 50: Poor - Significant improvements needed

πŸ› οΈ Technology Stack

Core Technologies

  • Python 3.11+: Primary programming language
  • Streamlit: Web application framework
  • spaCy: Natural language processing
  • NLTK: Text processing and stemming

Libraries

  • pdfplumber: PDF text extraction
  • python-docx: DOCX file processing
  • Pandas: Data manipulation
  • NumPy: Numerical computations

Machine Learning

  • Transformers: For advanced NLP tasks
  • Torch: Deep learning framework
  • Accelerate: Model optimization
  • Meta Llama 3.2-1B: AI-powered resume analysis

πŸ“ Project Structure

ResumeMatchAI/
β”œβ”€β”€ streamlit_app/
β”‚   β”œβ”€β”€ app.py                 # Main Streamlit application
β”‚   β”œβ”€β”€ main.py               # Entry point
β”‚   β”œβ”€β”€ test_llm.py           # LLM functionality test
β”‚   β”œβ”€β”€ requirements.txt      # Python dependencies
β”‚   β”œβ”€β”€ pyproject.toml        # Project configuration
β”‚   β”œβ”€β”€ README.md            # This file
β”‚   └── utils/
β”‚       β”œβ”€β”€ __init__.py
β”‚       β”œβ”€β”€ ats_scoring.py        # ATS scoring algorithm
β”‚       β”œβ”€β”€ document_analyzer.py  # Direct document analysis
β”‚       β”œβ”€β”€ keywords_extraction.py # Keyword processing
β”‚       β”œβ”€β”€ llama_model.py        # AI-powered profile extraction
β”‚       β”œβ”€β”€ postgres_client.py    # PostgreSQL integration
β”‚       β”œβ”€β”€ profile_extractor.py  # Profile extraction utilities
β”‚       └── resume_keywords.py    # Personal info extraction
β”œβ”€β”€ .python-version           # Python version specification
β”œβ”€β”€ uv.lock                   # Dependency lock file
└── .gitignore               # Git ignore rules

πŸ”§ Configuration

Environment Variables

For basic ATS functionality, no environment variables are required. For AI-powered features:

  • HUGGING_FACE_API: Hugging Face API token for Llama model access (required for LLM Profile Extraction)
  • POSTGRES_URI: PostgreSQL connection string (required for saving profiles, default: postgresql://localhost:5432/resumematchai)

Optional customization variables:

  • MAX_FILE_SIZE: Maximum resume file size (default: 100MB)
  • WORD_LIMIT: Job description word limit (default: 1000)
  • SIMILARITY_THRESHOLD: Keyword similarity threshold (default: 0.7)

Customization

The scoring weights and thresholds can be adjusted in utils/ats_scoring.py:

WEIGHTS = {
    'keyword_match': 0.40,
    'keyword_density': 0.15,
    'personal_info': 0.15,
    'skills_alignment': 0.10,
    'experience_match': 0.10,
    'education_match': 0.05,
    'formatting': 0.05
}

🀝 Contributing

We welcome contributions! Please follow these steps:

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Make your changes and commit: git commit -m 'Add amazing feature'
  4. Push to the branch: git push origin feature/amazing-feature
  5. Open a Pull Request

Development Setup

# Install development dependencies
pip install -r requirements-dev.txt

# Run tests
pytest

# Format code
black .
isort .

πŸ“„ License

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

πŸ™ Acknowledgments

  • spaCy for powerful NLP capabilities
  • Streamlit for the amazing web app framework
  • NLTK for text processing utilities
  • Open source community for inspiration and tools

πŸ“ž Support

If you have questions or need help:


Made with ❀️ for job seekers and recruiters

Resume β€’ ATS Scoring β€’ Contributing β€’ License

About

AI-powered Resume Analyzer & Job Recommendation System

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published