Vespera
Local-first AI deal analysis and due diligence.
Read a dataroom, cross-check its claims, score it against your investment thesis, and get an indicative valuation range — without your documents ever leaving your machine.
pip install vespera
vespera review ./dataroom --thesis my-thesis.md
Vespera reads the documents in a local folder — contracts, board minutes, financials, NDAs — and produces a structured deal report. All analysis runs on your machine via Ollama. Document contents never leave your network: no cloud upload, no third-party AI provider, no account.
What it does
Built for the first-pass review in M&A, VC, and PE deals:
- Due diligence findings — change-of-control clauses, termination rights, exclusivity, IP ownership, material liabilities, missing signatures — each with severity, a verbatim evidence excerpt, and the source file and page
- Key metrics — revenue, ARR, growth, margins, retention, runway, extracted only where explicitly stated, every value cited to its source
- Contradiction detection — the same metric reported differently in two documents, conflicting claims across contracts and board minutes, referenced schedules that aren't in the dataroom
- Deal readiness score — a reproducible severity-weighted score with a Strong / Balanced / Cautious reading
- Thesis fit — write your investment thesis once in Markdown; every deal is scored against it, with aligned points, conflicts, and unknowns
- Indicative valuation — a multiples-based screening range with every assumption listed (a range to interrogate, never an appraisal)
Vespera
Reviewing ./dataroom
Documents found: 8
Deal readiness: 44/100 — Balanced reading
Indicative range: 38.4–76.8m GBP (screening only)
Thesis fit: 55/100
Findings:
- Inconsistencies between documents: 3
- Termination rights: 4
- Change-of-control clauses: 1
- Missing signatures: 1
Report: vespera-output/report.md
Evidence: vespera-output/findings.json · vespera-output/deal.json
All document analysis was performed locally.
Use it as a library too — the full analysis is one function returning one typed object:
from pathlib import Path
from vespera.deal import analyze_dataroom
analysis = analyze_dataroom(Path("./dataroom"), thesis_path=Path("my-thesis.md"))
print(analysis.score.score, analysis.score.label)
Privacy model
- No cloud calls for analysis. Inference runs on a local Ollama server (
localhostby default). - No telemetry, no accounts, no database. Vespera reads your documents and writes two output files. That's it.
- The only network activity you'll ever need is
ollama pullto download a model once.
Quick start
-
Install Ollama — the free app that runs AI models on your own computer — and open it once.
-
Install Vespera (needs Python 3.12+):
pip install vespera
-
Point it at a folder of documents (optionally with your thesis):
vespera review ./dataroom --thesis my-thesis.md
That's it. On the first run Vespera automatically downloads its default local model (qwen3:4b, ~2.6 GB, one-time) and then starts the review. If anything is missing, Vespera tells you exactly what to do.
Prefer a more thorough (slower) review? Use --model qwen3:8b. See what's available with vespera models.
Try it on the included synthetic example:
git clone https://github.com/VesperaSystems/vespera
cd vespera
vespera review ./examples/sample-dataroom --thesis ./examples/thesis.md
Commands
vespera review PATH [--thesis thesis.md] [--model qwen3:8b] [--output vespera-output] [--host http://localhost:11434]
vespera models # show recommended + locally installed Ollama models
vespera --version
The thesis file is plain Markdown — write your criteria however you normally would (see examples/thesis.md).
Supported document types
| Format | Notes |
|---|---|
| Priority format; per-page source references | |
| DOCX | Paragraphs and tables; no page numbers |
| TXT / MD | Plain text |
Scanned image-only documents are not analysed in this version (no OCR).
Limitations
Vespera is automated document triage. It is not legal, financial, or investment advice, and it does not replace review by qualified professionals. The indicative valuation is a multiples-based screening range resting entirely on stated assumptions — it is not an appraisal and must not be relied on for any decision. Local language models can miss issues and misread context; findings must be verified against the source documents. Vespera is designed to tell a human professional where to look first — not to make decisions.
Roadmap
- IC memo generation from your firm's own template
- More valuation approaches (DCF, VC method) with the same assumptions-first framing
- OCR for scanned documents
- More document formats (XLSX, EML, PPTX)
- Additional local model providers (llama.cpp, MLX)
- Multi-language document support
Development
git clone https://github.com/VesperaSystems/vespera
cd vespera
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
pytest
The LLM is behind a tiny provider interface (vespera/llm/base.py), so tests inject a fake provider and never require Ollama.
License
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vespera-0.2.0.tar.gz.
File metadata
- Download URL: vespera-0.2.0.tar.gz
- Upload date:
- Size: 85.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9626274e0d2964bb31c689534a920b99386160308adba8047bda42143671e77c
|
|
| MD5 |
b4767f1f569994d98991102a76b298ab
|
|
| BLAKE2b-256 |
946cad5fb82ad6a5777ed32ae2ada5f31b0e0a667b1fe547ab2c8675a562b62d
|
File details
Details for the file vespera-0.2.0-py3-none-any.whl.
File metadata
- Download URL: vespera-0.2.0-py3-none-any.whl
- Upload date:
- Size: 35.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/7.0.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c65e59f1fb888b2d46c316ce5c76ed196e259998b80956965d04a4eba15ce3e5
|
|
| MD5 |
843440421d1fd1b9dc1de928f0008ed2
|
|
| BLAKE2b-256 |
bf37f6949e35a7605f70683da4429137af54ae6bccabd79a8a6e316503d6abe9
|