The benefits of using a SaaS decision engine over a spreadsheet

Published on: 2024-08-10 18:36:09

When someone asks about an old credit decision

Your spreadsheet is open. The decision was made earlier, and the person who made it has gone. Now somebody asks a precise question: which policy version ran, which inputs did it find, and who changed that logic?

A decision engine can return those answers with the decision itself. Its output includes a trace of how the result was produced. A spreadsheet has no corresponding place for that complete chain: the revision that ran, where each input came from, the missing value that was not found, and the person linked to the change.

Decisimo decision engine

Try our decision engine.

See pricing

That is the structural difference. It is not a claim about speed or power. It is a record attached to the decision.

The decision records how it was made

When an underwriting team examines a result, it can start with the returned output. For each component in the decision flow, the engine records which component ran and which revision of it was used.

The trace also records the execution status as either successful or failed, along with the execution time and how the inputs were resolved. The time is an execution value recorded in the trace, not a performance comparison.

The input record answers a question that often matters after an underwriting decision: what did the policy actually read? Each input record identifies the source value, the value that was resolved, and whether the input was found. A missing input remains recorded as missing rather than being silently read as an empty value.

The trace is part of the decision’s own output, not a separate side log. It travels with the answer.

The version that ran is a stored release

Suppose the policy has changed since that decision. The next question is whether the old result can still be tied to the logic that produced it.

A release provides that reference. It is a stored snapshot of the whole decision flow, with a release identifier, the decision-flow identifier, the users who created and updated it, insertion and modification timestamps, a name, notes, and the release content. The notes are for release notes in Markdown.

The snapshot contains compiled definitions. It does not merely point to whatever is being edited today. A rule set inside the release carries its rules, each rule’s conditions and actions, its aggregates, functions, and mappings. If somebody edits that rule set afterwards, the existing release does not change.

That distinction matters when an underwriting team reconstructs an earlier decision. The trace identifies the component revision. The release preserves the definitions that belonged to the stored version.

Ten component types maintain their own revision histories: case types, decision tables, decision trees, custom functions, models, policy requirements, rule sets, scorecards, and decision flows. The revision interface lets a user choose a left revision and a right revision, compare them, or view one revision alone. A policy change can therefore be inspected as a versioned object.

The change is connected to a person and a request

Finding the right revision is only part of the investigation. The person responsible for the change matters too.

An audit log records the user, the user identifier, the type of entity changed, the entity itself, and the revision involved. It also records the event type, insertion time, IP address, user agent, details, whether the event succeeded, and the request context.

The revision recorded in the audit log is the important link. It ties the person and the audited entity to the exact version of the logic. The decision trace records that same revision when the component runs.

If an investigator starts with an old outcome, the chain is concrete: the output identifies the revision; the release identifies the stored definitions; the audit log names the user, entity, revision, and request context. A spreadsheet has no corresponding column for that complete relationship.

Some logic can be checked before execution

Before a decision table runs, an underwriting team can ask whether its rows cover the intended inputs cleanly. The platform has a check for that component type.

The check can examine whether two rows have overlapping conditions. It can also identify rows that catch every input and examine whether any input would fall through without a matching row.

Those checks support two specific questions. Could more than one row fire for the same input? Is there an input for which no row catches the case?

The boundary is just as important. The platform does not validate decision logic generally. The overlap and completeness checks exist for the decision-table grid. A grid’s row-and-column structure makes pairwise comparison possible.

Nested rule sets do not expose that same surface. Their library contains rules, conditions, actions, aggregates, mappings, windows, tests, and text generation, but it has no equivalent overlap or completeness validation among nested rules. A decision table receives these particular checks; a nested rule set does not.

Execution has defined semantics

The record tells you what ran. The execution semantics tell you what that component does when it runs.

  • A decision table treats rows as alternatives and stops at the first matching row. Row order is part of the meaning.
  • A scorecard multiplies a bin’s score by the predictor’s weight and sums the results. The total is included in the scorecard result.
  • A custom function computes but does not decide. A function cannot branch; a guard rule is used when a condition is required.
  • External data for one decision is fetched in parallel through the platform’s multi-request execution.
  • A trained model runs as a component in the decision flow, using the same executor shape as the other execution components.

For a credit policy owner, the case for moving beyond a spreadsheet is therefore specific. The engine returns where inputs came from and which component revision ran, preserves the release that ran, connects changes to a person and request, and offers targeted checks for decision-table overlap and coverage.

Those records answer the question that arrives later, after the decision has already been made.

Decisimo decision engine

Try our decision engine.

See pricing