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.txtformats - 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
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Ensure all tests pass
- 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
438c3870dffd9d2b184a9d6e73b078c15d8ccba7ee81f34114a9c31aeac5ea22
|
|
| MD5 |
0b342aab7f909f3f70404aca8dfe6c8b
|
|
| BLAKE2b-256 |
5bd4db51ce5012d0bcd576a31831de10552ec8494489425aec21a368d3e2da11
|
File details
Details for the file ats_resume_scorer-1.0.0-py3-none-any.whl.
File metadata
- Download URL: ats_resume_scorer-1.0.0-py3-none-any.whl
- Upload date:
- Size: 24.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
19f73d3f43f7e0349992a30a7ecbc57ea3b9c23859371baedd630ba06010a0f3
|
|
| MD5 |
ab7c6c81d163c501fdf63e660a342082
|
|
| BLAKE2b-256 |
15d507f587ec08af8e441c3f9d70f98bee8ebf69b9c6f1beb5b0685fee3b34cf
|