Skip to main content

โšก 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 โญ

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.

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

Supported by

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