Documentation

How the ConData DPM-100 PDF engine emits DUPLICATE claims (deterministic — no LLM).

Overview

Deterministic pdfplumber parser + Stage A/B/C matching. Not LangGraph. JSON analyze returns 410. Production path: Orchestrator Upload → Duplicates Report → this service → mirrored DUPLICATE claims.

Inputs

  • ConData DPM-100 PDF (listing + detail pages).
  • Async /reports/upload or sync /analyze/pdf (≤15MB); max upload 50MB.

How it works

DPM pipeline.
Stage A exact report keys.
StageBehavior
AExact SCAC/Ship/Paid/BOL|PRO; different checks; conf 0.95–0.99
BOptional; ±3 ship days, exact paid, weight ≤50 lbs; score ≥0.80; conf ~0.90
CEarliest check = Original; later payments claim full paid_amount
Persistpaid > 0 → Claim DUPLICATE (confidence attached, not a skip floor)

Evidence

  • engine dpm100-deterministic; match_key; bills with Original / Possible duplicate roles.
  • method dpm_later_payment_full_paid; N bills → N−1 claims.

Accuracy & non-goals

  • Same PDF → same Stage A results; no fuzzy/LLM matching.
  • First-by-check-date is legitimate by rule, not bank-proven.
  • Does not invent duplicates from CSV/JSON; no cannot-audit claim type.

Example

Two rows same SCAC/ship/paid/BOL, different check dates → Stage A cluster; later payment $1,240 → one DUPLICATE claim $1,240 at ~0.97 confidence.