Rules and Config Engine (BRCE)
No-code authoring of business rules across lending, wallet, fraud and marketplace, with
versioning, effective dating, kill switches and a config dry run.
Maker-checker
Rule builder
Draft v1.3WHEN all of these conditions match
AND
AND
THEN do
Otherwise: if the conditions do not match, evaluation falls through to the next
rule in priority order. No implicit approval is ever granted by a non-match.
Versions
- v1.3 draft editing
You, 20 Jul 2026
- v1.2 live active
Effective 01 Jun 2026 - Grace Umutoni
- v1.1 retired
01 May 2026 - Samuel Nsengimana
- v1.0 retired
01 Apr 2026 - Grace Umutoni
Effective dating
Attention: Activation is blocked until a checker
approves v1.3. The scheduled version supersedes v1.2 automatically at the effective time.
Kill switches
EmergencyA kill switch disables a live rule or engine immediately under an expedited two-person maker-checker, pages the on-call, and is written to the audit log.
Instant Cash auto-decision
Fraud velocity rule
Settlement hold rule
New-customer BNPL gate
Config dry run
Phase 1Evaluate a proposed configuration value against sample inputs and read the outcome difference before anything publishes. It touches nothing and it is the Phase 1 way of seeing a change before you make it.
A dry run is not an approval. Publishing still
needs a change reason, an effective date and a second operator.
Rule catalog
| Rule | Domain | Version | Status | Effective from | Last edited by | Evaluations / day | |
|---|---|---|---|---|---|---|---|
| Instant Cash - high velocity auto-decline | Lending | v1.3 | Draft | 01 Aug 2026 | P. Habimana | - | Edit |
| Wallet cash-out velocity hold | Fraud | v2.1 | Live | 01 Jul 2026 | G. Umutoni | 184,220 | View |
| Settlement dispute auto-hold | Marketplace | v1.4 | Live | 15 Jun 2026 | S. Nsengimana | 9,860 | View |
| KYC Tier 2 daily limit ceiling | Identity | v3.0 | Awaiting checker | 01 Aug 2026 | J. Uwimana | 402,110 | Review |
| Merchant financing eligibility gate | Lending | v1.1 | Killed | Disabled 12 Jul | P. Habimana | 0 | Restore |
Author a rule
Rules are written here without code, versioned, effective dated and executed deterministically. The same inputs on the same version always give the same answer, which is what makes a decision replayable months later.
A rule cannot be made effective in the past.
Draft rules do not touch live traffic. Nothing you write here affects a customer until a second operator publishes it with an effective date.
Rules and Config Engine
Velocity: cash-out attempts per hour, draft v1.4
A draft rule does not touch live traffic. It has no effective date, it is not in any published version, and the engine does not load it. Nothing a customer does is affected by anything on this screen until a checker publishes it.
| Part | Draft v1.4 | Published v1.3 | Change |
|---|---|---|---|
| Applies to | Cash-out requests | Cash-out requests | No change |
| Window | 60 minutes | 30 minutes | Doubled |
| Threshold | 6 attempts | 5 attempts | +1 |
| Match | ALL conditions | ALL conditions | No change |
| Action | Refuse and require step-up | Refuse outright | Softened |
| Scope | Rwanda, all tiers | Rwanda, all tiers | No change |
| Author | m.habimana, today 14:02 |
| State | Draft, not effective |
| Effective date | Not set. A draft with no date cannot be submitted. |
| Execution | Deterministic. Same inputs on the same version always give the same answer. |
| Replayable | Yes. A decision can be replayed months later against its pinned version. |
| Live traffic affected | None |
This draft makes the rule less strict, not more. Softening a fraud rule deserves more scrutiny than tightening one, because the cost of being wrong falls on customers rather than on the platform.
Rules and Config Engine
Version history for the cash-out velocity rule
Every version ever published is still here. The history is append only, so a decision made in March can be replayed against the rule that was actually in force in March rather than against today.
| Version | Effective from | State | Maker | Checker | What changed |
|---|---|---|---|---|---|
| v1.4 | Not set | Draft | m.habimana | - | Window 60 min, threshold 6, action softened to step-up |
| v1.3 | 1 Jun 2026 | In force | m.habimana | t.nkusi | Threshold 5 in a 30 minute window |
| v1.2 | 1 Apr 2026 | Superseded | j.mukama | m.habimana | Threshold 8 in a 60 minute window |
| v1.1 | 15 Feb 2026 | Superseded | j.mukama | t.nkusi | First scoped to Rwanda only |
| v1.0 | 1 Jan 2026 | Superseded | g.nyirahabimana | t.nkusi | Initial version |
| Decisions made under v1.3 | 184,220 since 1 June |
| Decisions replayable | All of them, against v1.3 specifically |
| Can a version be edited | No. A change is a new version. |
| Can a version be deleted | No. |
| Rollback | A new version that restores earlier values, so the history stays honest |
Rules and Config Engine
Dry run of v1.4 against 12 sample inputs
Three of twelve sample inputs change outcome. A dry run evaluates the proposal against supplied inputs and returns the difference. It is not a historical simulation over real traffic, which is a later capability; this is the Phase 1 mechanism and it is honest about what it is.
| Sample input | v1.3 outcome | v1.4 outcome | Difference |
|---|---|---|---|
| 5 cash-outs in 25 minutes, Tier 2 | Refused | Allowed | Now allowed |
| 6 cash-outs in 50 minutes, Tier 2 | Refused | Refused, step-up offered | Recoverable by the customer |
| 9 cash-outs in 40 minutes, Tier 1 | Refused | Refused, step-up offered | Recoverable by the customer |
| 3 cash-outs in 10 minutes, Tier 2 | Allowed | Allowed | No change |
| 12 cash-outs in 15 minutes, Tier 0 | Refused | Refused | No change |
Inputs changing outcome
3 of 12
All in the softer direction
Newly allowed
1
The 5 in 25 minutes case
Now recoverable by step-up
2
Were hard refusals
Newly refused
0
Nothing gets stricter
What a dry run cannot tell you. Whether the one newly allowed pattern is a real customer topping up a market stall or somebody structuring. Twelve samples is a sanity check, not evidence, and the console says so rather than dressing it up as a projection.