Module unit
The honest state of our data assets per geography: covered, partial, or not yet.
What it is
Coverage is the unit that tells the truth about our proprietary data assets: for any market area a user cares about, it answers whether our zoning intelligence corpus and our market reference layer actually hold data there. It maintains an honest coverage state per area, at three levels: covered, partial, and not yet. When the answer is not yet, it gives the user a way to ask, and that request becomes a recorded business fact rather than a support ticket lost in email.
We built this as its own unit for a reason worth stating plainly. Our data assets are owned and grown in-house, not licensed feeds, so coverage is genuinely uneven while the corpus compounds. The tempting design is to hide that unevenness behind best-effort answers. We rejected it. Fabricated completeness is worse than an honest gap, because an investor who acts on invented zoning data loses real money, and an investor who is told "not yet, ask us" loses nothing and can ask. Coverage exists so the rest of the platform never has to improvise an answer about what we hold.
The questions it answers
Scope and boundaries
In scope: the coverage state of the data assets, the surfaces that report it, and the request flow for missing areas. Coverage reads what the data assets actually hold and reports it; it never generates data and never triggers acquisition on its own.
Out of scope: producing the data (that is the zoning data factory and the analysis compute engine's reference layer), and deciding what gets acquired next.
Withheld by design Tier 3
The acquisition pipeline and its prioritization are held at Tier 3.The contract
What it is responsible for, how it is written to, what it announces, what it guarantees, and what it refuses. Contract shape only; fields, schemas, and payloads are held at Tier 2.
One write door, a small set of business-named commands, as everywhere in the platform. The action the door exists for is the coverage request: a user or the agent asks for an area we do not hold, and the ask becomes a durable business fact. The reported coverage state itself follows what the assets actually hold and changes as the assets grow. Every write re-verifies tenant identity like every write in the system, and the door refuses when the module is off for the tenant.
Withheld by design Tier 2
The command roster is held at Tier 2.Events carry identity plus the business fact, never a data dump. The unit announces the fact that coverage was asked for. Downstream consumers subscribe to the fact, not to our tables. A downstream surface can react to the fact without coverage knowing or caring who is listening.
Withheld by design Tier 3
One boundary here belongs to this package rather than to the unit. Counts and maps of coverage, the extent and geography of the corpus itself, are deal-contingent and held at Tier 3; the asset's shape is part of the asset.What done means
Done for coverage is not a rendered status badge. Done is: every coverage claim on every surface traces to data the assets actually hold, the request flow is reachable from every place a gap is shown, and the unit behaves correctly in the states nobody demos: the empty tenant, the half-covered market, the request against an area that later comes online.
We hold this unit to the same definition of done as the rest of the platform. The spec settles the outcome and the logic before code; every load-bearing rule here is expressed as code, a typed contract or a server-side check or a failing test, never as prose in a document; and the live surface is verified against the real backend in all four states: loading, empty, error, and content. For coverage specifically, the empty state is not an edge case to survive but the core product moment, because not yet is an answer we expect real users to see.
Where it connects