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.2.tar.gz (7.8 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.2-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

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

Hashes for cvz-0.1.2.tar.gz
Algorithm Hash digest
SHA256 4827da44b2a415e448c20e8822152fc3908439a01c3a086f24a1ea59f2523362
MD5 687a873adefb65797e51d8bb7c5d9ece
BLAKE2b-256 93f90aa924779b26a03d4c4ead995e5a1e7d17a325a55050dbd07d51dca004a1

See more details on using hashes here.

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

Hashes for cvz-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 002661b4316bd7382e336b1eb56095df59909e57afe0d675374a99aec239e297
MD5 cc149bc5978acae2210f0980e02bd924
BLAKE2b-256 4b6a6d4dadf4a13c45ee533b329614c95acf5f2073d60bf234ea51a2997f11b6

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