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.


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.4.tar.gz (21.9 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.4-py3-none-any.whl (23.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: cvz-0.1.4.tar.gz
  • Upload date:
  • Size: 21.9 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.4.tar.gz
Algorithm Hash digest
SHA256 f96800361e7ad22d70bbfd041deba56a44061e06b93c318899c4158a6875898b
MD5 12a98d577d45c47a63b89245e074206b
BLAKE2b-256 2e3f79b27fb44fc35b81b50cce2c6fa2228121399bf3da9e9a45dc14f8556e4b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: cvz-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 23.0 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 94afce2f745e854bdf412bc3433981ae833107669650f47a0ea7e3ad18f7fe71
MD5 865607bed7bdf896601be239d65d159a
BLAKE2b-256 d3ed54ebc4830dfa7c3c26ab43c8a37f42c56538b38ecee6d6d95d40010f8849

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