Privacy-preserving fraud infrastructure
Fraud intelligence
without exposure.
Edge Gateway sits inside your bank's perimeter, strips personally identifiable information from every transaction, and forwards only anonymized signals to the shared fraud network. You see the patterns. No one sees your customers.
Deployed on-premise · open source, Apache-2.0 · no raw PII leaves the bank
- SOC 2 Type II
- ISO 27001
- GDPR
- PSD2 / SCA
- PCI DSS
01 — The problem
The moment customer data leaves your core, it becomes someone else's liability.
Fraud rings don't respect institutional boundaries. The same identity launders across a dozen banks, and each one sees only its own slice. Catching it means pooling signals — but pooling raw data means pooling risk, regulatory exposure, and a breach surface no compliance officer will sign off on.
Edge Gateway resolves the contradiction. The intelligence that fights fraud is shared. The data that identifies your customer never is. Pseudonymization happens before the signal leaves the building — one-way and keyed to secrets that never leave your walls.
02 — Architecture
PII stays here. Only the pattern travels.
A single POST to the gateway returns an anonymized fraud signal and forwards it to the Hub. Raw fields never cross the boundary line.
Raw transaction
name · account · amount · geo
SHA-256 · tiering
geohash · bucketing
Cross-institution
pattern detection
03 — The transform
Every identifying field, replaced before it moves.
| Raw PII field | Anonymized output | Method |
|---|---|---|
| National ID (BVN / NIN) | identity_mosaic | HMAC-SHA256( national_id ), keyed by regional_pepper — matches across banks |
| Transaction amount | amount_tier | TIER_1 <$500 · TIER_2 $500–2.5K · TIER_3 $2.5K–10K · TIER_4 >$10K |
| Latitude / longitude | location_zone | Geohash precision 5 (~4.9 km grid) |
| Timestamp | time_bucket | Normalized to UTC, rounded to a 15-minute window |
| Account number | account_hash | SHA-256( account · bank_salt ) |
| Device / IP | device_hash | SHA-256( value · bank_salt ) |
| Counterparty national ID | destination_mosaic | HMAC-SHA256( counterparty_national_id ), keyed by regional_pepper |
The regional pepper is the key — literally. Global mosaics are an HMAC keyed by a shared regional_pepper, so the same person at two different banks produces the same identity_mosaic — the network detects one fraudster across institutions, while no bank can reverse the mosaic back to a name. Without a shared national identifier, the gateway falls back to a bank-local mosaic that never leaves your walls.
04 — See it run
Send a transaction through the live gateway.
Type to preview the transform locally. Then send the raw transaction to a running Edge Gateway — it anonymizes server-side, forwards the signal to the Hub, and returns the real identity mosaic and round-trip time.
checking gateway…
Sending mirrors a bank core posting to the gateway: the raw fields go in, only the anonymized signal comes out and travels onward. The gateway holds no reverse map.
Anonymized signal no PII
computing…
05 — Deployment & security
Runs inside your perimeter. Nothing to trust but math.
- Single static Go binary. No runtime dependencies, no outbound calls except the signal forward. Ships as a hardened container or bare binary.
- One-way by construction. Keyed HMAC-SHA256 with per-bank salts and a shared pepper. The gateway holds no lookup table — no reverse map from signal back to customer.
- Auditable boundary. Every field that crosses the perimeter is enumerable and logged. Compliance can prove what left and what didn't.
- Open source, Apache-2.0. Read every line before you run it, self-host it, and contribute back. Your security team signs off on the real code — no black box.
06 — Interface
A surface small enough to audit in an afternoon.
- GET
/healthService health & readiness. - GET
/metricsOperational metrics — signals, spool depth, uptime. - POST
/processAccept a raw transaction, pseudonymize, sign, forward to the Hub.
curl -s edge.internal.bank/process \
-H 'authorization: Bearer $TOKEN' \
-H 'content-type: application/json' \
-d '{
"national_id": "22345678901",
"name": "Marian Velasquez",
"amount": 6420.00,
"latitude": 51.5074, "longitude": -0.1278,
"timestamp": "2026-01-15T14:07:33Z"
}'
# → 202 Accepted
{ "status": "queued",
"identity_mosaic": "9f2c…b41e",
"mosaic_scope": "global",
"spool_depth": 3 }
Get started
Deploy the privacy layer between your bank and the network.
The gateway is open source — clone it and run it today. For access to the shared intelligence network, we'll walk your security and compliance teams through the boundary model and an on-premise pilot.
For financial institutions and their security teams. We reply within one business day. Prefer to start with the code? View it on GitHub →