The platform

Five pillars over one record.

Every pillar reads and writes the same entity-resolved subject, behind the same consent gate, onto the same audit chain. That is what makes the record worth more than the sum of the products.

Pillar 01 · credit intelligence

Score the cash flow, not the file

Feature extraction turns normalised economic events into a behavioural vector — inflow strength and regularity, net margin, income trajectory, balance resilience, counterparty diversity, digital-rail participation, graph connectivity and repayment outcomes where they exist.

Two governed scorecards run on every request: the registered champion produces the score, the challenger shadow-scores it, and divergence is monitored. The response carries the reason codes that produced the number.

reason codes12-month PDindicative limitfraud probability
Pillar 02 · identity & verification

Verify once, trust everywhere

Identifiers are salted into blind indexes and resolved to a subject on the graph — the spine never needs the raw identifier to know who it is talking about. Verification runs liveness first, then a 1:1 DHA/ABIS biometric match.

A verified subject can be issued an Ed25519 credential that any device holding the issuer public key verifies with no network call at all — which is exactly where connectivity is weakest and per-transaction biometric cost is highest.

entity resolutionliveness1:1 ABISoffline credentials
Pillar 03 · FICA-as-a-service

Five checks, one call, one retention reference

Customer due diligence under the Financial Intelligence Centre Act runs as a single orchestrated operation: identity resolution, DHA verification, liveness, PEP and sanctions screening, and CIPC look-through for juristic persons.

The outcome is risk-rated rather than binary — clear, review or fail — so the review queue holds the cases that need a human and nothing else. Every check writes a retention reference against the five-year obligation.

DHAPEP & sanctionsCIPC look-through5-year retention
Pillar 04 · health intelligence

Price the behaviour, not the declaration

Engagement is measured — steps, gym attendance, screenings, prescription adherence, sleep — and converted through a discrete proportional-hazards form into an explainable morbidity index and a hazard band from H1 to H5.

The actuarial layer prices expected annual claims, a recommended risk reserve and an indicative loss ratio per member. Health data is special personal information under POPIA and is sealed under its own key domain, separate from everything else.

engagement scoringmorbidity indexhazard bandssegregated keys
Pillar 05 · loyalty & engagement

A points economy that cannot quietly lose a point

Points sit on a per-account, append-only, hash-chained ledger. The chain is verified at every boot: a break is treated as an operational incident and the platform refuses to serve rather than serve a balance it cannot prove. Redemption is idempotency-first with an inventory compare-and-set, so a retried request cannot double-spend.

A three-layer guard — database constraint, API validation and runtime check — keeps rewards on the correct side of the National Credit Act's prohibition on inducements to borrow. Partner analytics are exposed only as k-anonymous segments over per-partner pseudonyms.

Live scorecard

Run the real engine, right now.

This is not a mock-up. Moving these controls posts a behavioural vector to /site/api/score-demo, which runs the registered champion and challenger scorecards on this server and returns what they produce. Nothing is enrolled and nothing is stored — there is no data subject here.

Behavioural inputs

The same feature vector that ingestion produces from raw bank, POS and mobile-money rows.

R14 000
R10 500
9 months
72%
14 counterparties
55%
3 days

Leave the box unticked to see how a first-time borrower scores — the scorecard applies a no-history reason code rather than refusing to score.

Live model output

Scoring…

Architecture

Six layers, one boundary.

The platform runs on a zero-dependency Node runtime with a dual-driver data layer: SQLite for edge and single-node deployments, PostgreSQL with row-level security for regulated multi-tenant production. The driver is the only thing that changes.

01
Ingestion
Format detection, parsing, normalisation, categorisation and rejection reporting for bank statements, POS files, mobile-money ledgers, payroll, repayment labels and health feeds.
02
Identity graph
Salted blind indexes resolve identifiers to subjects; graph edges carry employer, supplier and household relationships. Personal information is sealed, never keyed on.
03
Consent & audit
Hash-chained ledgers for consent grants, revocations, processing events and power-of-attorney mandates. Append-only, verified at boot, replayable for a subject access request.
04
Engines
Credit scoring, decisioning, fraud, identity verification, FICA orchestration, health assessment, loyalty and propensity — each behind its own consent purpose.
05
Ecosystem API
Scoped API keys, per-call metering and pricing, idempotent writes, signed webhooks with retry and dead-lettering, and an open health probe.
06
Surfaces
Partner portal, data-subject portal, rewards app and native desktop builds — all against the same API, all under the same RBAC matrix.
Model governance

Registered, versioned, challenged.

No model reaches a decision without being registered with its version, its role and its measured discrimination. These are the models running on this server right now.

ModelVersionRoleGiniKSAUCPopulation
Loading registered models…
Champion/challenger discipline means every score is computed twice. The champion decides; the challenger is recorded alongside it so that promoting a new model is an evidenced decision rather than a leap. Model changes ship with an underwriting memorandum.
Live distributions

What the book looks like today.

Aggregate distributions, read from the platform on page load. Counts per bucket only — nothing here identifies anybody.

Risk bands

Loading…

FICA outcomes

Loading…

Signal sources

Loading…

Population segments

Loading…

Health hazard bands

Loading…