Conflicts surfaced before you sign.
A single source can be self-consistent and still be wrong. The way you find out it was wrong is by reading a second source that says something different. An agent reading both and acting on either one in isolation will quietly do the wrong thing. Limma surfaces the disagreement before the action fires.
Two systems of record. One fact. They disagree.
A renewals agent is about to bill a customer for the next quarter. The CRM lists the customer on the Pro plan at one rate. The billing system records the customer on the Enterprise plan at another. Both sources speak to the same fact, paired on the same customer, plan, and billing period. They disagree. Without a verification step the agent silently picks one source and bills on it; the disagreement is never surfaced.
Every paired comparison gets classified.
Tolerance is encoded per metric class, not as a global threshold. A $1 difference on a $3B total is rounding. A $1 difference on cash interest expense is a real arithmetic error. The system knows which is which.
Within tolerance.
Both sources match within the rounding window for this metric class. Recorded in the chain. The user is not interrupted.
Small, outside the band.
Could be rounding, could be early signal. Surfaced as advisory. The output is not blocked, the analyst is informed.
Material disagreement.
Surfaced as blocking. Output cannot be signed off until a human reviews both citations and picks the canonical reading.
The comparison itself is the easy part.
Pairing two values and computing a delta is trivial. The work is every step before the comparison. Four pieces of engineering most teams do not see, and the reason no shortcut produces the same surface.
Entity resolution
Apple Inc., AAPL, and Apple, Inc. must resolve to one entity across thousands of documents. The store carries canonical identifiers (CIK, LEI, ticker, internal mappings) and explicit parent and subsidiary relationships, so a parent and a subsidiary in the same binder never collapse into the same entity.
Metric semantics
Revenue, Net Revenue, Total Revenue, Net Sales, GAAP Revenue, and Adjusted Revenue are five different metrics that often appear under the same heading. The rule library encodes the relationships between them, so false conflicts do not fire when two sources are reporting different definitions.
Period alignment
FY2025 means December for one filer and September for another. H1 can mean calendar or fiscal. Periods are stored as typed date ranges, not labels, so the six months ended June 30 pairs correctly with H1 2025 for a calendar-year filer and not with H1 FY2025 for a September-year filer.
Tolerance calibration
A 0.1% delta on total assets is rounding. A 0.1% delta on a covenant ratio at the breach threshold is the difference between in compliance and in default. The rule library encodes which metrics tolerate what. There is no global tolerance number.
Halted at the conflict, not after the action.
The agent silently picks one source.
The agent ingests every doc, summarizes confidently, and acts on whichever number its tool was configured to read. The disagreement is never surfaced. The action fires. The error is invisible until quarter end, or until the restatement, or until the auditor asks why two numbers in the binder do not match.
The verdict comes back REFUSED. The action waits.
The agent posts the proposed action and its supporting facts. The engine pairs every overlapping value across sources and returns a verdict. Any unresolved conflict means the engine cannot ground the action and the verdict is refused. The action queues for human adjudication. Both citations and the decision become part of the chain.
Wire the verification step into your agent loop.
Submit the proposed action and its supporting facts. Get back proceed, advisory, or refused with the full chain attached. Every cross-source disagreement surfaced before the tool call fires.