LendEasy/DocsLMS + Servicing·v1
Start integrating
Guides›Servicing Workspace›Compliance & Controls

Compliance engine

Resolve current facts and effective policy into an explainable, expiring decision before a contact, disclosure, AI tool call, or account action can execute.

Before any contact, disclosure, AI tool call or account change executes, the compliance engine answers one question about that exact action: may this proceed, right now, for this borrower? It is a decision boundary rather than a warning banner, and it evaluates one concrete proposed action for one subject at one time. A blocked action does not execute; a missing required fact is not treated as permission.

The implemented engine is an internal application boundary. Current owning routes—such as interaction scheduling, governed case operations, AI dispatch, and voice dial authorization—invoke it with authoritative facts and persist the result.
A named actionScope resolutiontenant · product · debt · purpose · channelFact resolutionvalue · source · asOf · freshness · confidenceEffective rulesauthority · applicability · exceptions · version · datesCombine — a scoped hard stop beats a general allowALLOWEDexecutes nowAPPROVALwaits for a named approverBLOCKEDno overrideMISSING FACTSraises work, never an allow
Missing facts is the branch that matters. It is not a soft block and not a quiet allow — it is the engine saying it could not find out, which raises work to establish the fact rather than guessing in either direction.

Decision contract

Outcome Meaning Executor behavior
allowed All applicable rules passed on sufficiently fresh facts. May proceed before expiry if authorization and state still hold.
allowed_with_warning No prohibition matched, but configured risk or proximity threshold exists. Proceed only under the warning’s declared policy.
approval_required A permitted human must accept the frozen action and evidence. Hold; creator cannot self-approve where separation applies.
blocked At least one non-overridable rule prohibits this path. Do not execute; record blocked outcome and next safe route.
missing_facts A required fact is absent, contradictory, or stale. Refresh, collect evidence, or route to review.

Outcomes include expiresAt and a decision ID. Expiry is deliberately short for contact, restriction, and money-sensitive actions.

Resolution pipeline

The aggregator does not use a simplistic numerical score. A scoped hard stop dominates a general allow; missing input to a required rule prevents an allow; an approval requirement cannot be downgraded by a lower-risk rule.

Fact contract

Every fact behind a recorded decision carries:

  • the fact’s name and value;
  • subject and scope;
  • source and source reference;
  • source asOf and LendEasy observedAt times;
  • freshness classification and maximum age;
  • confidence or verification state where relevant.

Balances can tolerate a different freshness budget than bankruptcy, cease, consent, or payment-in-flight state. Bring your own core integrations publish these budgets explicitly.

Planning versus execution

A direct evaluation helps a screen present the choices available, and never lets the caller bypass the action-owning API. In the current implementation, the action-owning route performs the last-moment decision internally and links it to the result.

Boundaries

The engine can apply versioned controls approved for a tenant; it does not decide which law applies, replace legal review, verify that policy text is legally sufficient, or turn a product label into a regulatory conclusion. Those are governance responsibilities represented in the rule lifecycle.

Never implement “engine unavailable means allow.” A decision-dependent action fails closed or follows its explicit degraded-mode route when facts, policies, or the decision service are unavailable.
Unified search across guides, recipes & the API referenceEsc