Skip to content

Install

Open in GitHub Codespaces — Python, Java, Maven, and the uofa CLI are pre-installed. Skip the local install entirely.

Terminal window
# Install the uofa CLI with the Excel + extract pipelines
pip install -e '.[excel,extract]'
# One-time: detect/install Ollama, pull qwen3.5:4b (~3 GB)
# Skip if you only plan to use hosted LLMs via --model
uofa setup
# Java 17+ and Maven 3.8+ (needed for the rule engine, C3)
java -version # should show 17+
mvn -version # should show 3.8+

End users installing from PyPI: pip install 'uofa[excel,extract]' instead of the editable form.

ExtraAddsNeeded for
[excel]openpyxluofa import from a workbook
[extract]litellm, pdfplumber, python-docx, jinja2, …uofa extract (LLM-backed evidence pre-fill) and uofa --explain

Omit both if you only work with JSON-LD directly. If you’ll only use hosted LLMs (Claude, GPT, Gemini) for extract, you still need [extract] (it brings in litellm), but you can skip uofa setup--model anthropic/claude-... and friends talk to the provider directly.

uofa setup is the post-pip step that gets the local extract path working:

  • Detects an existing Ollama on the machine (BYO), or downloads a UofA-managed copy
  • Pulls the default qwen3.5:4b model (~3 GB) — override with --model
  • Use --bundle <file> to install from an offline tarball for air-gapped hosts
  • Use --create-bundle <file> first on a connected machine to produce that tarball

Run uofa setup uninstall to remove the UofA-managed runtime and model later.

ComponentRequired forHow
Python 3.10+C1 (integrity) and C2 (SHACL)system / pyenv / uv
openpyxluofa import (Excel)pip install -e '.[excel]'
litellm + readersuofa extractpip install -e '.[extract]'
Ollama + qwen3.5:4blocal uofa extractuofa setup
Java 17+C3 (Jena rule engine)OpenJDK or equivalent
Maven 3.8+Building the Jena fat JARone-time

If Java is unavailable on your machine, run uofa check FILE --skip-rules to bypass the rule engine. SHACL validation and signature verification still work.

Terminal window
uofa --version
uofa packs # list installed domain packs
uofa validate # validate all bundled examples
uofa setup verify # optional: extract a known fixture end-to-end

If uofa validate reports zero failures, your install is good. uofa setup verify additionally confirms the local model runs and produces a parseable workbook before you point it at real evidence.

It is a plumbing check, not a quality measure. It scores whether a row was produced for each factor, and a function that prints the standard’s checklist and reads nothing at all scores 1.000 on that. What extraction is actually worth, measured against annotated gold with its controls, is in the project README.