Skip to content

Phase 2: answers to the Phase 1 judge feedback (11 workstreams) - #2

Merged
0xdevabir merged 24 commits into
mainfrom
phase2-improvements
Oct 7, 2026
Merged

0xdevabir merged 24 commits into
mainfrom
phase2-improvements

Conversation

@0xdevabir

@0xdevabir 0xdevabir commented Oct 7, 2026 •

Copy link
Copy Markdown
Owner

Phase 2 improvements in response to the Phase 1 judge feedback. There are 11 workstreams, each with a plan in docs/plans/NN-*.md. All numbers come from runs on synthetic data unless marked otherwise.

# Workstream Measured result
01 External validation (make external) Bootstrap 95% CIs: recall 86.9% [82.7–91.0], FPR 0.52% [0.47–0.58]. Public data: PaySim PR-AUC 0.468 (logistic regression 0.323), BAF 54.8% recall at 5% FPR
02 Bangladesh evidence docs/BANGLADESH_CONTEXT.md with sources; calibrated simulator profile; survey and interview instruments
03 Business case docs/BUSINESS_CASE.md and an interactive P&L: ৳88.6 lakh/month kept from scammers at upay scale, ৳5.27 per ৳1
04 Label realism (make label-realism) Reported-only labels cost 8.5 recall points; mule label propagation and analyst verdicts recover about half
05 Adaptive adversaries (make adversary) Frozen model 96.7% → 79.6%; weekly retraining 98.0%
06 Horizontal scaling (make worker, make loadtest) Redis consumer group: 2.8× throughput at 4 workers, p99 1.0 s → 0.29 s, 0 mismatches against offline evaluation; K8s and KEDA manifests (validated with kubeconform, never run on a cluster)
07 Bank ingest and security Signed ISO 20022 webhook, key rotation, TLS proxy, STRIDE threat model (docs/INGEST.md, docs/SECURITY.md)
08 Customer experience Bangla/English interventions, customer appeals with SLAs, analyst appeals queue, phone e2e
09 Cross-provider consortium Privacy-preserving mule listings (OPRF tokens, signed bundles, hash-chained audit): +4–5 mules caught per 100 at 25% SIM sharing, at the same alert rate; 0% control shows zero gain
10 Bangla/Banglish message model (make intel-compare) External smishing corpus F1 0.66 → 0.97; unseen-script macro-F1 0.81; links a flagged SMS to the payment it triggers
11 Fairness mitigation (make mitigation) Policy v3: young-sender false-alert ratio 5.90× → 1.14×, recall 81.73 → 81.58%. v2 remains the default until sign-off

Integration notes

  • Migrations are chained 0003 → 0004_appeals → 0005 (pending decisions).
  • The message-to-payment link is computed in the ordered scoring step and applied in both the live and the deferred (replay) decision paths.
  • docs/MODEL_CARD.md §13–§17 cover the new evaluations; Reproduce is now §18.

Verification

  • Backend: 364 passed, 0 skipped, including the Postgres and Redis platform tests. Ruff check and format are clean.
  • Frontend: tsc, eslint and pnpm build pass.

Known limits (also documented)

  • The data is synthetic, and no public dataset contains MFS scams with mule chains: the external results support the method, not the 86.9% figure itself.
  • Scaling stops at a few workers because every worker holds the full feature state.
  • The message link lives in process memory.
  • The consortium serves a simulated state.
  • The Bangla texts have not had professional translation review.
  • The PDF and PPTX in docs/ are unchanged.

…ained vs drift-gated models

Opt-in adversary mode in the simulator (default dataset unchanged), make adversary, tests, and MODEL_CARD section 14 with measured results.
Retrains the transaction model on reported-only labels (biased, delayed,
censored) and with PU learning, mule-network label propagation and analyst
verdicts; scores every regime on ground truth at the v4 warn-tier FPR over
five seeds. Adds make label-realism, MODEL_CARD section 15, an additive
label_realism field on /model/report and a console card.
…igned bundles, disputes, audit) with measured simulation
@0xdevabir 0xdevabir changed the title Phase2 improvements Phase 2: answers to the Phase 1 judge feedback (11 workstreams) Oct 7, 2026
@0xdevabir
0xdevabir merged commit 47d5595 into main Oct 7, 2026
0 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant