Skip to content
Updated Jun 9, 2026

Fraud Detection

Identifies suspicious patterns across claims, enrollment, billing, and provider activity to flag potential fraud, waste, and abuse (FWA).

Overview

The Fraud Detection service analyses activity across Olly's core services to identify patterns indicative of fraud, waste, or abuse. It operates as a consumer of domain events: it doesn't block transactions but scores them and raises alerts for investigation.

Health insurance fraud takes many forms: phantom claims from providers who never saw the patient, duplicate billing for the same service, upcoding (billing for a more expensive procedure than performed), identity fraud during enrollment, and collusion between providers and members. The service needs to catch these patterns without creating false positives that slow down legitimate operations.

STATUS

This service is in the design phase. The architecture below is the planned direction; implementation has not started.

Fraud Categories

CategoryExamplesData Source
Claims fraudPhantom claims, duplicate billing, upcoding, unbundling, impossible day surgery countsClaims events, provider patterns
Provider fraudBilling for services not rendered, referring to own facilities, credential misrepresentationClaims + provider + care events
Enrollment fraudIdentity fraud, pre-existing condition concealment, retroactive enrollment gamingEnrollment events, eligibility checks
Billing fraudPremium diversion, payment fraud, refund abuseBilling events, payment patterns
Pharmacy fraudPrescription mills, doctor shopping, controlled substance patternsCare prescriptions, provider referrals

Planned Architecture

Claims / Enrollment / Billing / Care / Provider
    │ (Kafka domain events)

┌──────────────────────────────┐
│  Fraud Detection Service     │
│                              │
│  ┌─────────┐  ┌───────────┐ │
│  │ Rules   │  │ ML Scoring│ │
│  │ Engine  │  │ (Phase 2) │ │
│  └────┬────┘  └─────┬─────┘ │
│       └──────┬──────┘       │
│              ▼              │
│       ┌────────────┐        │
│       │ Alert      │        │
│       │ Manager    │        │
│       └─────┬──────┘        │
└─────────────┼───────────────┘

     Work Management (tasks for investigators)
     Notifications (alerts to compliance team)

Phase 1: Rules-Based Detection

Configurable rules that flag suspicious patterns:

  • Velocity checks: >N claims from same provider in X hours
  • Duplicate detection: Same service code + member + date = likely duplicate
  • Threshold alerts: Claim amount > £X for procedure type
  • Pattern matching: Provider billing 7 days/week, member claiming from 3+ providers for same condition
  • Geographic anomalies: Member location vs provider location vs claim date (boundary service integration)

Phase 2: ML-Based Scoring

Statistical models trained on historical claims data:

  • Anomaly detection on claim amounts per procedure code
  • Network analysis for provider-member collusion rings
  • Predictive scoring for high-risk enrollment applications

Planned Data Model

TablePurpose
fraud_rulesConfigurable detection rules (condition + threshold + severity)
fraud_alertsGenerated alerts with score, category, evidence
fraud_investigationsInvestigation lifecycle (open → investigating → confirmed/dismissed)
fraud_watchlistsFlagged parties, providers, or accounts under monitoring
fraud_scoresPer-entity risk scores (updated on each event)

Planned Events

Consumes

TopicPurpose
claims.*All claim lifecycle events for pattern analysis
enrollment.*Policy and quote events for enrollment fraud
billing.*Payment and invoice events for billing fraud
care.*Appointment and prescription events for clinical fraud

Publishes

TopicPurpose
fraud.alert.createdNew fraud alert, triggering a work management task + notification
fraud.investigation.updatedInvestigation status change
fraud.watchlist.updatedEntity added to or removed from watchlist

Integration Points

ServiceDirectionPurpose
Claims← consumesClaim events for pattern detection
Enrollment← consumesEnrollment events for identity/eligibility fraud
Billing← consumesPayment events for financial fraud
Care← consumesPrescription/appointment events for clinical fraud
Provider← readsProvider details for cross-referencing
Boundary Service← readsGeographic plausibility checks
Work Management→ createsInvestigation tasks for compliance team
Notifications→ triggersAlerts to fraud analysts

Open Questions

  • Real-time vs batch? Phase 1 rules can run on each event (real-time). ML scoring may need batch processing on historical windows.
  • Blocking vs advisory? Should high-confidence fraud alerts block claim payment, or always be advisory with human-in-the-loop?
  • Data retention: fraud investigation data has different retention requirements than operational data. What are the regulatory constraints per market?
  • Integration with external fraud databases: do we need to check against industry fraud registers (e.g., CIFAS in UK)?
  • Privacy: fraud scoring on member data has GDPR implications. How does this interact with the consent service?

Design Doc

Not yet written. To be created during design phase.

Olly Health Insurance Platform