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.
Try the live demos → Self-hosted: see where your data goes ↓
Loan approval
if credit score is at least and age is between 21 and 65
Approved - if credit score is between
650and699Manual Review - otherwise
Rejected
- Ana 731
Approved - Ben 694
Manual Review - Chen 682
Manual Review - Eli 641
Rejected
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.
“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.| credit-score | age | income | loan-status |
|---|---|---|---|
| >= 700 | 21...65 | >= 10000 | Approved |
| 650...699 | * | * | Manual Review |
| * | * | * | Rejected |
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"; 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.
Lending / Loan approval
Loan approval
What callers would get differently
Manual Review Approved
credit score is between 680 and 699, age is between 21 and 65, income is at least 10000
Rules checked top to bottom · first match wins
-
if credit score is at least
700680 and age is between21and65and income is at least10000Approved -
if credit score is between
650and699Manual Review -
otherwise
Rejected
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/:idwith 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
100then shipping =free -
Eligibility checks
Who can use a feature, upgrade a plan, or apply, answered the same in every app.
if plan is
proand seats is at most50then can upgrade =true -
Fraud & risk rules
Transaction thresholds evaluated inside your network, so sensitive data stays put.
if amount is above
5000and account age is below30then review =manual -
Feature rollouts
Gate features by user attributes or region without redeploying.
if region is
EUand beta istruethen 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.