Skip to main content

ATS resume analyzer for keyword matching and scoring

Project description

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

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_checker-0.2.0.tar.gz (8.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_checker-0.2.0-py3-none-any.whl (9.1 kB view details)

Uploaded Python 3

File details

Details for the file ats_resume_checker-0.2.0.tar.gz.

File metadata

  • Download URL: ats_resume_checker-0.2.0.tar.gz
  • Upload date:
  • Size: 8.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for ats_resume_checker-0.2.0.tar.gz
Algorithm Hash digest
SHA256 84fd314d810c7e5c9ebc09a760953e77d9be40b36d1a166300099a6155e9e0df
MD5 af76e1106ca934b96e9cf246687dd17d
BLAKE2b-256 1ef60d0bc02cb8361a258ed6230dc16bf2abc545ccd78e91638865896b478683

See more details on using hashes here.

File details

Details for the file ats_resume_checker-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ats_resume_checker-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 36510c6207f7168917963f532ef0256ea411b7f7e4401d87ef86bb6439ba4962
MD5 cfddcaa1053b239277bee840b190dc22
BLAKE2b-256 fccc24e99c3a538660c0b69b6dc4058ec640913834c29343610081a2eea8670c

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