reveilio
AI-powered resume and job-description matching and scoring.
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_completionas 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)
| File | Size | Uploaded | |
|---|---|---|---|
| reveilio-0.1.1.tar.gz | 270.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| 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
|