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.
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
asOfand LendEasyobservedAttimes; - 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.