ATS Resume Analyzer CLI
Project description
cvz — ATS Resume Analyzer CLI
A fast command-line tool that scores resumes against job roles using keyword matching, semantic similarity, and structural analysis. Supports PDF, DOCX, and TXT files.
Installation
pip install cvz
Or install from source:
git clone <repo>
cd cvscan
pip install -e .
Requires Python 3.9+
Download the spaCy model for semantic scoring (recommended):
python -m spacy download en_core_web_md
If not installed, semantic scoring is automatically skipped with a warning — all other features work normally.
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"
Export the report to JSON
cvz analyze resume.pdf --role devops --export report.json
Suggest the best-fit roles for a resume
cvz suggest-role resume.pdf
cvz suggest-role resume.pdf --top 10
Gap analysis — see strengths and missing skills
cvz gap resume.pdf --role machine_learning
cvz gap resume.pdf --role backend --export gap.json
Compare multiple resumes
cvz compare r1.pdf r2.pdf r3.pdf
cvz compare r1.pdf r2.pdf --role frontend --export compare.json
List all supported roles
cvz roles
Show version
cvz --version
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 |
Score thresholds:
| Score | Rating |
|---|---|
| >= 75% | Great match |
| 50-74% | Decent match |
| < 50% | Low match |
Supported Roles
| Role | Role |
|---|---|
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 are defined in src/cvscan/data/roles.json and can be extended.
Supported File Formats
| Format | Parser |
|---|---|
.pdf |
pdfplumber |
.docx |
python-docx (includes table extraction) |
.txt |
built-in |
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 (incl. tables)
│ └── utils/
│ ├── loader.py # File + role data loading
│ ├── cleaner.py # Text normalisation
│ └── scorer.py # Shared scoring helpers
├── 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.5.tar.gz.
File metadata
- Download URL: cvz-0.1.5.tar.gz
- Upload date:
- Size: 22.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c2f41a724bb7ee25850a1f5d25e0ae3263c232ed5fe77f4731906a019eb9b91e
|
|
| MD5 |
9426c667ec634ec1d86e037ee813abe5
|
|
| BLAKE2b-256 |
a590cb54d667bbe3ad7bd9f21590179b254d66ac74ecfd3f13809672233a91f1
|
File details
Details for the file cvz-0.1.5-py3-none-any.whl.
File metadata
- Download URL: cvz-0.1.5-py3-none-any.whl
- Upload date:
- Size: 23.3 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 |
fbefff6660d73eae4698377d979010dd0b6b27482475d8705987ff775f75169a
|
|
| MD5 |
38128eed148bc1b5c308eb5cf7bdcd97
|
|
| BLAKE2b-256 |
01ce41749808b0e8b3ce9c51562a6a2210acd6bdcbcb4f992c12c1871ca6ed16
|