Module 04 · proving it’s real
Verify
Claims about identity checked against sources of truth — not taken from the form.
The estimate says the car is a 2022 hatchback owned by Priya. The photos show a plate. The RC shows a chassis number. Verify’s job is to stop trusting the paperwork and start checking it: plate against Vahan, owner against the RC, PAN against the tax registry. Most fraud doesn’t survive a cross-check — if the cross-check actually happens.
What we're going to build
The connector interface
Sources of truth plug in as connectors — Vahan, DL, PAN, GST for motor; different registries for other domains. Async, cached, rate-limited, and fail-soft: a registry being down degrades the report honestly instead of blocking the case.
Cross-source matching
Entities extracted from documents and images are matched across sources, and every match/mismatch is a signal carrying the exact figures compared — "plate in photo: MH12AB1234; RC: MH12AB1234; Vahan: match."
Caching & staleness policy
Registry answers are cached with explicit freshness windows per connector — fast and cheap on repeat lookups, and the report always says how fresh the answer is.
Existing rails as the unfair advantage
Where the business already operates government-record APIs, they slot in as day-one connectors — already built, already sold. The platform makes them composable.
For engineers & architectsimplementation notes
- Connector = a small adapter implementing one interface:
lookup(entity) → attested facts + freshness + source. Circuit-breakered, cached (per-connector TTL), rate-limit aware.
- Registry outage degrades to a
source_unavailable signal with the cache age — the case proceeds and the report says exactly what could not be checked.
- Match semantics are rule-config (exact / normalized / fuzzy-with-threshold) per field per pack — the matcher is generic, the policy is pack.
- Failure modes: stale cache served past TTL is marked stale, never silent; conflicting sources (RC vs registry) emit a conflict signal rather than picking a winner in engine code.
Open questions — for the room
- Connector SLAs: what do we promise when Vahan is slow or down — degrade, retry, or hold?
- What legally counts as a "match" — exact string, fuzzy, or registry-confirmed?
- Which connectors are Phase 1 (RC/Vahan certain) vs Phase 2 (bank, bureau)?
- Pricing: per lookup pass-through plus margin, or bundled into the case price?