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
| Stage | Behavior |
|---|---|
| A | Exact SCAC/Ship/Paid/BOL|PRO; different checks; conf 0.95–0.99 |
| B | Optional; ±3 ship days, exact paid, weight ≤50 lbs; score ≥0.80; conf ~0.90 |
| C | Earliest check = Original; later payments claim full paid_amount |
| Persist | paid > 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.