Check a decision table before release
Type or paste your decision table. The page runs every combination of the values you give it and shows where the table gives no decision, which rows overlap and what a missing field gets.
Your decision table
| # | ||||
|---|---|---|---|---|
| 1 | ||||
| 2 | ||||
| 3 | ||||
| 4 |
Write cells as >=700, <35 or [620,700), where a square bracket includes the end and a round one leaves it out. Use a word such as broker for text, != for not equal, ANY or an empty cell for any value, and missing for a field the application did not send.
A demo referral table with four rows for credit score and debt-to-income.
Paste from a spreadsheet
Values to test
Every combination of these values runs through the table. The values the rows name are added, and a text column is also tried with any other value.
No outcome
144 of the 468 combinations tested, 30.8%, get no outcome from this table.
Outcome map
Darker cells are decline, approve, refer in that order, red cells get no outcome, orange cells are mixed.
Findings
| Kind | Finding |
|---|---|
| No outcome | 144 combinations match no row; the first is credit_score 620, debt_to_income 35. |
| Overlapping rows | Rows 1 and 4 can both match one application, for example credit_score 710, debt_to_income 25, and both say approve. |
| Overlapping rows | Rows 2 and 4 can both match one application, for example credit_score 670, debt_to_income 25; row 2 says refer, row 4 says approve, and with the current setting it gets approve. |
| Which row wins | 15 combinations get a different outcome if the other matching row wins. |
| Missing field | When credit_score is missing, the table gives decline (13). |
| Missing field | When debt_to_income is missing, the table gives approve (16), decline (12), refer (8). |
Outcomes
| Outcome | Combinations | Share |
|---|---|---|
| decline | 156 | 33.3% |
| approve | 127 | 27.1% |
| refer | 41 | 8.8% |
| No outcome | 144 | 30.8% |
These are counts over the test values, with each combination counted once. They are not counts over real applications, which do not spread evenly.
Test cases
| # | credit_score | debt_to_income | outcome | Deciding row | Why included |
|---|---|---|---|---|---|
| 1 | 780 | 15 | approve | 1 | Inside row 1 |
| 2 | 700 | 15 | approve | 1 | On the edge of row 1 for credit_score |
| 3 | 690 | 15 | refer | 2 | Just past the edge of row 1 for credit_score |
| 4 | 780 | 35 | No outcome | – | On the edge of row 1 for debt_to_income |
| 5 | 780 | 30 | approve | 1 | Just inside the edge of row 1 for debt_to_income |
| 6 | 660 | 15 | refer | 2 | Inside row 2 |
| 7 | 620 | 15 | refer | 2 | On the edge of row 2 for credit_score |
| 8 | 610 | 15 | decline | 3 | Just past the edge of row 2 for credit_score |
| 9 | 660 | 35 | No outcome | – | On the edge of row 2 for debt_to_income |
| 10 | 660 | 30 | approve | 4 | Just inside the edge of row 2 for debt_to_income |
| 11 | 560 | 30 | decline | 3 | Inside row 3 |
| 12 | 620 | 30 | refer | 2 | On the edge of row 3 for credit_score |
| 13 | 610 | 30 | decline | 3 | Just inside the edge of row 3 for credit_score |
| 14 | 560 | 100 | No outcome | – | On the edge of row 3 for debt_to_income |
| 15 | 560 | 95 | decline | 3 | Just inside the edge of row 3 for debt_to_income |
| 16 | 690 | 25 | approve | 4 | Inside row 4 |
| 17 | 650 | 25 | approve | 4 | On the edge of row 4 for credit_score |
| 18 | 640 | 25 | refer | 2 | Just past the edge of row 4 for credit_score |
| 19 | 720 | 25 | approve | 4 | On the edge of row 4 for credit_score |
| 20 | 730 | 25 | approve | 1 | Just past the edge of row 4 for credit_score |
| 21 | 690 | 20 | approve | 4 | On the edge of row 4 for debt_to_income |
| 22 | 690 | 30 | approve | 4 | On the edge of row 4 for debt_to_income |
| 23 | 690 | 35 | No outcome | – | Just past the edge of row 4 for debt_to_income |
| 24 | 620 | 35 | No outcome | – | No row matches |
| 25 | 620 | 40 | No outcome | – | No row matches |
| 26 | 620 | 45 | No outcome | – | No row matches |
| 27 | Missing | 15 | decline | 3 | credit_score not sent |
| 28 | 780 | Missing | approve | 1 | debt_to_income not sent |
Get the result by email
The next step is the same table running on every application, pasted from the spreadsheet, with an overlap check and a simulation before each release. Start free
How checks work
Every combination of the test values runs through the rows from top to bottom. A combination that no row matches has no outcome. Two rows overlap when, column by column, their conditions can both hold for one value; this is worked out from the cells, not from the test values. A combination depends on the setting when the first and the last matching row give different outcomes. A catch-all row has any value in every column; it belongs first when the last matching row wins and last when the first matching row wins. A missing field counts as less than every number in a comparison, as zero in a range, and matches any value and missing.
The checks cover the values tested here. A table with no gaps on them can still have one between two steps.
What the tool works out
A decision table links conditions in each column to an outcome in its result column. This tool runs every combination of the test values through the rows and shows combinations with no outcome, overlapping rows and the result for a missing field.
The result shows where a table may behave differently from its appearance. Use the findings to review row order, the catch-all row and missing values before the decision table goes live.
Common questions
What is a decision table?
A decision table links conditions to an outcome. Each row describes when that outcome applies, using the values in its condition columns.
How do you make a decision table?
Add a condition column for each value the decision uses and a result column for the outcome. Add rows that describe the conditions for each outcome, then test the values the table may receive.
How do you test a decision table?
Run combinations of test values through the rows and check the outcome each combination gets. Include values inside conditions, on their edges, just outside them and values the application did not send.
How do you find overlapping rows?
Two rows overlap when their conditions can both hold for one application. This tool works that out from the cells and shows an example value for each overlapping pair.
What happens when two rows match?
The setting decides whether the first matching row or the last matching row wins. If the rows give different outcomes, the same application can receive a different result when that setting changes.