Skip to main content

A comprehensive ATS Resume Scoring Plugin

Project description

README.md

ATS Resume Scorer Plugin

A comprehensive Python-based plugin to score resumes against ATS (Applicant Tracking System) standards and job descriptions with actionable feedback.

Features

๐Ÿ“„ Resume Parsing Module

  • Supports .pdf, .docx, and .txt formats
  • Extracts structured data: contact info, skills, education, experience
  • Uses native Python libraries for reliable parsing

๐Ÿ“‘ Job Description Matching Module

  • Parses job descriptions and extracts key requirements
  • Identifies required vs preferred skills
  • Extracts education and experience requirements

๐Ÿง  Configurable ATS Scoring Engine

  • Keyword Match (30%): Skills and responsibility overlap
  • Title Match (10%): Job title alignment
  • Education Match (10%): Degree/qualification comparison
  • Experience Match (15%): Relevant experience assessment
  • Format Compliance (15%): ATS-friendly formatting
  • Action Verbs & Grammar (10%): Professional language usage
  • Readability (10%): Structure and clarity

๐Ÿ“Š Detailed Reporting

  • Overall ATS score (0-100) with letter grade
  • Sectional breakdown of all scoring categories
  • Actionable improvement recommendations
  • Missing skills identification
  • Job match analysis

Installation

# Clone the repository
git clone https://github.com/yourusername/ats-resume-scorer
cd ats-resume-scorer

# Install dependencies
pip install -r requirements.txt

# Install spaCy language model
python -m spacy download en_core_web_sm

# Install the package
pip install -e .

Quick Start

Command Line Usage

# Basic usage
ats-score --resume resume.pdf --jd job_description.txt

# Save output to file
ats-score --resume resume.pdf --jd job_description.txt --output results.json

# Use custom scoring weights
ats-score --resume resume.pdf --jd job_description.txt --weights custom_weights.json

Python API Usage

from ats_resume_scorer import ATSResumeScorer

# Initialize scorer
scorer = ATSResumeScorer()

# Read job description
with open('job_description.txt', 'r') as f:
    jd_text = f.read()

# Score resume
result = scorer.score_resume('resume.pdf', jd_text)

print(f"ATS Score: {result['overall_score']}/100")
print(f"Grade: {result['grade']}")
print("Recommendations:", result['recommendations'])

Configuration

Custom Scoring Weights

Create a JSON file with custom weights:

{
    "keyword_match": 0.35,
    "title_match": 0.15,
    "education_match": 0.10,
    "experience_match": 0.15,
    "format_compliance": 0.10,
    "action_verbs_grammar": 0.10,
    "readability": 0.05
}

Extending Skills Database

Add new skills to config/skills_database.json:

{
    "ai_ml": [
        "machine learning", "deep learning", "nlp", "computer vision",
        "tensorflow", "pytorch", "scikit-learn"
    ]
}

Project Structure

ats-resume-scorer/
โ”œโ”€โ”€ ats_resume_scorer/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ main.py              # Main plugin file
โ”‚   โ”œโ”€โ”€ parsers/
โ”‚   โ”‚   โ”œโ”€โ”€ resume_parser.py
โ”‚   โ”‚   โ””โ”€โ”€ jd_parser.py
โ”‚   โ”œโ”€โ”€ scoring/
โ”‚   โ”‚   โ””โ”€โ”€ scoring_engine.py
โ”‚   โ””โ”€โ”€ utils/
โ”‚       โ””โ”€โ”€ report_generator.py
โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ default_weights.json
โ”‚   โ”œโ”€โ”€ skills_database.json
โ”‚   โ””โ”€โ”€ action_verbs.json
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ test_parser.py
โ”‚   โ”œโ”€โ”€ test_scoring.py
โ”‚   โ””โ”€โ”€ sample_data/
โ”œโ”€โ”€ examples/
โ”‚   โ”œโ”€โ”€ sample_resume.pdf
โ”‚   โ”œโ”€โ”€ sample_jd.txt
โ”‚   โ””โ”€โ”€ example_usage.py
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ setup.py
โ””โ”€โ”€ README.md

API Reference

ATSResumeScorer Class

class ATSResumeScorer:
    def __init__(self, weights: Optional[ScoringWeights] = None)
    def score_resume(self, resume_path: str, jd_text: str) -> Dict[str, Any]

Response Format

{
    "overall_score": 78.5,
    "grade": "B",
    "detailed_breakdown": {
        "keyword_match": 85.0,
        "title_match": 60.0,
        "education_match": 90.0,
        "experience_match": 75.0,
        "format_compliance": 80.0,
        "action_verbs_grammar": 70.0,
        "readability": 85.0
    },
    "recommendations": [
        "Add these missing required skills: docker, kubernetes",
        "Use more action verbs in experience descriptions"
    ],
    "job_match_analysis": {
        "required_skills_matched": 8,
        "preferred_skills_matched": 3,
        "missing_required_skills": ["docker", "kubernetes"],
        "missing_preferred_skills": ["react", "aws"]
    }
}

Testing

# Run tests
python -m pytest tests/

# Run with coverage
python -m pytest tests/ --cov=ats_resume_scorer

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Add tests for new functionality
  4. Ensure all tests pass
  5. Submit a pull request

License

MIT License - see LICENSE file for details.

Support

For issues and feature requests, please use the GitHub issue tracker.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ats_resume_scorer-1.0.0.tar.gz (41.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ats_resume_scorer-1.0.0-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file ats_resume_scorer-1.0.0.tar.gz.

File metadata

  • Download URL: ats_resume_scorer-1.0.0.tar.gz
  • Upload date:
  • Size: 41.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.11

File hashes

Hashes for ats_resume_scorer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 438c3870dffd9d2b184a9d6e73b078c15d8ccba7ee81f34114a9c31aeac5ea22
MD5 0b342aab7f909f3f70404aca8dfe6c8b
BLAKE2b-256 5bd4db51ce5012d0bcd576a31831de10552ec8494489425aec21a368d3e2da11

See more details on using hashes here.

File details

Details for the file ats_resume_scorer-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ats_resume_scorer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 19f73d3f43f7e0349992a30a7ecbc57ea3b9c23859371baedd630ba06010a0f3
MD5 ab7c6c81d163c501fdf63e660a342082
BLAKE2b-256 15d507f587ec08af8e441c3f9d70f98bee8ebf69b9c6f1beb5b0685fee3b34cf

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page