Audit trail
Full traceabilityEvery number on the dashboard traces to a layer, an execution mode, and a modeling assumption — nothing is a black box. Source: Revolut (Demo Mode) · captured 2026-07-23T00:00:00.000Z
Data Sufficiency / Validation
{
"eligible": true,
"reasons": [],
"sufficiency": {
"users7d": {
"current": 61000,
"required": 500
},
"users28d": {
"current": 232000,
"required": 2000
},
"events7d": {
"current": 540000,
"required": 10000
},
"nonZeroDays28d": {
"current": 28,
"required": 20
},
"historyDays": {
"current": 92,
"required": 28
}
}
}Deterministic Metrics
{
"currentRate": 63,
"baseline": 72.7,
"variance": 4.5,
"projected": {
"d7": 60.9,
"d14": 58.7,
"d30": 53.8
},
"declineProbability": 0.96,
"selfRecoveryProbability": 0,
"escalationProbability": 0.68,
"riskScore": 87,
"impact": {
"value": 24692,
"unit": "conversions",
"description": "~24,692 fewer conversions",
"horizonDays": 30
}
}Forecast Array (p10/p50/p90, 30 days)
[
{
"day": 1,
"p10": 59.8,
"p50": 62.7,
"p90": 65.6
},
{
"day": 2,
"p10": 59.5,
"p50": 62.4,
"p90": 65.2
},
{
"day": 3,
"p10": 59.2,
"p50": 62.1,
"p90": 64.9
},
{
"day": 4,
"p10": 58.9,
"p50": 61.8,
"p90": 64.6
},
{
"day": 5,
"p10": 58.6,
"p50": 61.5,
"p90": 64.4
},
{
"day": 6,
"p10": 58.2,
"p50": 61.2,
"p90": 64.1
},
{
"day": 7,
"p10": 57.9,
"p50": 60.9,
"p90": 63.8
},
{
"day": 8,
"p10": 57.6,
"p50": 60.6,
"p90": 63.5
},
{
"day": 9,
"p10": 57.3,
"p50": 60.2,
"p90": 63.2
},
{
"day": 10,
"p10": 56.9,
"p50": 59.9,
"p90": 62.9
},
{
"day": 11,
"p10": 56.6,
"p50": 59.6,
"p90": 62.7
},
{
"day": 12,
"p10": 56.3,
"p50": 59.4,
"p90": 62.4
},
{
"day": 13,
"p10": 55.9,
"p50": 59.1,
"p90": 62.2
},
{
"day": 14,
"p10": 55.6,
"p50": 58.7,
"p90": 61.9
},
{
"day": 15,
"p10": 55.3,
"p50": 58.4,
"p90": 61.5
},
{
"day": 16,
"p10": 54.9,
"p50": 58.1,
"p90": 61.3
},
{
"day": 17,
"p10": 54.5,
"p50": 57.8,
"p90": 61.1
},
{
"day": 18,
"p10": 54.2,
"p50": 57.5,
"p90": 60.9
},
{
"day": 19,
"p10": 53.9,
"p50": 57.2,
"p90": 60.6
},
{
"day": 20,
"p10": 53.5,
"p50": 56.9,
"p90": 60.3
},
{
"day": 21,
"p10": 53.1,
"p50": 56.6,
"p90": 60.1
},
{
"day": 22,
"p10": 52.7,
"p50": 56.3,
"p90": 59.8
},
{
"day": 23,
"p10": 52.4,
"p50": 56,
"p90": 59.6
},
{
"day": 24,
"p10": 52.1,
"p50": 55.7,
"p90": 59.3
},
{
"day": 25,
"p10": 51.7,
"p50": 55.4,
"p90": 59.1
},
{
"day": 26,
"p10": 51.4,
"p50": 55.1,
"p90": 58.9
},
{
"day": 27,
"p10": 50.9,
"p50": 54.8,
"p90": 58.6
},
{
"day": 28,
"p10": 50.6,
"p50": 54.5,
"p90": 58.3
},
{
"day": 29,
"p10": 50.3,
"p50": 54.1,
"p90": 58.1
},
{
"day": 30,
"p10": 49.8,
"p50": 53.8,
"p90": 57.8
}
]Layer Trace
{
"l1": {
"summary": "Reachability simulated against current system configuration.",
"constraints": [
{
"description": "New iOS onboarding adds an extra confirmation step before first card provisioning",
"value": "+1 step"
},
{
"description": "Share of KYC-passed users who never fund the account in first session",
"value": "27%"
}
]
},
"l2": {
"method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
"cohort": "Standard × New Users × iOS × UK"
}
}Data Sufficiency / Validation
{
"eligible": true,
"reasons": [],
"sufficiency": {
"users7d": {
"current": 84000,
"required": 500
},
"users28d": {
"current": 318000,
"required": 2000
},
"events7d": {
"current": 690000,
"required": 10000
},
"nonZeroDays28d": {
"current": 28,
"required": 20
},
"historyDays": {
"current": 92,
"required": 28
}
}
}Deterministic Metrics
{
"currentRate": 55,
"baseline": 63.3,
"variance": 4,
"projected": {
"d7": 52.8,
"d14": 50.7,
"d30": 45.7
},
"declineProbability": 0.9,
"selfRecoveryProbability": 0.01,
"escalationProbability": 0.68,
"riskScore": 89,
"impact": {
"value": 17268,
"unit": "conversions",
"description": "~17,268 fewer conversions",
"horizonDays": 30
}
}Forecast Array (p10/p50/p90, 30 days)
[
{
"day": 1,
"p10": 50.9,
"p50": 54.7,
"p90": 58.5
},
{
"day": 2,
"p10": 50.5,
"p50": 54.4,
"p90": 58.2
},
{
"day": 3,
"p10": 50.3,
"p50": 54.1,
"p90": 57.9
},
{
"day": 4,
"p10": 49.9,
"p50": 53.7,
"p90": 57.6
},
{
"day": 5,
"p10": 49.6,
"p50": 53.4,
"p90": 57.3
},
{
"day": 6,
"p10": 49.3,
"p50": 53.2,
"p90": 57
},
{
"day": 7,
"p10": 49,
"p50": 52.8,
"p90": 56.8
},
{
"day": 8,
"p10": 48.6,
"p50": 52.5,
"p90": 56.5
},
{
"day": 9,
"p10": 48.2,
"p50": 52.2,
"p90": 56.2
},
{
"day": 10,
"p10": 47.9,
"p50": 51.9,
"p90": 56
},
{
"day": 11,
"p10": 47.6,
"p50": 51.6,
"p90": 55.7
},
{
"day": 12,
"p10": 47.2,
"p50": 51.3,
"p90": 55.3
},
{
"day": 13,
"p10": 46.9,
"p50": 51,
"p90": 55.1
},
{
"day": 14,
"p10": 46.4,
"p50": 50.7,
"p90": 54.9
},
{
"day": 15,
"p10": 46.1,
"p50": 50.4,
"p90": 54.6
},
{
"day": 16,
"p10": 45.8,
"p50": 50.1,
"p90": 54.4
},
{
"day": 17,
"p10": 45.4,
"p50": 49.7,
"p90": 54.1
},
{
"day": 18,
"p10": 45,
"p50": 49.4,
"p90": 53.9
},
{
"day": 19,
"p10": 44.5,
"p50": 49.1,
"p90": 53.6
},
{
"day": 20,
"p10": 44.3,
"p50": 48.8,
"p90": 53.3
},
{
"day": 21,
"p10": 43.8,
"p50": 48.5,
"p90": 53.1
},
{
"day": 22,
"p10": 43.5,
"p50": 48.2,
"p90": 52.9
},
{
"day": 23,
"p10": 43,
"p50": 47.9,
"p90": 52.6
},
{
"day": 24,
"p10": 42.7,
"p50": 47.6,
"p90": 52.4
},
{
"day": 25,
"p10": 42.3,
"p50": 47.3,
"p90": 52.2
},
{
"day": 26,
"p10": 41.9,
"p50": 46.9,
"p90": 52
},
{
"day": 27,
"p10": 41.5,
"p50": 46.6,
"p90": 51.7
},
{
"day": 28,
"p10": 41.2,
"p50": 46.3,
"p90": 51.6
},
{
"day": 29,
"p10": 40.8,
"p50": 46.1,
"p90": 51.3
},
{
"day": 30,
"p10": 40.3,
"p50": 45.7,
"p90": 51.1
}
]Layer Trace
{
"l1": {
"summary": "Reachability simulated against current system configuration.",
"constraints": [
{
"description": "Android 14+ notification delivery reduced, weakening the first-transaction nudge",
"value": "-22% delivery"
}
]
},
"l2": {
"method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
"cohort": "Standard × New Users × Android × EEA"
}
}Data Sufficiency / Validation
{
"eligible": true,
"reasons": [],
"sufficiency": {
"users7d": {
"current": 9200,
"required": 500
},
"users28d": {
"current": 34000,
"required": 2000
},
"events7d": {
"current": 61000,
"required": 10000
},
"nonZeroDays28d": {
"current": 27,
"required": 20
},
"historyDays": {
"current": 92,
"required": 28
}
}
}Deterministic Metrics
{
"currentRate": 12,
"baseline": 14.3,
"variance": 1.3,
"projected": {
"d7": 11.6,
"d14": 11.3,
"d30": 10.4
},
"declineProbability": 0.72,
"selfRecoveryProbability": 0.17,
"escalationProbability": 0.55,
"riskScore": 72,
"impact": {
"value": 322,
"unit": "conversions",
"description": "~322 fewer conversions",
"horizonDays": 30
}
}Forecast Array (p10/p50/p90, 30 days)
[
{
"day": 1,
"p10": 10.4,
"p50": 12,
"p90": 13.5
},
{
"day": 2,
"p10": 10.4,
"p50": 11.9,
"p90": 13.4
},
{
"day": 3,
"p10": 10.3,
"p50": 11.8,
"p90": 13.4
},
{
"day": 4,
"p10": 10.2,
"p50": 11.8,
"p90": 13.3
},
{
"day": 5,
"p10": 10.2,
"p50": 11.7,
"p90": 13.2
},
{
"day": 6,
"p10": 10.1,
"p50": 11.7,
"p90": 13.2
},
{
"day": 7,
"p10": 10,
"p50": 11.6,
"p90": 13.2
},
{
"day": 8,
"p10": 10,
"p50": 11.6,
"p90": 13.2
},
{
"day": 9,
"p10": 9.9,
"p50": 11.5,
"p90": 13.1
},
{
"day": 10,
"p10": 9.9,
"p50": 11.5,
"p90": 13.1
},
{
"day": 11,
"p10": 9.8,
"p50": 11.4,
"p90": 13.1
},
{
"day": 12,
"p10": 9.7,
"p50": 11.4,
"p90": 13
},
{
"day": 13,
"p10": 9.7,
"p50": 11.3,
"p90": 13
},
{
"day": 14,
"p10": 9.6,
"p50": 11.3,
"p90": 12.9
},
{
"day": 15,
"p10": 9.5,
"p50": 11.2,
"p90": 12.9
},
{
"day": 16,
"p10": 9.4,
"p50": 11.2,
"p90": 12.9
},
{
"day": 17,
"p10": 9.4,
"p50": 11.1,
"p90": 12.9
},
{
"day": 18,
"p10": 9.3,
"p50": 11,
"p90": 12.8
},
{
"day": 19,
"p10": 9.2,
"p50": 11,
"p90": 12.8
},
{
"day": 20,
"p10": 9.1,
"p50": 11,
"p90": 12.8
},
{
"day": 21,
"p10": 9,
"p50": 10.9,
"p90": 12.7
},
{
"day": 22,
"p10": 9,
"p50": 10.8,
"p90": 12.7
},
{
"day": 23,
"p10": 8.9,
"p50": 10.8,
"p90": 12.7
},
{
"day": 24,
"p10": 8.8,
"p50": 10.7,
"p90": 12.7
},
{
"day": 25,
"p10": 8.7,
"p50": 10.7,
"p90": 12.7
},
{
"day": 26,
"p10": 8.6,
"p50": 10.6,
"p90": 12.7
},
{
"day": 27,
"p10": 8.5,
"p50": 10.6,
"p90": 12.6
},
{
"day": 28,
"p10": 8.5,
"p50": 10.5,
"p90": 12.6
},
{
"day": 29,
"p10": 8.3,
"p50": 10.5,
"p90": 12.6
},
{
"day": 30,
"p10": 8.3,
"p50": 10.4,
"p90": 12.6
}
]Layer Trace
{
"l1": {
"summary": "No blocking reachability constraints detected.",
"constraints": []
},
"l2": {
"method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
"cohort": "Metal · Investor × Activated × iOS × US"
}
}Data Sufficiency / Validation
{
"eligible": true,
"reasons": [],
"sufficiency": {
"users7d": {
"current": 14000,
"required": 500
},
"users28d": {
"current": 52000,
"required": 2000
},
"events7d": {
"current": 96000,
"required": 10000
},
"nonZeroDays28d": {
"current": 28,
"required": 20
},
"historyDays": {
"current": 92,
"required": 28
}
}
}Deterministic Metrics
{
"currentRate": 19,
"baseline": 18.3,
"variance": 0.7,
"projected": {
"d7": 19.1,
"d14": 19.3,
"d30": 19.6
},
"declineProbability": 0.38,
"selfRecoveryProbability": 0.7,
"escalationProbability": 0.1,
"riskScore": 21,
"impact": {
"value": 0,
"unit": "conversions",
"description": "~0 fewer conversions",
"horizonDays": 30
}
}Forecast Array (p10/p50/p90, 30 days)
[
{
"day": 1,
"p10": 17.9,
"p50": 19,
"p90": 20.1
},
{
"day": 2,
"p10": 17.9,
"p50": 19,
"p90": 20.2
},
{
"day": 3,
"p10": 18,
"p50": 19.1,
"p90": 20.2
},
{
"day": 4,
"p10": 18,
"p50": 19.1,
"p90": 20.2
},
{
"day": 5,
"p10": 18,
"p50": 19.1,
"p90": 20.2
},
{
"day": 6,
"p10": 18,
"p50": 19.1,
"p90": 20.3
},
{
"day": 7,
"p10": 18,
"p50": 19.1,
"p90": 20.3
},
{
"day": 8,
"p10": 18,
"p50": 19.2,
"p90": 20.3
},
{
"day": 9,
"p10": 18,
"p50": 19.2,
"p90": 20.3
},
{
"day": 10,
"p10": 18,
"p50": 19.2,
"p90": 20.4
},
{
"day": 11,
"p10": 18,
"p50": 19.2,
"p90": 20.4
},
{
"day": 12,
"p10": 18,
"p50": 19.2,
"p90": 20.4
},
{
"day": 13,
"p10": 18,
"p50": 19.3,
"p90": 20.5
},
{
"day": 14,
"p10": 18.1,
"p50": 19.3,
"p90": 20.5
},
{
"day": 15,
"p10": 18.1,
"p50": 19.3,
"p90": 20.6
},
{
"day": 16,
"p10": 18.1,
"p50": 19.3,
"p90": 20.6
},
{
"day": 17,
"p10": 18.1,
"p50": 19.3,
"p90": 20.6
},
{
"day": 18,
"p10": 18.1,
"p50": 19.4,
"p90": 20.6
},
{
"day": 19,
"p10": 18.1,
"p50": 19.4,
"p90": 20.7
},
{
"day": 20,
"p10": 18.1,
"p50": 19.4,
"p90": 20.7
},
{
"day": 21,
"p10": 18.1,
"p50": 19.4,
"p90": 20.8
},
{
"day": 22,
"p10": 18.1,
"p50": 19.5,
"p90": 20.8
},
{
"day": 23,
"p10": 18.1,
"p50": 19.5,
"p90": 20.9
},
{
"day": 24,
"p10": 18.1,
"p50": 19.5,
"p90": 20.9
},
{
"day": 25,
"p10": 18.1,
"p50": 19.5,
"p90": 21
},
{
"day": 26,
"p10": 18.1,
"p50": 19.5,
"p90": 21
},
{
"day": 27,
"p10": 18.1,
"p50": 19.6,
"p90": 21
},
{
"day": 28,
"p10": 18.1,
"p50": 19.6,
"p90": 21.1
},
{
"day": 29,
"p10": 18,
"p50": 19.6,
"p90": 21.1
},
{
"day": 30,
"p10": 18.1,
"p50": 19.6,
"p90": 21.2
}
]Layer Trace
{
"l1": {
"summary": "No blocking reachability constraints detected.",
"constraints": []
},
"l2": {
"method": "OLS trend over last 21d, prediction interval from SE(β) × 1.34 misspecification allowance, 20,000-path Monte Carlo → p10/p50/p90",
"cohort": "Premium × Activated × iOS × UK"
}
}Data Sufficiency / Validation
{
"eligible": false,
"reasons": [
"320 users in 7d (need 500+).",
"1500 users in 28d (need 2000+).",
"7200 events in 7d (need 10000+).",
"17 active days in 28d (need 20+)."
],
"sufficiency": {
"users7d": {
"current": 320,
"required": 500
},
"users28d": {
"current": 1500,
"required": 2000
},
"events7d": {
"current": 7200,
"required": 10000
},
"nonZeroDays28d": {
"current": 17,
"required": 20
},
"historyDays": {
"current": 24,
"required": 28
}
}
}Deterministic Metrics
{
"currentRate": 40,
"baseline": 40.4,
"variance": 1.1,
"projected": {
"d7": null,
"d14": null,
"d30": null
},
"declineProbability": 0,
"selfRecoveryProbability": 0,
"escalationProbability": 0,
"riskScore": 0,
"impact": {
"value": 0,
"unit": "conversions",
"description": "INSUFFICIENT SIGNAL",
"horizonDays": 30
}
}Layer Trace
{
"l1": {
"summary": "No blocking reachability constraints detected.",
"constraints": []
},
"l2": {
"method": "Suppressed — INSUFFICIENT SIGNAL",
"cohort": "Prepaid/UPI × New Users × Android × India"
}
}Data Sufficiency / Validation
{
"eligible": false,
"reasons": [
"Only 7 days of history (need 14+).",
"6400 events in 7d (need 10000+).",
"6 active days in 28d (need 20+)."
],
"sufficiency": {
"users7d": {
"current": 2100,
"required": 500
},
"users28d": {
"current": 4200,
"required": 2000
},
"events7d": {
"current": 6400,
"required": 10000
},
"nonZeroDays28d": {
"current": 6,
"required": 20
},
"historyDays": {
"current": 7,
"required": 28
}
}
}Deterministic Metrics
{
"currentRate": 43,
"baseline": 43.2,
"variance": 0.5,
"projected": {
"d7": null,
"d14": null,
"d30": null
},
"declineProbability": 0,
"selfRecoveryProbability": 0,
"escalationProbability": 0,
"riskScore": 0,
"impact": {
"value": 0,
"unit": "conversions",
"description": "INSUFFICIENT SIGNAL",
"horizonDays": 30
}
}Layer Trace
{
"l1": {
"summary": "No blocking reachability constraints detected.",
"constraints": []
},
"l2": {
"method": "Suppressed — INSUFFICIENT SIGNAL",
"cohort": "Standard × New Users × iOS × Mexico"
}
}Flow: Deterministic → LLM → UI. The LLM never computes a number; it only interprets the metrics above. On-demand only.
System Prompt (verbatim)
You are a behavioral simulation analyst. You explain what will likely happen NEXT if nothing changes. You do not compute metrics. You do not claim causation. You always express uncertainty. If signal is weak, say "INSUFFICIENT SIGNAL". Output JSON only.