Skip to content
OpenDecision logo

OpenDecision

Open-source semantic decision engine

open source
decision engine
natural language inference
nlp
python
api

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. 1

    Install the package

    Install via pip (pip install OpenDecision) or uv (uv add OpenDecision).

  2. 2

    Define state, instructions, and criteria

    Pass application state as text, a typed question/instruction, and labeled criteria to an engine primitive.

  3. 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.

Similar Products

Qwen Image 3.0 Generator logo

Create text-rich AI images online with guided prompts

Prolific logo

Easily collect high-quality data from real people

Crux logo

An AI personal assistant that works across your desktop, fil

Claude logo

Unfortunately, Claude isn't available here.