Consistency overview
Check whether documents in one packet agree, and see what needs a closer look.
Consistency checks whether the documents in one packet agree with each other and with facts you provide. It helps you find copied notes and mismatched details before you decide what to review. Your organization must turn on this Preview feature.
flowchart LR
A["Packet in<br/>documents and known facts"] --> B["Compare<br/>documents and facts"] --> C["Plain answer<br/>what may disagree"] --> D["Proof<br/>where to check"]Read a result
The answer names each problem that needs a human check and shows its location. Needs review means at least one problem was found. Could not finish checking means coverage was incomplete. No problem found in completed checks means the completed checks found none. None of these levels decides a claim.
Run the example packets to compare Marisol and Desmond, Calla's invoice total, and Corwin's ring weight.
For claims reviewers
Start with the document named by a problem, then read the matching document or claim line. A repeated passage alone can be a normal template. Check the details that disagree and record your own decision. Consistency gives no risk score and does not block a claim.
In Preview, the comparison covers one packet only. The three available test packs cover healthcare notes, property and casualty claims, and jewelry appraisals. They use synthetic test documents and are available to test organizations.
Technical details
What It Catches
| Pattern | Example | Pack |
|---|---|---|
| Copied note | Dr. Amari's operative narrative appears under two patients, and only the name and date differ. Or last visit's note is copied into today's with a new date. | Healthcare |
| Reused invoice | A shop's invoice number appears on two claims. A claimant's bill comes back under a new claim number with the same priced lines. The same repair line is charged twice on one claim. | P&C claims |
| Reused lab report number | A gem lab's grading-report number, already filed for one stone, shows up on a stone with a different shape, carat, or size. | Jewelry |
| Impossible value | A stated carat cannot fit the stone's measurements. A bill's printed total is not the sum of its lines. An invoice is dated before the loss it repairs. | Jewelry, P&C claims |
| Identity mismatch | Patient X's note is filed for patient Y and still says "he" and "left knee", while Y is a woman with a right-knee claim. Or the note carries X's name or record number. | Healthcare |
| Wrong document type | You sent a document with expected_type: invoice, and it reads as a claim form or as no document at all. Runs only when you send expected_type. | All packs |
Many repeats are recorded without being raised. A note carried forward with only the date changed gets review only when it is billed and at least 90% of the note is copied. Every other carry-forward stays recorded with action none, because honest clinics carry notes forward every day. A copy with no mistake that points to the other patient is recorded as a template candidate. How Consistency Decides explains why.
How A Packet Flows
- Sections. The sectioner reads each document once, with OCR for scanned pages, and cuts it into sections by role. It masks names, IDs, and dates.
- Keyed tokens. The gateway turns each section into keyed tokens. The engine compares tokens and never reads the text. See Privacy And Billing.
- Match. The engine looks for sections, identifiers, and claim lines that repeat across the documents in the packet.
- Tells. A repeat alone proves nothing, because forms and templates repeat all day. A copied section is shown only when it carries a tell: a mistake that makes sense only if the text came from the other record.
- Local rules. Some rules need one document only. A note that says "she" for a patient recorded as male, a total that does not add up, or an unfilled template placeholder is a finding on its own.
- Findings. Each finding has a tier (
strong,medium,weak), an action (review,warn,none), and typed locations: a character range, a box on a page, or a claim line field.
In Preview the engine compares only the documents inside one packet. It keeps no memory of earlier packets, so status.memory is always off.
Read The Result
| Field | What to check |
|---|---|
findings[] | One entry per visible finding. Empty in Preview for a normal organization, because no rule is promoted yet. An empty list does not certify the packet. |
findings[].action | review (strong tier), warn (medium tier), or none. Route on this. There is no BLOCK. |
findings[].locations | Where the evidence is: a character range in the sectioner's text, a region on a page, or a claim line field. The Playground draws these side by side. |
findings[].tell | Why a repeat became visible, for example cross_explained when the copied text fits the other patient better than its own. |
status | What the run covered: sections compared, memory used, parts skipped. Read it before you trust a quiet result. |
Full field lists are in the API reference. Consistency costs 6 SCU per page (an image document counts as one page). See billing.
Packs
A pack holds the domain knowledge: which section headings to look for, which sections may repeat, the word lists, and the rules. The engine has no domain facts in code. A new domain is a new pack.
| Pack | Documents | What it checks in Preview |
|---|---|---|
healthcare_opnote_test@5 | Operative reports and progress notes, with claim lines | Cross-patient copies, identity swaps, pull-forward notes, duplicate claim lines, sex and anatomy words that contradict the patient's facts, empty required sections, unfilled placeholders, document type |
pc_claims_test@7 | Car and home claims: notice of loss, estimates, supplements, invoices, receipts, proof of loss | Invoice numbers on two claims, bills resent under a new claim, lines charged twice, totals that do not add up, bills dated before the loss, loss accounts that disagree, document type |
jewelry_appraisal_test@2 | Appraisals, grading reports, receipts, and schedules for one item | Stone details that disagree across documents, a grading-report number reused on another stone, a carat that cannot fit the measurements, totals that do not add up, the same appraisal text on two items, document type |
All three are test packs. They run on synthetic documents and are open to test organizations only. Another organization that names one gets 400 unknown_pack. Life insurance is planned and has no pack yet.
What It Does Not Claim
- It does not decide whether a claim is false. A finding says two documents disagree, or one document contradicts the facts you sent, and shows where. A person decides what happened.
- It returns no document verdict and no risk score. Each finding carries its own action.
- It never produces BLOCK, and it never changes the result of
POST /v1/scan. - It does not check facts against the outside world. It compares your documents with each other and with the manifest you send.
- It remembers nothing between packets in Preview, so a copy of a document from last month's packet is not found.
- It is not a scan focus.
POST /v1/scanwithfocus=consistencyreturns400 focus_unsupported_on_endpointand points toPOST /v1/consistency/packets.
Try a sample packet
The Consistency tab in the Playground runs a sample packet or your own files and shows where each finding points.
