Skip to main content

ATS Resume Analyzer CLI

Project description

โšก cvz โ€” ATS Resume Analyzer

Stop guessing. Start scoring.

A blazing-fast CLI tool that tells you exactly how well your resume matches a job โ€” before a recruiter's ATS does.

PyPI version Python License: MIT

๐ŸŒ Live Demo ยท ๐Ÿ“ฆ PyPI ยท ๐Ÿ› Report Bug


workflow


Why cvz?

Most resumes get rejected before a human ever reads them โ€” filtered out by ATS (Applicant Tracking Systems) that scan for keywords and structure. cvz puts that power in your hands:

  • ๐Ÿ” Keyword matching โ€” see exactly which role keywords you're hitting (and missing)
  • ๐Ÿง  Semantic similarity โ€” goes beyond exact matches using NLP
  • ๐Ÿ—๏ธ Structure scoring โ€” checks for the sections recruiters expect
  • ๐Ÿš€ Works instantly โ€” no cloud, no signup, no waiting

Installation

pip install cvz

Or build from source:

git clone <repo>
cd cvscan
pip install -e .

Requires Python 3.9+

For better semantic scoring, grab the spaCy model:

python -m spacy download en_core_web_md

Without it? No problem โ€” cvz gracefully skips semantic scoring and keeps everything else running.


Quick Start

# Analyze against a specific role
cvz analyze resume.pdf --role backend

# Let cvz figure out the best role for you
cvz analyze resume.pdf

# Analyze against a raw job description
cvz analyze resume.pdf --jd "python django rest api postgresql"

Commands

analyze โ€” Score your resume

cvz analyze resume.pdf --role backend
cvz analyze resume.pdf --role devops --export report.json

suggest-role โ€” Find your best-fit roles

Not sure which roles to target? cvz will tell you.

cvz suggest-role resume.pdf
cvz suggest-role resume.pdf --top 10

gap โ€” Discover what's missing

See your strengths and the skills you need to add.

cvz gap resume.pdf --role machine_learning
cvz gap resume.pdf --role backend --export gap.json

compare โ€” Rank multiple resume versions

cvz compare r1.pdf r2.pdf r3.pdf
cvz compare r1.pdf r2.pdf --role frontend --export compare.json

roles โ€” Browse supported roles

cvz roles

--version

cvz --version

How Scoring Works

Each resume is evaluated across three dimensions:

Metric Weight What it checks
๐Ÿ”‘ Keyword 50% Core (70%) + secondary (30%) role keywords
๐Ÿง  Semantic 30% spaCy cosine similarity against role vocabulary
๐Ÿ—๏ธ Structure 20% Standard sections present + appropriate length

Score thresholds:

Score Rating
โ‰ฅ 75% โœ… Great match
50โ€“74% ๐ŸŸก Decent match
< 50% ๐Ÿ”ด Low match

Supported Roles

backend frontend
full_stack software_engineer
data_scientist data_analyst
machine_learning ai_engineer
devops cloud_engineer
android ios
cybersecurity qa_engineer
product_manager ui_ux_designer
blockchain embedded_systems

Run cvz roles for the full list. Role keyword sets live in src/cvscan/data/roles.json โ€” fully extensible.


Supported File Formats

Format Parser
.pdf pdfplumber
.docx python-docx (including tables)
.txt built-in

Project Structure

cvscan/
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ cvscan/
โ”‚       โ”œโ”€โ”€ main.py                 # CLI entry (Typer)
โ”‚       โ”œโ”€โ”€ data/
โ”‚       โ”‚   โ””โ”€โ”€ roles.json          # Role keyword definitions
โ”‚       โ”œโ”€โ”€ engines/
โ”‚       โ”‚   โ”œโ”€โ”€ keyword_engine.py   # Keyword scoring
โ”‚       โ”‚   โ”œโ”€โ”€ spacy_engine.py     # Semantic similarity
โ”‚       โ”‚   โ””โ”€โ”€ structure_engine.py # Resume structure
โ”‚       โ”œโ”€โ”€ parser/
โ”‚       โ”‚   โ”œโ”€โ”€ pdf_parser.py       # PDF extraction
โ”‚       โ”‚   โ””โ”€โ”€ docx_parser.py      # DOCX extraction + tables
โ”‚       โ””โ”€โ”€ utils/
โ”‚           โ”œโ”€โ”€ loader.py           # File + role loading
โ”‚           โ”œโ”€โ”€ cleaner.py          # Text normalisation
โ”‚           โ””โ”€โ”€ scorer.py           # Shared scoring logic
โ”œโ”€โ”€ pyproject.toml
โ””โ”€โ”€ requirements.txt

Dependencies

typer ยท rich ยท pdfplumber ยท python-docx ยท spacy ยท scikit-learn

Author

Built by Anik Chand


If cvz helped you land an interview, consider leaving a โญ

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

cvz-0.1.7.tar.gz (23.6 kB view details)

Uploaded Source

Built Distribution

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

cvz-0.1.7-py3-none-any.whl (24.0 kB view details)

Uploaded Python 3

File details

Details for the file cvz-0.1.7.tar.gz.

File metadata

  • Download URL: cvz-0.1.7.tar.gz
  • Upload date:
  • Size: 23.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for cvz-0.1.7.tar.gz
Algorithm Hash digest
SHA256 2021eae5d02a68ef87e97076bd9f296ffac4aad70dd947f30434a4a0fc96296d
MD5 4509735b43bcb25438c78c0983fc4784
BLAKE2b-256 e8cfc69225d9993a0039f6a595e383f9f11c3f721e28e397c258b6a3f5dad221

See more details on using hashes here.

File details

Details for the file cvz-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: cvz-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 24.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.6

File hashes

Hashes for cvz-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 3ce1d174489819b89608b0285028db8757118894e2e409bddb849bbb7684be17
MD5 e4e51977e7d836e2906d515ed53d9b95
BLAKE2b-256 9cced49e06a9da3cf5c1fca5f03bcdd7124572aa072c28a589e7beaeda283f0b

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