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.5.tar.gz (22.1 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.5-py3-none-any.whl (23.3 kB view details)

Uploaded Python 3

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

Hashes for cvz-0.1.5.tar.gz
Algorithm Hash digest
SHA256 c2f41a724bb7ee25850a1f5d25e0ae3263c232ed5fe77f4731906a019eb9b91e
MD5 9426c667ec634ec1d86e037ee813abe5
BLAKE2b-256 a590cb54d667bbe3ad7bd9f21590179b254d66ac74ecfd3f13809672233a91f1

See more details on using hashes here.

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

Hashes for cvz-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 fbefff6660d73eae4698377d979010dd0b6b27482475d8705987ff775f75169a
MD5 38128eed148bc1b5c308eb5cf7bdcd97
BLAKE2b-256 01ce41749808b0e8b3ce9c51562a6a2210acd6bdcbcb4f992c12c1871ca6ed16

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