Demo · synthetic dataThis is what a substrate-built fintech product looks like running. UI is interactive — click any payment, customer, or mandate to drill in. Data is synthetic but consistent across all views.

← Back to /build

Runtime AI

L12 · Phase R3

Every fraud-classification decision PaySafe makes at request time goes through the substrate's runConstrainedAI SDK. The LLM output is bounded by a closed-enum schema; the decision is recorded in L12 with an Ed25519 signature; the chain is verifiable end-to-end with node verify.mjs in 50KB of plain JS.

L12 entries

12

Chain breaks

0 · ever

Schema-valid

83%

p95 latency

296ms

Reviewer-gated

2 / 12

Fallback triggered

2 / 12

Head hash

13e4274c831dc3a2…

RuntimeAISpec

PaySafe fraud classifier

paysafe-fraud-classifier

Classify an authorisation-time payment event as fraud / not-fraud / review / hold-customer-contact. Bounded by PSD3 SCA + DORA Art. 23 obligations. Every decision recorded in L12.

Categoryclassifier
Reviewer gateon-low-confidence (≥ 0.85 confidence)
Fallbackdeterministic-default
Max latency4000ms
Modelanthropic / claude-sonnet-4-5-20250929
Model version2026-05-01

Input schema

  • amountCents·number
  • currency·enum·{ EUR | GBP | USD | CHF | SEK | DKK | NOK | PLN }
  • merchantCategory·enum·{ retail-general | retail-luxury | food-beverage | travel-transport | subscription-digital | gambling | crypto | cross-border-remit | other }
  • countryCode·string
  • cardholderEmail·stringhash-only
  • cardLast4·stringhash-only
  • recentAuthCount24h·number
  • velocityFlag·enum·{ none | low | medium | high }

Output schema (closed-enum)

  • label·enum·{ fraud | not-fraud | review | hold-customer-contact }
  • primarySignal·enum·{ velocity | geography | merchant-category-risk | amount-anomaly | card-not-present-pattern | cardholder-history | no-strong-signal }
  • reasonShort·string

L12 chain — every decision, signed and linked

12 entries · head 13e4274c831d
#RecordedSpecModelLatencySchemaReviewerFallbackHash
12025-05-12 11:30:00paysafe-fraud-classifieranthropic184msvalid8373504dcc
22025-05-12 11:30:01paysafe-fraud-classifieranthropic162msvalidbf6913143f
32025-05-12 11:30:02paysafe-fraud-classifieranthropic218msvalidd1ec79ea79
42025-05-12 11:30:03paysafe-fraud-classifieranthropic173msvalid2a674d7882
52025-05-12 11:30:04paysafe-fraud-classifieranthropic201msvalid85646c404e
62025-05-12 11:30:05paysafe-fraud-classifieranthropic156msvalidbd2fd63546
72025-05-12 11:30:06paysafe-fraud-classifieranthropic234msvalidc7f7e710e7
82025-05-12 11:30:07paysafe-fraud-classifieranthropic148msvalidfb94a83a25
92025-05-12 11:30:08paysafe-fraud-classifieranthropic296msvalidapproveddf6518adc4
102025-05-12 11:30:09paysafe-fraud-classifieranthropic211msvalidamended9a0503a5d5
112025-05-12 11:30:10paysafe-fraud-classifieranthropic0msviolationfallbacke4e0f9831c
122025-05-12 11:30:11paysafe-fraud-classifieranthropic0msviolationfallback13e4274c83

Verify the chain yourself

Download the L12 chain at /paysafe-runtime-ai-receipts.jsonl — the exact bytes the substrate's seed script produced. Verify with the substrate's runnable audit bundle:

# Clone the substrate + verify in 30 seconds (Node 18+ stdlib only)
$ npm run substrate:verify-runtime-ai -- paysafe-runtime-ai-receipts.jsonl

Promethean L12 Runtime-AI Receipt Log
=====================================
schema:               promethean-runtime-ai-receipt-log-1.0
total entries:        12
head hash:            13e4274c831dc3a2…
products observed:    paysafe
specs observed:       paysafe-fraud-classifier
schema violations:    2     ← (2 out-of-enum LLM outputs, both fallback-handled)
fallback triggered:   2     ← (1 schema-violation, 1 LLM-error fallback)
reviewer-gated:       2     ← (2 low-confidence decisions queued + verdict-recorded)

Chain verification
------------------
valid:                true
verified entries:     12 / 12
fully verified:       12 / 12
reason:               ok

Plain Node 18+ stdlib. No external dependencies. ~500 lines of JavaScript anyone can audit. The chain is anchored to substrate state.json's L1 signature; state.json itself is OpenTimestamps- anchored to Bitcoin. End-to-end cryptographic continuity from intent → spec → LLM decision → deployed product → public verification, in one command.

Want this for your product?

Enterprise tier · €2,499/mo · self-service

This live L12 chain is a reference deployment. Your team can have the same shape — your closed-enum spec, your reviewer gate, your signed chain — for your fraud-classifier against PSD3 + DORA. The pilot is fixed scope (one feature, one spec, one chain), fixed price, fixed timeline. Pre-registered falsifiable hypotheses. 50% money-back if the T+90d verdict misses.