Skip to main content

ats-resume-checker

PyPI version Python License: MIT

A lightweight Python package that scores resumes against job descriptions for ATS (Applicant Tracking System) compatibility — runs fully locally, no external AI APIs required.


Features

  • Multi-format support — PDF, DOCX, and plain TXT resumes
  • TF-IDF similarity scoring — more accurate than simple word-count matching
  • Smart keyword extraction — lemmatization, bigrams, and a built-in library of 30+ recognized multi-word skills ("machine learning", "rest api", "data analysis", etc.)
  • Keyword gap analysis — shows exactly which JD keywords are present or missing in the resume
  • Keyword match rate — percentage of job description keywords covered
  • Resume word count — flags resumes that are too short or too long
  • Actionable suggestions — concrete tips to improve ATS compatibility
  • CLI — run analysis directly from your terminal without writing any code

Installation

pip install ats-resume-checker

Quick Start

from ats_resume_checker import analyze_resume

result = analyze_resume(
    "resume.pdf",   # supports .pdf, .docx, and .txt
    "Looking for a Python developer with SQL and machine learning experience."
)

print(result)

Output

{
    "ats_score": 54.30,           # TF-IDF cosine similarity score (0–100)
    "match_rate": 66.7,           # % of JD keywords found in the resume
    "matched_keywords": [
        "data analysis",
        "machine learning",
        "python",
        "sql"
    ],
    "missing_keywords": [
        "communication",
        "developer",
        "problem solving"
    ],
    "resume_word_count": 520,
    "suggestions": [
        "Include more job-specific keywords. Missing: communication, developer, problem solving.",
        "Quantify achievements where possible (e.g. 'Improved performance by 30%')."
    ]
}

Python API

analyze_resume(resume_path, job_description)

Parameter Type Description
resume_path str Path to the resume file (.pdf, .docx, or .txt)
job_description str Plain-text job description

Returns a dict with ats_score, match_rate, matched_keywords, missing_keywords, resume_word_count, suggestions.


Utility functions

from ats_resume_checker import extract_text, extract_keywords, get_keyword_set

# Extract text from any supported file type
text = extract_text("resume.pdf")

# Get a ranked list of keywords (includes bigrams and known phrases)
keywords = extract_keywords(text, top_n=30)

# Get a clean keyword set (unigrams + known phrases only, no noise)
kw_set = get_keyword_set(text, top_n=50)

Command-Line Interface

After installation the ats-check command is available in your terminal:

# Job description as a string
ats-check resume.pdf "Python developer with SQL and machine learning skills"

# Job description as a .txt file
ats-check resume.docx job_description.txt

# Output as JSON (useful for scripts and pipelines)
ats-check resume.pdf "Data engineer with Spark experience" --json

Example output

==============================================
   ATS RESUME ANALYSIS REPORT
==============================================
  ATS Score       : 54.30%
  Keyword Match   : 66.7%
  Resume Words    : 520

  Matched Keywords (4):
    + data analysis
    + machine learning
    + python
    + sql

  Missing Keywords (3):
    - communication
    - developer
    - problem solving

  Suggestions:
    * Include more job-specific keywords. Missing: communication, developer, problem solving.
    * Quantify achievements where possible.
==============================================

Dependencies

Package Purpose
PyPDF2 PDF text extraction
python-docx DOCX text extraction
scikit-learn TF-IDF vectorization and cosine similarity
nltk Lemmatization, stopwords, tokenization

All dependencies are installed automatically with pip install ats-resume-checker.


License

MIT © Vidhi Bhutia

Metadata

Release files for ats-resume-checker 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ats-resume-checker 0.2.0
File Size Uploaded Provenance Actions
ats_resume_checker-0.2.0.tar.gz 8.5 kB Without provenance Details for ats_resume_checker-0.2.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for ats-resume-checker 0.2.0
File Interpreter ABI Platform Actions
ats_resume_checker-0.2.0-py3-none-any.whl Python 3 none any Details for ats_resume_checker-0.2.0-py3-none-any.whl

Total release size: 17.6 kB

Release files / ats_resume_checker-0.2.0.tar.gz

Download URL ats_resume_checker-0.2.0.tar.gz
Size 8.5 kB
Tags Source
SHA-256 checksum
How to use checksums
84fd314d810c7e5c9ebc09a760953e77d9be40b36d1a166300099a6155e9e0df
BLAKE2b-256 checksum
How to use checksums
1ef60d0bc02cb8361a258ed6230dc16bf2abc545ccd78e91638865896b478683
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Release files / ats_resume_checker-0.2.0-py3-none-any.whl

Download URL ats_resume_checker-0.2.0-py3-none-any.whl
Size 9.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
36510c6207f7168917963f532ef0256ea411b7f7e4401d87ef86bb6439ba4962
BLAKE2b-256 checksum
How to use checksums
fccc24e99c3a538660c0b69b6dc4058ec640913834c29343610081a2eea8670c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.2

Security for ats-resume-checker 0.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page