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.
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 โ
cvzgracefully 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2021eae5d02a68ef87e97076bd9f296ffac4aad70dd947f30434a4a0fc96296d
|
|
| MD5 |
4509735b43bcb25438c78c0983fc4784
|
|
| BLAKE2b-256 |
e8cfc69225d9993a0039f6a595e383f9f11c3f721e28e397c258b6a3f5dad221
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3ce1d174489819b89608b0285028db8757118894e2e409bddb849bbb7684be17
|
|
| MD5 |
e4e51977e7d836e2906d515ed53d9b95
|
|
| BLAKE2b-256 |
9cced49e06a9da3cf5c1fca5f03bcdd7124572aa072c28a589e7beaeda283f0b
|