Skip to content

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_banking already 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:

  1. ADEN routes the prompt through the AI Gateway to the local language model.
  2. ADEN restricts table scope to postgres_oltp_banking.public.transactions based on Carol's grants.
  3. The generated SQL is shown for inspection.
  4. 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:

  1. KPI — Fraud transactions last 7 days
  2. KPI — Total fraud amount EUR
  3. KPI — Average trust score
  4. KPI — Fraud rate (%)
  5. Bar — Fraud by flagged_reason
  6. Bar — Fraud by country_code
  7. Line — Fraud volume by day
  8. 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