Skip to main content

LLM-powered resume vs. job-description matching and scoring library.

Project description

Reveilio logo

reveilio

AI-powered resume and job-description matching and scoring.

PyPI Tests License Python

Reveilio takes a job description (file or free text) and one or many resumes (PDF, DOCX, DOC, TXT, or free text) and returns a detailed, weighted match score together with structured candidate data. It supports Gemini, OpenAI, Azure OpenAI, and a local Ollama model.

Install

pip install reveilio

Quickstart

import reveilio

# 1. Configure your LLM provider once
reveilio.configure(provider="gemini", api_key="AIza...")
# or: provider="openai", api_key="sk-..."
# or: provider="azure", api_key="...", azure_endpoint="https://...", azure_deployment="gpt-4o"
# or: provider="ollama", base_url="http://localhost:11434", model="llama3.2"

# 2. Build a JD from a file or free text
jd = reveilio.JobDescription.from_file("jd.pdf")
# jd = reveilio.JobDescription.from_text("We're hiring a Senior Python engineer...")

# 3a. Analyze a single resume
result = reveilio.analyze_resume("resumes/alice.pdf", jd)
print(result.overall_score, result.recommendation)

# 3b. Or an entire folder of resumes, sorted and ranked by score
results = reveilio.analyze_folder("resumes/", jd)
for r in results:
    print(r.rank, r.candidate_data.name, r.overall_score)

# 4. Export a PDF report
reveilio.save_report_pdf(result, "alice_report.pdf")
reveilio.save_batch_report_pdf(results, "batch_ranking.pdf")

Supported inputs

  • JD: .pdf, .docx, .doc, .txt, or a plain Python string.
  • Resume: .pdf, .docx, .doc, .txt, or a plain Python string.

You can manage multiple JDs simultaneously by keeping multiple JobDescription instances around. Each instance is independent.

Supported LLM providers

Provider configure() call
Gemini configure(provider="gemini", api_key="AIza...")
OpenAI configure(provider="openai", api_key="sk-...", model="gpt-4o-mini")
Azure OpenAI configure(provider="azure", api_key=..., azure_endpoint=..., azure_deployment=...)
Ollama (self) configure(provider="ollama", base_url="http://localhost:11434", model="llama3.2")

Environment variable fallbacks: GEMINI_API_KEY, OPENAI_API_KEY, AZURE_OPENAI_API_KEY, AZURE_OPENAI_ENDPOINT, AZURE_OPENAI_DEPLOYMENT, and OLLAMA_BASE_URL.

Documentation

Full documentation lives in the docs/ directory. Open docs/index.html in a browser for the complete guide, including configuration, API reference, guides, architecture, and contributing instructions.

Contributing

Contributions are welcome. The full contributing guide is in docs/contributing.html. The short version:

1. Fork and clone

git clone https://github.com/roosterhr/reveilio.git
cd reveilio

2. Create a virtual environment and install dev dependencies

python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows (PowerShell)
.venv\Scripts\Activate.ps1

pip install -e ".[dev]"

3. Create a feature branch

Use a descriptive prefix: fix/, feat/, docs/, or refactor/.

git checkout -b feat/my-change

4. Make your change

  • Keep pull requests focused. One PR should address one concern.
  • Match the existing code style. Reveilio avoids over-abstraction.
  • Add or update tests for every bug fix and feature. Tests must not make real LLM calls; mock json_completion as the existing suite does.
  • Update the relevant docs pages under docs/ when public behavior changes.
  • Do not add new runtime dependencies without prior discussion.

5. Lint and test locally

Reveilio uses ruff for linting and formatting, and pytest for tests. Both must be green before you open a pull request.

ruff check src tests
ruff format --check src tests
pytest -q

To auto-fix lint issues and format the code:

ruff check src tests --fix
ruff format src tests

6. Commit

Write imperative, present-tense commit subjects at 72 characters or fewer, and explain the why in the body. Reference related issues with Fixes #123 or Refs #123.

7. Open a pull request

Push your branch to your fork and open a pull request against main. Fill out the PR template with a summary, motivation, and notes on any manual testing. Respond to review feedback promptly, and rebase (do not merge) onto main if it advances while your PR is open:

git fetch origin
git rebase origin/main
git push --force-with-lease

Reporting security issues

Please do not report security vulnerabilities through public GitHub issues. Email the maintainers privately with a detailed description.

License

MIT

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

reveilio-0.1.1.tar.gz (270.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

reveilio-0.1.1-py3-none-any.whl (29.0 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for reveilio-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4fa200ce92b677b8d3311f6e1c17354af979d865377c9bf2c96b227ea02d2a62
MD5 24b270a0be65216d7b13a015d172a3ea
BLAKE2b-256 0845d3d7596e4009e695b1fa02fa602e0c9777a569f5ee1913ee36699731c41d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: reveilio-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 29.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.14

File hashes

Hashes for reveilio-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7474da727f683db053564ed475fb3a09b12a890f96bbddd3509c2a7303202621
MD5 0309a6eab966e91d59b3f7c4bd4cdc28
BLAKE2b-256 a95c0089a1bb11ebdb8621e6fc4b9a4303ac4ec85aba22fc559e0861cd1ab4c2

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