Banking — Fraud detection walkthrough¶
Persona path: alice (setup) → carol (analyst) → eve (steward) · Catalogs:
postgres_oltp_banking· Duration: ~30 min · Difficulty: star star
The banking-fraud demo is the AKKO reference end-to-end walkthrough. Carol asks a question in natural language, ADEN generates the SQL and a BI dashboard, Eve curates the catalog metadata, and the dashboard is shared as read-only with the wider audience. PaySim-style synthetic dataset (~0.13% fraud rate) keeps the demo realistic without exposing personal data.
What this proves¶
- A non-technical analyst can pull a curated fraud view without writing SQL.
- The Catalog layer keeps tribal knowledge alive (descriptions, owners, glossary, lineage).
- Governance enforces column masking on PII (
card_pan,customer_name) per role. - A single dashboard can be published read-only via the BI layer to a viewer audience.
Pre-requisites¶
- Demo URL:
https://demo.akko-ai.com - Catalog
postgres_oltp_bankingalready federated (see Demo data sources). - 3 personas provisioned:
alice,carol,eve(passwords kept in the demo Secret).
Step 1 — Alice provisions the analyst role¶
Open https://demo.akko-ai.com, click Sign in, enter alice credentials:
- Username:
alice - Password: read from the Secret
kubectl get secret -n akko akko-demo-personas -o jsonpath='{.data.alice}' | base64 -d
Expected: you land on the Cockpit Home with 20/20 services healthy.
+---------------------------- AKKO Cockpit -----------------------------+
| Home DevHub AI Governance Architecture Logs Monitoring |
+---------------------------------------------------------------------+
| Services healthy: 20/20 |
| |
| [ Compute ] [ Query Engine ] [ Catalog ] [ Lab ] [ BI ] [ AI ] ... |
+---------------------------------------------------------------------+
Navigate to Governance → Roles, confirm akko-analyst is mapped to the LDAP group AD_analyst and that carol is a member.
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/01-alice-roles.png
Step 2 — Carol signs in¶
Sign out, click Sign in again, enter:
- Username:
carol - Password: read from the Secret
kubectl get secret -n akko akko-demo-personas -o jsonpath='{.data.carol}' | base64 -d
Expected: Carol lands on the Cockpit Home with the analyst badge; admin tiles are hidden.
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/02-carol-home.png
Step 3 — Carol opens ADEN¶
Click the AI tab, then ADEN — natural language to SQL, or navigate directly to https://demo.akko-ai.com/#aden.
Expected: the ADEN canvas loads with the catalog picker, the model picker scoped to Carol's allowed models, and a prompt box.
+--------------------------- ADEN ------------------------------------+
| Catalog: [ postgres_oltp_banking v ] |
| Model: [ qwen2.5-coder:7b v ] |
| Prompt: ________________________________________________ [ Ask ] |
+---------------------------------------------------------------------+
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/03-aden-canvas.png
Step 4 — Carol asks the question¶
In the prompt box, type:
show me the top 10 fraudulent transactions over the last 7 days,
include amount, merchant, country, flagged_reason and trust score
Click Ask. Expected pipeline:
- ADEN routes the prompt through the AI Gateway to the local language model.
- ADEN restricts table scope to
postgres_oltp_banking.public.transactionsbased on Carol's grants. - The generated SQL is shown for inspection.
- The query runs through the Query Engine; results render in 0.8 s.
Generated SQL (shape):
SELECT
t.transaction_id,
t.amount,
t.merchant_name,
t.country_code,
t.flagged_reason,
t.trust_score
FROM postgres_oltp_banking.public.transactions t
WHERE t.is_fraud = TRUE
AND t.transaction_ts >= current_timestamp - INTERVAL '7' DAY
ORDER BY t.amount DESC
LIMIT 10;
Expected result table:
| transaction_id | amount | merchant_name | country | flagged_reason | trust_score |
| 78a3-...-9f1 | 9 998.00 | LUXLINE BIJOUX | FR | velocity_burst | 0.07 |
| 1c44-...-0bd | 9 980.00 | ATM ZURICH 14 | CH | geo_jump | 0.09 |
| ... | ... | ... | ... | ... | ... |
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/04-aden-result-table.png
Step 5 — Carol generates the dashboard¶
Click Promote to dashboard in ADEN. Expected: 8 charts auto-built and grouped in a new BI dashboard called AKKO Banking — Fraud last 7 days:
- KPI — Fraud transactions last 7 days
- KPI — Total fraud amount EUR
- KPI — Average trust score
- KPI — Fraud rate (%)
- Bar — Fraud by
flagged_reason - Bar — Fraud by
country_code - Line — Fraud volume by day
- Table — Top 10 fraudulent transactions
+-------------------- AKKO Banking — Fraud last 7 days ----------------+
| 132 tx | 84 712 EUR | 0.11 trust | 0.13% fraud rate |
+----------------------------------------------------------------------+
| [ Bar: by reason ] [ Bar: by country ] [ Line: volume / day ] |
| [ Table top 10 ] |
+----------------------------------------------------------------------+
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/05-bi-dashboard.png
Step 6 — Eve reviews catalog enrichment via NORA¶
Sign out. Sign in as:
- Username:
eve - Password: read from the Secret
kubectl get secret -n akko akko-demo-personas -o jsonpath='{.data.eve}' | base64 -d
Navigate to Governance → NORA — catalog AI reviews.
Expected: NORA shows a queue of "needs review" items on the table postgres_oltp_banking.public.transactions. Each item bundles:
- the column description draft (LLM generated)
- the suggested glossary term (e.g.
Fraud Indicator) - the suggested owner (
bob.engineer@akko-ai.com) - the suggested PII tag (
PII.Cardholder)
Eve clicks Approve on the card_pan column. The Catalog layer commits the metadata and propagates the PII tag to the Governance layer. Eve clicks Approve on the customer_name description.
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/06-nora-review.png
Step 7 — Carol publishes the dashboard¶
Sign out, sign in as Carol again. Reopen the dashboard.
Click Share → Publish read-only, choose the audience akko-viewer. Expected: a green toast Dashboard published to viewers.
Sign out, sign in as dave (viewer). Open the dashboard URL: the dashboard renders correctly, but the column card_pan displays ***MASKED*** and the action menu Edit is hidden.
Screenshot: tests/e2e/playwright/artefacts/demos/banking-fraud/07-viewer-masked.png
Cleanup¶
- Sign out.
- Or keep the session for the next demo (Healthcare cohort).
What this proves¶
- A natural-language question is enough for Carol to obtain an audited fraud table and a dashboard.
- Catalog enrichment happens through NORA review, not by hand-editing JSON.
- Governance masking is enforced at the Query layer; Dave sees masked PII end-to-end.
- The BI dashboard publishes through the BI layer with a strict viewer audience.
Files in the repo¶
| File | Role |
|---|---|
airflow/dags/akko_banking_fraud_demo.py |
Optional seed DAG to top-up the source table |
superset/assets/bootstrap_dashboard.py |
Auto-provisioned BI assets |
helm/examples/realm-akko-k3d.json |
Personas alice, carol, eve, dave wired to roles |