AMD Developer Hackathon ACT III · Track 3 · Reinvent Commerce

Wapsi.

Hold the tainted amount,not the whole account.

A cyber-fraud money-trail copilot for a bank’s nodal officer. It traces stolen money through mule accounts, holds only the victim’s money in each one, and hands a supervisor verified paperwork to approve. Gemma 4 + Google ADK, measured on AMD Instinct MI300X.

₹35.26 Cr
whole-account freeze · 101 accounts
₹29.19 L
Wapsi holds · 84 accounts
0
false freezes
Synthetic demo world, 39 cases, 10 fraud typologies
evals/reports/demo.json
The problem01

One fraud payment freezes an honest account. The money mostly never comes back.

₹7,647 Cr
held on complaints
₹167 Cr
restored to victims
2.18%
of held money returned
“Unwarranted orders for freezing accounts shall be discouraged, and accountability measures shall be established.”SOP Para 5(ix) · SOP-5-IX
Source: MHA/I4C SOP for NCRP-CFCFRMS, Custody, Restoration and Grievance Redressal, 02.01.2026, April 2021 to November 2025 · quoted verbatim in data/docs/facts.json · pitch/NUMBERS.md
The problem and the user · showcase case 102

A ₹1,200 grocery sale froze a ₹51,200 shop.

Showcase case 1 · hand-computed · synthetic
₹5,03,50,000
locked in 6 accounts
Account frozen
99.75%

of what the freeze locks belongs to people who did nothing wrong: the landlord, the kirana shop and the payment-aggregator pool.

Who uses Wapsi

The bank’s cyber-fraud nodal officer, who traces split and layered money by hand, with an STR due within 7 working days.

Who it protects

The merchant who loses working capital and the customer who loses the account. The bank loses both, and answers the grievance.

Reinvent Commerce

Keep commerce running and keep the customer: hold the victim’s money, not the business.

Source: showcase case 1, hand-computed synthetic fixture src/wapsi/fixtures/showcase.py · every row in pitch/NUMBERS.md · STR deadline: data/docs/facts.json (FIU-IND FAQ)
How it works03

Trace. Hold the amount. Verify. A human signs.

1

Trace the trail

Follow the complaint’s money through every layer of mule accounts, from NCRP / 1930 complaints, transactions and voice notes.

transactions · NCRP text · voice notes
2

Tainted amount

Compute the victim money in each account, split per victim pro-rata. Separate mules from innocent holders and merchants.

SOP 5(xiii) · pro-rata by default
3

Amount-specific hold

Hold min(victim money, balance) per account. Never a whole-account freeze unless an approved, recorded exception.

SOP 5(ix), 9.1
4

Verified drafts

STR, hold instructions, customer notice, restoration packet. Gemma 4 writes the words; the verifier recomputes every number and citation.

numbers from data, words from the model
5

Maker-checker

A supervisor other than the analyst approves, bound to the draft’s SHA-256 fingerprint. Nothing moves without a human.

two people, one fingerprint
6

Audit chain

Every decision and every agent tool call goes into a hash-chained, append-only log per case. The tamper drill: 6/6 tampering attempts detected, 40-event chain.

python -m wapsi.audit drill
Showcase case 1: freeze baseline ₹5,03,50,000 in 6 accounts Wapsi holds ₹1,42,848 in 5 accounts over-hold ₹0
Simulated CFCFRMS interface: nothing is sent to the portal
Source: pitch/NUMBERS.md (showcase case 1, src/wapsi/fixtures/showcase.py; tamper drill, src/wapsi/audit/drill.py) · rules: AGENTS.md hard rules, SOP IDs in src/wapsi/citations.py · synthetic data
The officer’s case room04

From complaint to an approvable hold plan.

Screens: Streamlit UI (ui/app.py), recorded mode, synthetic showcase case 1; the prose is a labelled replay of Gemma 4 on AMD Token Factory (14 Oct 2026). Click a screen to enlarge.

The demo05

Four minutes, one honest shop, one trail.

4:08 · narrated, with on-screen captions · synthetic data, recorded run

Who uses it: seven people, one fair hold.

The nodal officer, the supervisor, call-centre staff, the police, the auditor, the shop and the agent: how each one uses Wapsi, in plain words.

3:31 · use-case walkthrough · synthetic data, recorded run
Measured on AMD Instinct MI300X06

One MI300X serves the whole copilot.

Measured 14 Oct 2026 on an AMD Instinct MI300X (AMD AI Notebook, ROCm 7.14, vLLM 0.23)

Gemma 4 31B · BF16 · ≈62 GB weights
KV cache + serving
free: 94.7 GB of 191.7 GB
  • Gemma 4 31B · BF16 · ≈62 GB weights
  • KV cache + serving
  • free: 94.7 GB of 191.7 GB

Device peak while serving: 97.0 GB of 191.7 GB. Whisper and the GNN were measured on the same GPU, each in turn.

773
output tok/s on real drafting prompts, concurrency 32 (TTFT p50 0.12 s)
1,590
complete cases per hour through the pipeline, concurrency 16
0.03
Whisper large-v3-turbo real-time factor, steady state: a 31 s voice note in 0.92 s
0.055 s
per GNN epoch, PyTorch on ROCm, 0.39 GB peak

Serving · AMD Instinct MI300X · 14 Oct 2026

ConcurrencyOutput tok/s
155
4181
16474
64699
32 · real drafting prompts773
Cases per hour (c = 16)1,590
Drafts per GPU-hour12,274
Cost per case at $1.99 / GPU-hour$0.0013

Golden eval · 39 cases · a second MI300X (session 4) · 14 Oct 2026

With Gemma 4 writing the proseResult
Holds exact to the paisa1.0
Drafts passing the verifier1.0
Numeric accuracy1.0
Citation validity1.0
Injection leaks0
Prose replaced by fixed text0.0332 (10 / 301)
p95 per case, to verified drafts11.1 s
Raw model, no slots: cases wrong0.4872 (19 / 39)
$1.25

per 1,000 cases. Gemma 4 on one MI300X at the $1.99 per GPU-hour list price, concurrency 16. Open weights on the bank’s own rack: the same code moves from AMD’s hosted API to one AMD GPU by changing three settings.

Sources: editions/amd/evidence/notebook/2026-10-14/ evidence.md + bench/*.json (session 5; cost and throughput: bench/e2e_c16.json) · golden_eval.json (session 4, a second MI300X; see SESSIONS.md) · editions/amd/bench/results/voice-mi300x-notebook-20261014/whisper_rtf.json (steady state, warm-up excluded) · gnn_metrics.json · weights ≈62 GB: pitch/NUMBERS.md (31B × 2 bytes)
A/B · raw Gemma 4 vs Wapsi-bound Gemma 407

Same model. Only one gets the rupees right.

Raw Gemma 4, free text
48.7%
19 of 39 cases: the plan named an amount that is not in the case.
STRs with a wrong amount4 / 20
Clean documents0.8
Wapsi-bound Gemma 4
0
wrong amounts: Gemma writes sentences around slots, and the verifier recomputes every number.
STRs with a wrong amount0 / 17
All bound drafts with a wrong amount0 / 155
Clean documents1.0
Measured 14 Oct 2026 on AMD Instinct MI300X · editions/amd/evidence/notebook/2026-10-14/golden_eval.json (session 4; llm_only_hallucination_rate 0.4872) · ab_hallucination.json (session 5; STR A/B, 155 bound drafts)
Google partner technology08

Gemma 4 writes. Google ADK runs the agent.

ModelGemma 4 31B

  • Primary model for draft prose, complaint and voice-note fields
  • Never types a number: placeholders only
  • Every draft names the model that wrote it

AgentGoogle ADK

  • 10 pipeline tools, native tool calls from Gemma 4
  • JSON tool protocol as the safety net
  • A reply with an amount no tool returned is replaced

EvidenceAgent trace

  • Every tool call with guard and verifier verdicts
  • Redacted and sealed into the case’s audit chain
  • Replay is always labelled as a recording

Live run · AMD Token Factory (Gemma-4-31B-IT), 14 Oct 2026 · AMD-served, not an MI300X benchmark

5 tool calls behind “Open case”
16/16 drafts verified
24/24 values in the reply came from a tool

Predictions · GNN trained on an AMD Instinct MI300X, 14 Oct 2026 · the role is predicted, never the money

Hard world, 64 casesHeuristicGNN · MI300X
Mule ROC-AUC0.94110.9202
Dispositions right0.91980.9198
Innocent-holder recall0.68750.875
Holds exact · over-hold1.0 · ₹01.0 · ₹0
Source: pitch/NUMBERS.md (AMD Token Factory agent run: editions/amd/bench/results/agent-tokenfactory-20261014/agent-demo-showcase-gemma4.json) · tools: editions/shared/tools.py · GNN: editions/amd/evidence/notebook/2026-10-14/ gnn_metrics.json, gnn_hard_eval.json
Honest limits and next steps09

What this is not, yet.

Limits we state

  • All banking data is synthetic. No real customer, victim or bank data.
  • CFCFRMS is a simulated interface; nothing is sent to the portal.
  • The RBI money-mule SOP is a DRAFT (comments closed 2 Oct 2026), never treated as in force.
  • GNN validation AUC 1.0 is on a saturated world; the heuristic stays the default.
  • Our metric is money identified and held correctly, not money restored.

Next

  • A pilot with one bank’s fraud desk on data it controls.
  • Payment aggregators whose pool accounts get frozen.
  • Voice intake with Whisper in the loop, measured end to end.
  • A verifier-filtered LoRA of Gemma 4 on the MI300X.
  • Price set after bank validation calls; 1,586 regulated entities are on CFCFRMS.
Source: AGENTS.md (synthetic data, simulated CFCFRMS, DRAFT RBI SOP) · entities: data/docs/facts.json · docs/originality.md (pre-event core tagged amd-baseline)