figma guide

Designing breach settlement duplicate claim detection and fraud prevention UI in Figma: DUP-* alerts, hold queues, and investigator console

Design breach settlement duplicate claim detection and fraud prevention UI in Figma with DUP-* match alerts, FRD-* hold states, investigator consoles, and claimant-safe messaging.

Published
Updated
Aug 29, 2026
Read time
7 min
Level
Intermediate

Quick answer

Duplicate and fraud UI protects settlement funds without accusing claimants in public copy or leaking match details across CLM- records.* Design DUP- match alerts* for admins (same SSN, address, bank account, device fingerprint), FRD- hold states* that pause PAY-* without telling claimants “fraud detected,” and an investigator console that merges eligibility files, documents, and payment history. Claimants see neutral “under review” messaging; investigators see match scores and side-by-side CLM-* diffs. Connect to settlement claims, payment disbursement, eligibility portal, and audit log. Start from the Figma guides hub and pair with forms, tables, and Dev Mode handoff.


Who this is for

  • Product designers building fraud operations UI for settlement administrators—not consumer banking fraud apps with hard declines.
  • Investigators and QA teams resolving duplicate filings, synthetic identities, and coordinated abuse before disbursement.
  • Class counsel who need defensible holds, audit trails, and claimant communications that do not prejudice legitimate claims.

Fraud and duplicate lifecycle overview

FraudCase — FRD-992-0041 · Primary CLM-992-44102 · Status: Under investigation
├── Detection triggers:
│   ├── DUP-* match: same SSN/DOB on two CLM-* records
│   ├── DUP-* match: shared bank account across unrelated claimants
│   ├── Velocity: 50 CLM-* from one IP in 24 hours
│   ├── Eligibility file mismatch vs self-reported identity
│   ├── [Document](/designing-breach-settlement-claim-document-upload-and-evidence-management-ui-in-figma/) reuse hash across CLM-*
│   └── Manual flag from [call center](/designing-breach-call-center-and-agent-script-ui-in-figma/) or REV-* reviewer
├── ID namespace:
│   ├── DUP-* (duplicate match record) · FRD-* (investigation case)
│   ├── CLM-* (claims involved) · PAY-* (blocked when hold active)
│   └── INV-* (investigator notes—internal only)
├── Outcomes:
│   ├── Cleared → Release hold · Resume PAY-*
│   ├── Merged → Close duplicate CLM-* · Single payment
│   ├── Denied → CLM-* rejected · Counsel notification
│   └── Referred → Law enforcement or special counsel (out of UI scope)
└── Claimant messaging: Neutral review language only
Signal strengthTypical actionClaimant sees
Weak (same last name, different SSN)Queue for batch reviewNo change
Medium (shared address, different unit)FRD-* hold · manual compare”Additional review required”
Strong (duplicate SSN + bank)Auto hold PAY-* · urgent queue”Processing delayed”
Confirmed fraudDeny CLM-* · no “fraud” label to claimant”Claim not approved”

Verdict: Investigators see matches; claimants see process delays—never “you are a fraudster” in the portal.


Duplicate match types and DUP-* records

DuplicateMatch — DUP-992-0188 · Type: ssn_exact · CLM-A vs CLM-B
├── Match types (configurable weights):
│   ├── ssn_exact · ssn_fuzzy (transposition typo)
│   ├── dob_name_combo · email_exact · phone_exact
│   ├── mailing_address_normalized · bank_account_last4
│   ├── device_fingerprint · ip_subnet_cluster
│   └── doc_file_hash (same [DOC-* upload](/designing-breach-settlement-claim-document-upload-and-evidence-management-ui-in-figma/))
├── DUP-* record fields:
│   ├── match_type · confidence_score (internal)
│   ├── clm_ids[] · detected_at · detection_source
│   └── status: open · linked_to_frd · cleared · merged
├── Auto-actions by score:
│   ├── Score ≥ 90 → Create FRD-* · Hold all PAY-* on involved CLM-*
│   ├── Score 70–89 → DUP-* queue for human triage
│   └── Score < 70 → Log only · batch weekly review
└── False positive handling:
    ├── Household legitimate duplicates (spouse filings) → Merge or link
    └── [Minor/guardian](/designing-breach-settlement-minor-claimant-and-guardian-designation-ui-in-figma/) shared address expected

Publish match type legend in admin docs—designers label investigator UI with match type badges, not raw algorithm names.


FRD-* hold states and payment blocks

FraudHold — FRD-992-0041 · CLM-992-44102 · PAY-* blocked
├── Hold effects:
│   ├── Block new PAY-* initiation
│   ├── Pause in-flight PAY-* if status allows recall
│   ├── Block [amendment](/designing-breach-settlement-claim-amendment-and-correction-ui-in-figma/) that changes payee
│   └── Allow contact info updates (optional—configurable)
├── Hold reasons (internal enum):
│   ├── duplicate_claim · identity_mismatch · document_fraud
│   ├── velocity_abuse · bank_risk · manual_referral
│   └── eligibility_dispute (may route to [disputes](/designing-breach-settlement-claims-dispute-and-appeals-ui-in-figma/) instead)
├── Release workflow:
│   ├── Investigator marks cleared → FRD-* closed · AUD-* entry
│   ├── PAY-* queue resumes · Claimant optional notification
│   └── Partial release: clear one CLM-* · keep hold on linked duplicate
└── Status portal (claimant):
    ├── Banner: "Your claim requires additional verification"
    ├── No mention of DUP-* · FRD-* · or other CLM-* IDs
    └── CTA: Upload requested docs · Contact support

Integrate hold flags with payment disbursement—PAY-* components read frd_hold_active.


Investigator console layout

InvestigatorConsole — FRD-992-0041 · Priority: High · 2 linked CLM-*
├── Queue list (sortable):
│   ├── FRD-* ID · Match type · Score · Age · PAY-* $ at risk
│   ├── Assigned investigator · SLA breach flag
│   └── Bulk: Assign · Export for counsel
├── Case detail — split view:
│   ├── Left: CLM-* A vs CLM-* B side-by-side
│   │   ├── Identity fields · Address · Bank · Filed date · IP/device
│   │   └── Highlight diffs in yellow
│   ├── Center: Timeline (AMD-*, DOC-*, PAY-*, login events)
│   └── Right: Actions + INV-* notes (append-only)
├── Evidence panel:
│   ├── [DOC-* viewer](/designing-breach-settlement-claim-document-upload-and-evidence-management-ui-in-figma/) for both claims
│   ├── Eligibility file row match/mismatch
│   └── [Eligibility portal](/designing-breach-victim-eligibility-verification-portal-ui-in-figma/) verification status
├── Decision actions:
│   ├── Clear FRD-* · Release holds
│   ├── Merge CLM-* → Keep primary · Close duplicate with reason
│   ├── Deny CLM-* → Denial reason code · Counsel flag
│   ├── Request evidence → ACT-* on both portals
│   └── Escalate → Senior review · Legal
└── Audit: frd_id · inv_id · decision · clm_ids · pay_amount_held · decided_at

Use tables for queue lists and side-by-side comparison cards for CLM-* diff—critical for investigator speed.


Claimant-safe messaging matrix

MessagingRules — Never expose investigation details to claimants
├── Allowed copy:
│   ├── "We need additional time to verify your claim"
│   ├── "Please upload the requested documents"
│   ├── "Your claim is under review"
│   └── "We could not approve this claim" (denial—no fraud accusation)
├── Forbidden in claimant UI:
│   ├── "Duplicate claim detected"
│   ├── "Fraud hold" · "Suspicious activity"
│   ├── Other claimants' names · CLM-* IDs · Match scores
│   └── "SSN matches another filer"
├── Email/letter templates:
│   ├── Counsel-approved neutral language
│   └── Separate fraud denial template (legal review)
└── Call center:
    ├── [Agent script](/designing-breach-call-center-and-agent-script-ui-in-figma/) references FRD-* internally
    └── Claimant hears verification language only

Prototype claimant portal + email in the same Figma file with a “public safe” component variant.


Comparison: fraud UI vs adjacent settlement surfaces

SurfaceFocusThis UI adds
Settlement claimsIntake validationPost-file duplicate detection
Eligibility portalAm I in the class?Identity cross-check signals
Payment disbursementPAY-* executionHold before send
DisputesClaimant-initiated fightsAdmin-initiated integrity holds
Audit logEvent historyFRD-* / DUP-* decisions

Handoff checklist (Dev Mode)

  • DuplicateMatch — dup_id (DUP-*), match_type_enum, confidence_score, clm_ids[], status_enum, detected_at.
  • FraudCase — frd_id (FRD-*), primary_clm_id, linked_clm_ids[], hold_reason_enum, pay_block_active, investigator_id.
  • InvestigatorConsole — frd_id, side_by_side_field_map[], timeline_events[], decision_enum, inv_notes[].
  • FraudHold — clm_id, frd_id, pay_ids_blocked[], hold_started_at, release_at, claimant_message_key.
  • MessagingRules — surface_enum (portal/email/call), safe_copy_key, forbidden_terms[].

Common mistakes

MistakeWhy it hurtsFix
Show “fraud detected” to claimantsDefamation · litigationNeutral review copy
Display other CLM-* PII in comparePrivacy violationInvestigator role only
Auto-deny on weak matchLegitimate claim lossScore tiers + human review
No PAY-* block on strong matchDouble payoutAuto hold ≥ threshold
Investigator notes editable/deletableAudit failureAppend-only INV-*
Skip household duplicate rulesFalse FRD-* on familiesConfigurable exceptions
Same queue as disputesWrong SLA · trainingSeparate FRD-* queue
Leak match score in APIGaming · privacyInternal API only
Clear hold without AUD-*Court accounting gapLog every release/deny
Block all portal access on holdClaimant can’t upload proofAllow ACT-* doc uploads

  1. Define match types and score thresholds with counsel and fraud vendor before UI.
  2. Design investigator console with side-by-side CLM-* diff and DOC-* viewer embed.
  3. Map FRD- hold to PAY- block** states in disbursement flows.
  4. Prototype claimant-safe messaging for hold, request, and denial paths.
  5. Connect call center scripts to FRD-* lookup without exposing details to claimants.
  6. Export FRD- decision log* for final accounting and counsel.

FAQ

Legitimate duplicate (user filed twice by mistake)?

Merge workflow · Keep earliest CLM-* · Close duplicate · Single PAY-* · Neutral email: “We consolidated your submissions.”

Shared bank account (joint household)?

Household exception rule · Investigator clears · Link CLM-* notes · Do not auto-deny.

Fraud confirmed—what does claimant see?

Denial with generic reason · Appeal path if order allows · Never “fraud” in UI copy without counsel approval.

DUP-* from foreign claimant address formats?

Normalize addresses before match · Reduce false DUP-* on formatting differences.

Integration with tax reporting?

Hold TAX- generation* when FRD-* active on paid-bound CLM-* · Release triggers W-9 regen if identity changed.


Next steps

Share on X

§ Keep reading

Related guides.