Each jurisdiction is hand-verified before it ships: schema, identity keys, access pattern, disciplines covered. No silent fallbacks. No fabricated URLs.
Five stages, fully automated. The same pipeline runs in under five minutes per property.
A jurisdiction is the agency that issues, enforces, or records a regulatory obligation — NYC DOB, DC DCRA, SD Building & Safety. We seed each one with hand-verified discovery: where it publishes data, what shape it returns, what permit-system identifiers it requires.
jurisdictions.source_url · adapter_id · access_method · disciplines[]Every property carries identity keys (BBL/BIN in NYC, parcel_id in DC). The matcher resolves the property's state + city to the set of jurisdictions that govern it. NYC properties auto-resolve BIN from BBL via PLUTO if missing.
matchJurisdictions(property) → [jurisdiction_id, …]Each matched jurisdiction × category becomes an obligation row on the property. Annual fire-safety inspection. Quarterly elevator certificate. Five-year facade. The obligation knows its trigger date, its evidence requirements, and its source authority.
obligations.source_jurisdiction · trigger_rule · max_age_daysThe runtime dispatches the matched jurisdictions through the same OSINT extraction engine, parallel by source. Permits, inspections, violations, complaints — every record returns with the source URL, confidence score, and citation proof.
osint_extractions.source_url · confidence · citation_proofA single NYC DOB integration feeds Construction Permits, Operating Permits, Violations, Code Findings, Inspections, AND Compliance Obligations. Eighteen NYC sources × six categories = 108 simultaneously enriched evidence streams per Manhattan property.
1 jurisdiction → N categories → ∞ recordsEvery record is sourced. Every URL deep-links to the authoritative dataset. Every confidence score is auditable.
Construction, operating, after-hours, demolition. Every record carries dollar value, scope of work, contractor, status.
Boiler, elevator, fire alarm, façade, HPD. Pass / fail, inspector, last-cycle date — surfaced before the next interval lapses.
OATH hearings, ECB summons, DOB stop-work orders. With outstanding balance, hearing date, and resolution path.
311 service requests, code complaints, ECB-cited conditions. Surfaces operational issues before they escalate to violations.
Boiler, elevator, place of assembly, refuge area. Expiry-tracked; renewal obligations auto-created on the property timeline.
PLUTO building footprint, owner of record, tax class, year built, assessed value. The dossier under every other record.
Look at New York. Nine sources, five evidence categories. Each cell below is a category we light up the moment a property's BBL/BIN is confirmed.
| NYC Source | Permits | Inspections | Violations | Complaints | Identity |
|---|---|---|---|---|---|
| DOB Now Build | ✓ | ✓ | |||
| DOB Now Safety | ✓ | ✓ | |||
| OATH ECB | ✓ | ||||
| HPD Code | ✓ | ✓ | |||
| BIS Elevators | ✓ | ✓ | |||
| BIS Boilers | ✓ | ✓ | |||
| Façade FISP | ✓ | ✓ | |||
| NYC PLUTO | ✓ | ||||
| 311 Service | ✓ |
When a broker asks "have you seen the OATH violations on this asset?" — you have, with the deep-link, the hearing date, and the disposition.
Bring proof of ongoing inspection currency to renewal. Not "we maintain it" — the actual DOB Boiler certificate, dated and unexpired.
Open violations with outstanding balance. Permits expiring in 30 days. Fire inspections past the renewal cycle. The portfolio dashboard, sorted by what bites.
Run a building through the engine in five minutes during DD. Permit history, façade compliance, ECB exposure, lien-attractive violations — fully sourced.
When the carrier denies, the file already contains every authoritative record. Sourced, time-stamped, citation-proven. The discovery phase is preempted.
Every backfill is auditable. Every record carries the source URL it came from. Every confidence score above 0.7 auto-approves; below routes to the workbench.
Each tenant has its own jurisdiction catalog, seeded by a one-click admin workbench. Per-property backfill dispatches the matched jurisdictions in parallel, with a per-tenant advisory lock so concurrent runs serialize cleanly. Records persist into osint_extractions with both property_id and location_id set — so a tenant suite's evidence doesn't pollute its building's view, and the building's evidence doesn't drown a tenant's audit.