Skip to main content

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.


workflow

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

cvz-0.1.6.tar.gz (22.2 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.6-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cvz-0.1.6.tar.gz
  • Upload date:
  • Size: 22.2 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.6.tar.gz
Algorithm Hash digest
SHA256 e1dcf9b101a111e34c6c33ce1a127ebda0813cc182c187a9e736fd4786c2a166
MD5 c5d5c5c134cad54c134e372103d8de5d
BLAKE2b-256 301a83b760b43476130b2c49ae7eee830766325e15696a6d9bf80249d16a2260

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cvz-0.1.6-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

Hashes for cvz-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 ee547ee3fce824260cd0371408fc606127fd28434c8577662dbcb9779f1c8de2
MD5 916b9894548b510e7d9cc119cc312552
BLAKE2b-256 e495283def773e94b891d1553bf88d43d4b3d3fe1123f60b185b46d5594872c5

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