f fintech-fraud-sim
Docs Cases Playground

Live Lab

Generate real synthetic fraud data — live.

This page runs the exact same generator that powers the CLI, compiled to run in your browser. Tune the controls, hit Generate, and you get genuine deterministic data you can download, test rules against, and explore. Nothing is sent to a server.

⚙️

Your dataset will appear here

Pick a use case or set the controls, then hit Generate dataset. Everything below — KPIs, charts, the rules tester, and the transaction explorer — fills in with live data.

Rules tester

Write a rule pack, score it instantly.

Edit the JSON, click Run, and see matched transactions plus precision / recall / F1 against the generated is_suspicious labels — the same engine as rules-test.

{{ rulesError }}

Available fields & operators

Operators: eq, ne, gt, gte, lt, lte, in, not_in, contains, exists. Useful fields include risk_score, amount, payment_rail, recommended_action, is_suspicious, country_mismatch, corridor, reason_code_count, user_kyc_status, user_account_age_days, user_device_count, user_failed_login_attempts_24h, user_beneficiary_count_24h, user_ip_country_mismatch.

Run the rule pack to see results.
Precision
{{ pct(rulesResult.precision) }}
Recall
{{ pct(rulesResult.recall) }}
F1 score
{{ rulesResult.f1_score.toFixed(3) }}
Matched {{ number(rulesResult.matched_transactions) }}
Actually suspicious {{ number(rulesResult.actual_suspicious) }}
True positives {{ number(rulesResult.true_positive) }}
False positives {{ number(rulesResult.false_positive) }}
False negatives {{ number(rulesResult.false_negative) }}
True negatives {{ number(rulesResult.true_negative) }}

Per-rule matches

{{ id }}: {{ number(n) }} No rules matched any transaction.

Transaction explorer

Search, filter, and inspect.

{{ number(filteredTx.length) }} of {{ number(dataset.transactions.length) }} transactions match

Transaction Amount Risk Action Pattern
{{ t.transaction_id }} {{ t.currency }} {{ number(Math.round(t.amount)) }} {{ t.risk_score }} {{ t.recommended_action }} {{ t.fraud_pattern }}
No transactions match these filters.

Showing {{ rangeText }} of {{ number(filteredTx.length) }}

Page {{ page }} / {{ totalPages }}

Select a transaction to see why it was flagged.

{{ selectedTx.transaction_id }}

{{ selectedTx.recommended_action }}

User {{ selectedTx.user_id }} sent {{ selectedTx.currency }} {{ number(Math.round(selectedTx.amount)) }} via {{ selectedTx.payment_rail }} on corridor {{ selectedTx.ip_country }}-{{ selectedTx.beneficiary_country }}.

Risk score
{{ selectedTx.risk_score }}/100
Suspicious
{{ selectedTx.is_suspicious ? 'yes' : 'no' }}
Pattern
{{ selectedTx.fraud_pattern }}
Status
{{ selectedTx.status }}

Reason codes

  • {{ r }}
  • No reason codes — clean transaction.