
OpenDecision
Open-source semantic decision engine
OpenDecision is an open-source semantic decision engine designed to answer typed questions about application state and documents. It runs a local natural language inference model to process input and return structured values.
The engine solves the problem of translating unstructured data and application states into structured decisions by using primitives like choices, scores, and relations. It is built for developers who need to integrate semantic decision-making directly into their Python applications or via API endpoints.
Key Features
Choice
Select one option from a set of criteria; returns the option name and probabilities (e.g., routing a support request to billing, technical, or sales).
Noul
Test a single statement and get a score from 0 to 1.
Score
Use an ordered scale and get back a weighted score with probabilities.
Relation
Compare evidence with a statement and its opposite, returning supports, contradicts, unknown, or conflicted.
Document decisions
Ask questions about long text or JSON documents and receive answers with source passages.
Evidence and rules
Rank evidence and combine facts with rules to reach conclusions.
Local NLI model
Runs a local natural language inference model rather than calling an external LLM service.
Multiple interfaces
Use it in-process from Python, via POST /v1/systemone (state + typed questions), via POST /v1/documents/decide (documents + typed questions), or through a TypeSafe-compatible SDK endpoint.
How It Works
- 1
Install the package
Install via pip (pip install OpenDecision) or uv (uv add OpenDecision).
- 2
Define state, instructions, and criteria
Pass application state as text, a typed question/instruction, and labeled criteria to an engine primitive.
- 3
Get structured results
The engine runs its local NLI model and returns structured values such as a choice name, a 0–1 score, weighted scores, or support/contradiction relations.
Pros & Cons
Pros
- Open source under the Apache 2.0 license
- Runs a local NLI model, so decisions don't depend on an external LLM API
- Returns structured values (choices, scores, relations) rather than free-form text
- Four typed primitives (Choice, Noul, Score, Relation) cover different decision shapes
- Multiple integration options: in-process Python, HTTP API, and TypeSafe-compatible SDK endpoint
- Document decisions include source passages, making answers traceable
Cons
- Python-centric; no SDKs for other languages are documented
- Runs a local NLI model, which may require local compute resources
- Early-stage, single-maintainer project (deepanwadhwa/OpenDecision)
- No hosted/cloud service option — everything runs locally or on your own server
- Documented demo and examples (ViZDoom bot, insurance, GDPR) are narrow; broader production use cases are not shown
Who It's For
Best for
- Developers who want deterministic, structured decision outputs (options, scores, relations) inside Python applications
- Teams that need decisions computed locally without sending data to an external LLM service
- Builders of agents or automation that need typed action selection, as shown in the ViZDoom demo
- Applications that need to answer questions over long text or JSON documents with cited source passages
Not ideal for
- Teams looking for a managed, hosted decision API
- Non-Python stacks without going through the HTTP API
- Use cases requiring generative, free-form LLM responses rather than typed answers
- Organizations that need vendor support, SLAs, or enterprise plans
Use Cases
- Developers choosing actions for bots
- Engineers routing customer support tickets based on state
- Teams asking questions about text or JSON documents
- Applications processing insurance and GDPR examples
Pricing
Open source under the Apache 2.0 license; no paid plans are offered. Installable free via pip or uv.
Integrations
- TypeSafe-compatible SDK client endpoint
FAQ
What does OpenDecision do?
It answers typed questions about application state and documents using a local natural language inference model, returning structured values such as a chosen option, a 0–1 score, a weighted score, or a support/contradiction relation.
Is OpenDecision open source?
Yes. It is licensed under Apache 2.0 and hosted at deepanwadhwa/OpenDecision on GitHub.
How do I install it?
Install with pip (pip install OpenDecision) or with uv (uv add OpenDecision), then follow the get started guide.
What decision primitives does it provide?
Four primitives: Choice (select one option, returns option name and probabilities), Noul (test a statement, returns a 0–1 score), Score (ordered scale, returns weighted score and probabilities), and Relation (compare evidence against a statement and its opposite, returning supports, contradicts, unknown, or conflicted).
Can it answer questions about documents?
Yes. The Document decisions feature lets you ask questions about long text or JSON and get answers along with source passages, via POST /v1/documents/decide.
How can I integrate it with my application?
Four ways: call it in-process from Python, POST state and typed questions to /v1/systemone, POST documents and typed questions to /v1/documents/decide, or use a TypeSafe-compatible SDK client with a local server.
Does it require an external AI API?
No. It runs a local natural language inference model and returns structured values locally.
Are there working examples?
Yes. The docs include a demo where OpenDecision chooses actions for a bot in ViZDoom's Deadly Corridor (Skill 1, Skill 3, and Skill 5 recordings), plus insurance and GDPR examples and code examples for each primitive.