Skip to content

An AI-powered agent that analyzes job descriptions, identifies required skills, and highlights gaps between role expectations and candidate profiles.

License

Notifications You must be signed in to change notification settings

rafaeloliveiralopes/SkillScan

Agentic AI Skills Scan

CI - Python tests

A local CLI agent that analyzes a Job Description (JD), compares it to a candidate profile, and generates a Markdown report with matched skills, gaps, and actionable recommendations.

Runs offline by default and supports text-based JDs in .txt or .pdf (no OCR in v0.1.0). See adrs/0001-offline-and-pdf-policy.md for the offline/PDF policy.


quick start

requirements

  • Python 3.12+
  • pip

install

pip install -r requirements.txt

run (example)

Option 1: Quick start script (recommended)

./run_skillscan.sh

This script automatically activates your virtual environment (if it exists) and runs SkillScan with the example files.

Option 2: Direct CLI invocation

python -m agent.runner run \
  --jd ./src/samples/jd.txt \
  --profile ./src/samples/profile.json \
  --out ./reports \
  --verbose

Option 3: Installed console script

If installed as a package:

pip install -e .
skillscan run --jd ./src/samples/jd.txt --profile ./src/samples/profile.json --out ./reports --verbose

inputs

  • JD: .txt or text-selectable .pdf (exported from a text editor). Scanned/image-only PDFs are not supported in v0.1.0.

  • Profile (.json):

{
  "name": "Rafael",
  "skills": ["Python", "Flask", "PostgreSQL", "Git", "Docker"],
  "languages": ["Portuguese", "English (basic)"]
}

outputs

2025-10-02_rafael_report.md
The report contains the required sections `Matched Skills`, `Gaps (Missing Skills)`,
and `Recommendations`. It may also include an optional `Extra (Profile-only Skills)`
section when your profile lists skills that don't appear in the JD.

standard errors

  • ERROR: JD not found at <path>.
  • ERROR: Could not extract text from PDF (page X).
  • ERROR: profile.json is invalid (e.g., "skills" must be a list of strings).
  • WARNING: No skills identified in the JD.

Exit codes: 0 success, 1 failure, 130 keyboard interrupt.


scope & limitations (v0.1.0)

  • Offline-by-default; no external calls.
  • JD parsing from .txt and text-based .pdf (no OCR).
  • Simple keyword heuristics for skill extraction (PT/EN).
  • CLI only (no Web UI / API yet).

For technical scope, I/O and Definition of Done, see project-brief.md. For purpose, problems and personas, see product-context.md. For the offline/PDF policy, see ADR adrs/0001-offline-and-pdf-policy.md.


PDF limitations (v0.1.0)

  • Only text-selectable PDFs are supported (exported from editors). No OCR.
  • Text is extracted page by page; whitespace is normalized.
  • If any page has no selectable text, the tool emits: ERROR: Could not extract text from PDF (page X).
  • For full rationale, see adrs/0001-offline-and-pdf-policy.md.

Contributing

We welcome contributions! Please read our Contributing Guide before opening issues or pull requests.


license

License


About

An AI-powered agent that analyzes job descriptions, identifies required skills, and highlights gaps between role expectations and candidate profiles.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages