Skip to content

Fraud Detection — Notes#

Functional#

  • Real-time score for payments, logins, signups.
  • Step-up auth on risky flows.
  • Manual review queue.
  • Feedback loop from chargebacks.

Non-functional#

  • p99 < 100 ms decision time.
  • False positive rate watched closely (each FP is friction).
  • Models retrained at least daily.

Capacity#

  • 10k+ events/s peak.
  • Feature store reads: ~10× per event.

Data model#

  • events(id, user_id, type, amount, device, ip, ts)
  • features(user_id, k, v, window) Redis / FS
  • decisions(event_id, score, action, reason_codes[])
  • labels(event_id, label, source, ts) ground truth

Trade-offs#

  • Rule engine vs ML: rules are explainable + fast to add; ML is more accurate. Combine.
  • Latency budget forces feature pre-compute & caching.
  • Bias / fairness matters for high-impact decisions.

Refs#

  • Stripe Radar architecture talks.
  • Uber's fraud detection blog.
  • "Feature stores at scale" (Tecton, Feast).
  • ByteByteGo "Design fraud detection".