ATS Resume Analyzer CLI
Project description
cvz — ATS Resume Analyzer CLI
A command-line tool that scores resumes against job roles using keyword matching, semantic similarity, and structural analysis. Supports PDF and DOCX files.
Installation
pip install cvz
Or install from source:
git clone <repo>
cd cvscan
pip install -e .
Requires Python 3.9+
After installing, download the spaCy model for semantic scoring:
python -m spacy download en_core_web_md
Usage
Analyze a resume against a role
cvz analyze resume.pdf --role backend
Auto-detect the best matching role
cvz analyze resume.pdf
Analyze against a custom job description
cvz analyze resume.pdf --jd "python django rest api postgresql"
Suggest the best-fit role for a resume
cvz suggest-role resume.pdf
Gap analysis — see what's missing for a role
cvz gap resume.pdf --role machine_learning
Compare multiple resumes
cvz compare r1.pdf r2.pdf --role backend
List all supported roles
cvz roles
Scoring
Each resume is scored across three dimensions:
| Metric | Weight | Description |
|---|---|---|
| Keyword | 50% | Matches core (70%) and secondary (30%) role keywords |
| Semantic | 30% | spaCy cosine similarity between resume and role keywords |
| Structure | 20% | Presence of standard sections + resume length |
Supported Roles
Built-in roles include:
backendfrontendfull_stackmachine_learningdata_science- (run
cvz rolesfor the full list)
Role keyword sets are defined in src/cvscan/data/roles.json and can be extended.
Supported File Formats
.pdf— viapdfplumber.docx— viapython-docx
Dependencies
typer
rich
pdfplumber
python-docx
spacy
scikit-learn
Project Structure
cvscan/
├── src/
│ └── cvscan/
│ ├── main.py # CLI commands (Typer)
│ ├── data/
│ │ └── roles.json # Role keyword definitions
│ ├── engines/
│ │ ├── keyword_engine.py # Keyword-based scoring
│ │ ├── spacy_engine.py # Semantic similarity scoring
│ │ └── structure_engine.py # Resume structure scoring
│ ├── parser/
│ │ ├── pdf_parser.py # PDF text extraction
│ │ └── docx_parser.py # DOCX text extraction
│ └── utils/
│ ├── loader.py # File + role data loading
│ └── cleaner.py # Text normalization
├── pyproject.toml
└── requirements.txt
Author
Anik Chand
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.2.tar.gz.
File metadata
- Download URL: cvz-0.1.2.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4827da44b2a415e448c20e8822152fc3908439a01c3a086f24a1ea59f2523362
|
|
| MD5 |
687a873adefb65797e51d8bb7c5d9ece
|
|
| BLAKE2b-256 |
93f90aa924779b26a03d4c4ead995e5a1e7d17a325a55050dbd07d51dca004a1
|
File details
Details for the file cvz-0.1.2-py3-none-any.whl.
File metadata
- Download URL: cvz-0.1.2-py3-none-any.whl
- Upload date:
- Size: 8.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.17
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
002661b4316bd7382e336b1eb56095df59909e57afe0d675374a99aec239e297
|
|
| MD5 |
cc149bc5978acae2210f0980e02bd924
|
|
| BLAKE2b-256 |
4b6a6d4dadf4a13c45ee533b329614c95acf5f2073d60bf234ea51a2997f11b6
|