Change a business rule.
Without filing a ticket.

Write your pricing, eligibility, or fraud policy in plain English. SmartDecision turns it into a decision table your team can read and change, and your apps can call. It runs on your own servers.

Loan approval

if credit score is at least 700 and age is between 21 and 65

Approved
  1. if credit score is between 650 and 699 Manual Review
  2. otherwise Rejected
  • Ana 731 Approved
  • Ben 694 Manual Review
  • Chen 682 Manual Review
  • Eli 641 Rejected
Every answer stays the same All 3 tests pass

Drag the threshold. Same rules as the engine, in your browser.

One loan policy, three forms: the sentence your team writes, the table it becomes, and the call your app makes.

01 · Policy

“A loan is approved if credit score is 700 or higher, age is between 21 and 65, and income is at least €10,000. Scores from 650 to 699 go to manual review.”

As your team writes it.
02 · Decision table
credit-score age income loan-status
>= 700 21...65 >= 10000 Approved
650...699 * * Manual Review
* * * Rejected
* is any value. First match wins.
03 · Resolve API
POST /api/resolve/214
credit-score = 712
age          = 34
income       = 18000
{
  "loan-status": "Approved"
}
resolved in 4 ms

No LLM at runtime. The same inputs always get the same answer.

Your policy is buried in someone else's code

Pricing tiers, eligibility checks, fraud thresholds, approval limits. Each one starts as a simple if statement and ends as nested logic nobody wants to touch. The people who own the policy can't read it, and every change waits in the engineering queue.

if (score >= 700) {
  if (age >= 21 && age <= 65) {
    if (income >= 10000) {
      return "Approved";
    }
  }
} else if (score >= 650) {
  return "Manual Review";
}
return "Rejected";
The loan policy from above, the way it usually ships.

How it works

Write it down

Describe the rule the way you'd explain it to a colleague. SmartDecision drafts the table above from it, and every rule reads back as a sentence you can check line by line.

Change it yourself

Lower a threshold and, before you save, SmartDecision shows which answers would change and whether your saved tests still pass. Your apps keep getting the saved rules until you press save.

Your apps ask, the table answers

Applications send inputs to one endpoint and get the answer in milliseconds. The LLM drafts tables; it never answers requests.

Plain infrastructure, on purpose

The questions your engineers will ask, answered up front.

Deployment
One Docker container with the web console embedded, set up by a single install script. The built-in AI, if you choose it, runs as a second container. No cluster to operate.
Storage
SQLite. Your rules are rows in one file on your own disk.
Rule generation
Local LLM. No third-party AI APIs, no per-token bills, no prompts leaving your network.
Rule evaluation
A deterministic comparator engine: equality, ranges, wildcards, numbers, strings, booleans, dates. Same inputs, same answer, every time.
Integration
REST. POST /api/resolve/:id with an API key. Works from any language that can make an HTTP request.
Accountability
Built-in audit log of changes, plus decision tests that document expected behavior next to the rules.

Anywhere policy changes faster than code ships

  • Pricing logic

    Discounts, promotions, and tier thresholds, changed by the people who set them.

    if cart total is at least 100 then shipping = free

  • Eligibility checks

    Who can use a feature, upgrade a plan, or apply, answered the same in every app.

    if plan is pro and seats is at most 50 then can upgrade = true

  • Fraud & risk rules

    Transaction thresholds evaluated inside your network, so sensitive data stays put.

    if amount is above 5000 and account age is below 30 then review = manual

  • Feature rollouts

    Gate features by user attributes or region without redeploying.

    if region is EU and beta is true then new checkout = on

Where does the data go? Nowhere.

The rule engine, the console, and the built-in LLM that drafts your rules all run inside your network. Credit scores, transaction amounts, and eligibility inputs never cross it, when you write a rule or when an app asks for an answer.

Every answer comes from the rules you saved, so it can be tested, audited, and repeated.

Try it on your own server with your own policies. A trial license is free.