Skip to main content

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:

  • backend
  • frontend
  • full_stack
  • machine_learning
  • data_science
  • (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

  • .pdf — via pdfplumber
  • .docx — via python-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

cvz-0.1.1.tar.gz (8.0 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.1-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cvz-0.1.1.tar.gz
  • Upload date:
  • Size: 8.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for cvz-0.1.1.tar.gz
Algorithm Hash digest
SHA256 b5abaaa2427811d5de5376d6ee6ef503d936f565ea0266f192bc0fe174c503f4
MD5 eec2fd928208574cabe55398ae4c4ed1
BLAKE2b-256 0840a1b28a27eda7f86ac3d9f26e75d664ecee9c183385ad777658ebf570eb90

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cvz-0.1.1-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.14.3

File hashes

Hashes for cvz-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 cf5e7cf77adca2ffd835a1a6a34bdc7e2d05ea0d99e8e33247f5c607b207fd6e
MD5 0285f9ae15ee01249ce46ed21020d2a2
BLAKE2b-256 003ea0197b4c595689f2a8da451458c54cf20d57644496369ea64ae7c5d573ae

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