Skip to main content

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

Release files for reveilio 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for reveilio 0.1.1
File Size Uploaded
reveilio-0.1.1.tar.gz 270.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for reveilio 0.1.1
File Interpreter ABI Platform
reveilio-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 299.5 kB

Release files / reveilio-0.1.1.tar.gz

Download URL reveilio-0.1.1.tar.gz
Size 270.5 kB
Tags Source
SHA-256 checksum
How to use checksums
4fa200ce92b677b8d3311f6e1c17354af979d865377c9bf2c96b227ea02d2a62
BLAKE2b-256 checksum
How to use checksums
0845d3d7596e4009e695b1fa02fa602e0c9777a569f5ee1913ee36699731c41d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.14

Release files / reveilio-0.1.1-py3-none-any.whl

Download URL reveilio-0.1.1-py3-none-any.whl
Size 29.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7474da727f683db053564ed475fb3a09b12a890f96bbddd3509c2a7303202621
BLAKE2b-256 checksum
How to use checksums
a95c0089a1bb11ebdb8621e6fc4b9a4303ac4ec85aba22fc559e0861cd1ab4c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.14

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page