SKOOR Risk Money movement. Skoored by AI.

governance-v1 · as of 2026-09-18 01:15Z · 30-day window · simulated data

How the AI is governed

The model-risk record for this tenant, generated from the live record and the code that is running. It answers in the shape of SR 11-7 and NIST AI RMF. Every number carries its n; where nothing has been measured it says null. The same facts are served as JSON at /api/governance for an examiner export.

1. Inventory

Every model in use, what it reads, what it returns, and whether it decides. None of them decide: the written policy routes, a person or the policy closes.

ModelVersionKindDecidesPurposeValidationEvidence
Transaction Risk Skoortrs-v1deterministicnoScore a transfer 0–100 from observed history so the policy can route it.
In: Program history, counterparty history, entity verification and screening state, velocity, amount against declared activity, rail. All read from stored rows; none inferred.
Out: skoor | null, band (clear 0–29, review 30–69, hold 70–100, unscored), n, confidence, signals with weights, reason codes.
src/evals/cases.ts through src/evals/runner.ts (band accuracy, hold-band precision and recall); live calibration per band on /metrics.src/skoor/transaction.ts · /transfers/:id · /api/preflight
Entity Risk Skoorers-v1deterministicnoScore the customer behind transfers from its own rail history.
In: Verification and screening state, return history, activity against declared, screening age.
Out: Same bands, n, confidence, signals.
src/evals/actors.ts (ENTITY_CASES).src/skoor/actors · /entities/:id · /reports/entity/:id
Counterparty Risk Skoorcrs-v1deterministicnoScore the other side of transfers across every program on the tenant.
In: Tenant-wide history with the counterparty, country, first-time flag, returns.
Out: Same bands, n, confidence, signals.
src/evals/actors.ts (COUNTERPARTY_CASES).src/skoor/actors · /counterparties/:id
Agent Risk Skoorars-v1deterministicnoScore an AI agent moving money on a program or on the counterparty side, from observed rail history and its declared mandate.
In: Operator entity, declared purpose and scope, observed transfers.
Out: Same bands, n, confidence, signals.
src/evals/actors.ts (agent cases).src/skoor/actors · /agents
Program Risk Skoorprs-v1deterministicnoRoll a program's KRIs into one number for the board pack and the queue.
In: KRI snapshot: return rates against NACHA thresholds, reserve coverage, review and hold aging, velocity, concentration, verification denials.
Out: skoor | null (null until at least three KRIs have n > 0), band, n.
KRI thresholds are published constants; program detectors gated by src/evals.src/kri/engine.ts · /programs/:id · /reports/weekly/:id
Detectors and typologiespolicy-v1deterministicnoOpen an alert when a transfer, actor or program matches a written condition.
In: Features and the Skoor; KRI snapshots for program detectors.
Out: Alert drafts with a detector name, severity, evidence and a dedupe key. Transfer: skoor_hold, skoor_review, unscored_large, denied_entity_activity, sanctions_or_pep, sanctioned_jurisdiction, structuring_pattern, first_time_counterparty_large, velocity_spike, repeat_pattern, card_fraud_decline. Program: return_rate_breach, return_rate_drift_within_threshold, reserve_coverage, manual_review_aging, overdraft_or_frozen. Typologies: round_trip, layering_chain, dormant_reactivation, rapid_onboarding, amount_just_below_threshold, burst_then_dormant.
src/evals/cases.ts (expected detectors per case) and src/evals/typologies.ts.src/detect/detectors.ts · src/detect/typologies.ts · /alerts
Rule studio rulesrules-<timestamp> per activationrulesnoTenant-written conditions over the same feature vocabulary, opening reviewed alerts.
In: Features; a closed operator set (gt, gte, lt, lte, eq, neq, in, not_in, between, is_null, not_null); an unmeasured field never matches.
Out: A reviewed alert per transfer per day, never automated.
A backtest over stored transfers is required before activation; activation needs a second approver and is chained as an action.src/rules · /rules · /api/rules
Triage draft (large language model)claude-sonnet-5llmnoDraft a narrative and a recommendation for an alert from its evidence. It never decides.
In: The alert's evidence and the policy; structured output only.
Out: narrative, recommendation, confidence; stored on the disposition with narrativeModel; the person's decision is recorded separately and overturnsDraft is set when they disagree.
Overturn rate on /metrics (share of drafts a person disagreed with); demotion of a program's autonomy when overturns exceed the eligibility threshold.src/triage/narrative.ts · /alerts/:id · metrics.overturned

2. The boundary: automated or reviewed

Policy version
policy-v1
May close alone
repeat_pattern, return_rate_drift_within_threshold — only in band clear, no hard signal, program history ≥ 30
Always a person
first_time_counterparty_large, freeze_or_limit, sanctions_or_pep, sanctioned_jurisdiction, denied_entity_activity, structuring_pattern, skoor_hold, reserve_coverage, return_rate_breach
Never automated for any program
agent_hold, counterparty_hold, denied_entity_activity, entity_hold, freeze_or_limit, layering_chain, reserve_coverage, return_rate_breach, round_trip, sanctioned_jurisdiction, sanctions_or_pep, skoor_hold, structuring_pattern
Second approver required
freeze_account, request_to_program, suspend_card_account
Hold band
held before anyone decides; fail closed
Widening the automated side
per program only, through the autonomy ladder: ≥ 10 person decisions in 30 days agreeing with the draft at ≥ 90%, one change per 7 days, demoted when overturns exceed 10%

Per program

ProgramSourceTierPolicy versionGranted detectorsLast change
Harbor Marketplace Payouts (simulated) harbor-marketplacesimulatedsupervisedpolicy-v1none beyond policynever
Lantern Lending (simulated) lantern-lendingsimulatedsupervisedpolicy-v1none beyond policynever
Meridian Remit (simulated) meridian-remitsimulatedsupervisedpolicy-v1none beyond policynever
Northwind Payroll (simulated) northwind-payrollsimulatedsupervisedpolicy-v1none beyond policynever

3. Validation

The labeled sets in src/evals run on every build and gate every change to a weight, a threshold or the policy. They ran again to produce this page.

Transaction Risk Skoor
47 cases · band accuracy 100% · hold band precision 92.3% · recall 100% n=13 · review-or-hold precision 46.2% · recall 100% n=26
Typologies
27 cases · 6 detectors
Entity Risk Skoor
22 cases · band accuracy 100% · hold band precision 100% · recall 100% n=5
Counterparty Risk Skoor
21 cases · band accuracy 100% · hold band precision 100% · recall 100% n=7
Agent Risk Skoor
20 cases · band accuracy 100% · hold band precision 100% · recall 100% n=6
Failures in the labeled sets
0

Against outcomes, live (30 days)

BandShare later badn
clear17.1%35
review62.5%8
hold100%2
unscorednull0
Hold band precision
100%n=2
Hold band recall
15.4%n=13
Coverage (transfers with a Skoor)
100%n=2583

4. Ongoing monitoring: the six numbers

Calibration
clear 17.1%n=35 · review 62.5%n=8 · hold 100%n=2
Coverage
transfers 100%n=2583 · programs 100%n=4
Precision and recall (hold)
100%n=2 · 15.4%n=13
Auto-closed / overturned
0%n=823 · nulln=0
Time to decision (median h)
automated null n=0 · reviewed null n=0
Approved without waiting
2099 transfers n=2583
Event coverage
57.1%n=20 · seen: identity.verification.verified, wire.outgoing_transfer.completed, ach.outgoing_transfer.settled, identity.verification.denied, ach.outgoing_transfer.returned, account.overdrafted, ach.outgoing_transfer.manual_review, ach.outgoing_transfer.submitted, ach.outgoing_transfer.initiated, ach.outgoing_transfer.hold_created, swift.outgoing_transfer.initiated, identity.verification.created, card.transaction.authorization, realtime.outgoing_transfer.completed, ach.outgoing_transfer.completed, account.overdraft_released, wire.outgoing_transfer.initiated, identity.verification.manual_review, realtime.outgoing_transfer.initiated, identity.verification.pending

5. Change control

Policy versions on record
0 (0 active)
Rules
0 active in no version yet · 0 versions · gate: backtest on record, then a second approver; activation is an action on the chain
Hash chain
verified · 0 records checked · dispositions 0 · actions 0
Schema
drizzle/ (0000_init … 0003_milestone_c), applied at container start; schema changes are code-reviewed migrations, never manual DDL

No stored policy versions yet: the written policy-v1 is in force.

6. Human oversight

Attribution
Every API decision carries X-Operator (or key:<prefix> for an API key); every dashboard decision the operator cookie name; stored on dispositions.decided_by and actions.requested_by / approved_by.
Decision clocks
auto 1h · standard 24h · complex 72h · appeal 168h
Decisions in window
0 total · 0 by a person · 0 under policy · 0 overturned the draft (null: no drafted decisions yet)
Second approver
freeze_account, request_to_program, suspend_card_account
The language model
Drafts a narrative and a recommendation from the evidence; never decides, never acts, never widens the automated side. A person's disagreement is recorded as overturnsDraft and feeds the autonomy ladder.
model: claude-sonnet-5

7. Data

Null rule
A score or metric is null until it has been measured, and always carries n. Unscored is treated as review, never as clear.
No fabrication
src/evals/no-fab.arch.test.ts fails the build if any scorer returns a number without an observation behind it.
Retention
Events are stored as received (events.raw) with the delivery signature result; transfers, actors, alerts, dispositions and actions are never deleted on a Column-sourced program; the sandbox reset touches simulated programs only.

8. Where each requirement is met

FrameworkSectionRequirementIn this recordEvidence
SR 11-7III. Model inventoryAn inventory of models in use, their purpose, inputs, outputs and versions.inventoryThis record, section Inventory; versions are constants in src/domain.ts and stored on every scored row (transfers.skoor_version, actor_skoors.version).
SR 11-7IV. Model development, implementation and useSound design, documented assumptions, testing before use, clear limits of use.inventory.validation, boundaryEval sets in src/evals gate every weight, threshold and policy change (src/evals/*.test.ts); the automated-or-reviewed line is written policy (/policy) and can only widen per program through the autonomy ladder (src/autonomy/ladder.ts).
SR 11-7V. Model validationEvaluation of conceptual soundness, ongoing monitoring, outcomes analysis (back-testing).validation, monitoringBand accuracy and hold-band precision/recall on the labeled set (validation.transaction); live calibration per band, hold-band precision and recall against outcomes (monitoring.calibration, monitoring.holdBand); rule backtests before activation (src/rules/service.ts backtest).
SR 11-7V. Ongoing monitoringConfirm the model is implemented appropriately and performing as intended; process verification and benchmarking.monitoring, changeControl.chainSix metrics with n, persisted daily (metrics_daily); hash-chain verification on every disposition and action (/api/record/verify); NO-FAB architecture test forbids a number without an observation (src/evals/no-fab.arch.test.ts).
SR 11-7VI. Governance, policies and controlsBoard and senior management oversight, policies and procedures, roles, internal audit, documentation.boundary, changeControl, oversightWritten policy with a version on every alert (alerts.policy_version); program autonomy versions with basis and approvers (policies table); two-approver actions (TWO_APPROVER_ACTIONS); every decision attributed (dispositions.decided_by); examiner export (/api/record/export).
SR 11-7VI. Vendor and third-party modelsValidation and monitoring of vendor models; contingency if the vendor model is unavailable.oversight.llmRoleThe language model drafts only; a draft is never a decision. If the model is unconfigured or fails, a template draft with model: null is stored and the alert waits for a person (src/triage/narrative.ts).
NIST AI RMFGOVERNPolicies, accountability, roles, risk tolerance, documentation and transparency.boundary, oversight/policy; X-Operator on every API decision; decision clocks (due_at, sla_tier) from tenant policy; this record.
NIST AI RMFMAPContext, intended use, limits, impacted parties, known risks.inventoryEach entry states purpose, inputs, output, where used and whether it decides (none do). Unscored band: too little history is treated as review, never as clear.
NIST AI RMFMEASUREMetrics, test sets, evaluation of performance, tracking over time.validation, monitoringEval sets (transaction, typologies, actors) with failures listed by case id; six live metrics with n; daily persistence.
NIST AI RMFMANAGERespond to risks, change control, incident handling, decommissioning.changeControl, oversightVersioned policies and rules with backtest gate and second approver; autonomy demotion when overturns exceed the threshold (ELIGIBILITY.demoteOverturnRate); hash chain reports the first break, never hides it.

SR 11-7 is the Federal Reserve and OCC guidance on model risk management; NIST AI RMF 1.0 is the AI Risk Management Framework. Neither is a certification, and this page claims none: it shows where each expectation is met and points at the row or the line.