Methodology
How Igni turns scattered, official building-permit records into fresh, structured leads — where the data comes from, how we classify and enrich it, how often it refreshes, and how we stay on the right side of each source's license. We document this openly because a data product is only as trustworthy as its sourcing.
Maintained by Igni Research. Last reviewed June 2026.
Where the data comes from
Every permit Igni surfaces originates from an official government open-data feed published by a city, county or metro agency — the same records anyone can request under public-records law. We connect to these through their published interfaces: Socrata open-data APIs, Esri ArcGIS feature services, and bulk CSV exports, depending on what each jurisdiction offers. We do not scrape behind logins or paywalls, and we do not buy permit data from intermediaries.
Before a jurisdiction goes live, we review its terms of use, license and robots policy, confirm the data flow, and record the source so it is auditable. Coverage today spans 37 US states and 65 cities, and we add jurisdictions as we verify new feeds.
How often it refreshes
We poll each source on a schedule tuned to how it updates, ordering records newest-first so the freshest permits are captured as soon as the jurisdiction publishes them. In practice a newly issued or filed permit can reach a subscriber in under a day. When a city later corrects a record we re-ingest it, so late field corrections flow through rather than getting stuck at the version we first saw.
Normalization and deduplication
Each feed has its own field names, date formats and conventions. We map every source into one consistent permit shape — address, dates, permit type, status, valuation and work description — so a permit from one city is comparable to a permit from another. Permits are keyed by source, jurisdiction and version; a reissued permit number bumps the version rather than creating a duplicate, and a project that straddles a jurisdiction boundary is collapsed to a single record so you are not notified twice for the same work.
How we classify ADUs
Identifying accessory dwelling units is the core of our enrichment. When a jurisdiction provides a structured ADU flag or subtype, we use it directly — that is the most reliable signal. Where it does not, we run a keyword classifier over the permit's work description and use codes, tuned to avoid common false positives such as sheds, carports and re-roofs.
For the ambiguous cases the keywords cannot resolve confidently, we run a second stage that uses a Claude large language model to read the description and refine the classification — for example resolving “granny flat” into a detached ADU, or typing an ADU that the city flagged but did not categorize. This stage runs only on the uncertain tail, not on every permit, and it falls back to the keyword result if it is unavailable. A permit is only delivered as a confident ADU when its classification clears a confidence threshold; weaker signals are routed to review rather than overstated.
Location resolution and SB-9 / SB-10 flags
Many feeds omit a ZIP code or provide only coordinates. When a record lacks a usable ZIP, we resolve one — reverse-geocoding from the permit's point geometry, or forward-geocoding from its street address — using a free public geocoder, and quarantine the row rather than guess if neither works. For California, we attach informational SB-9 / SB-10 relevance flags to help surface lot-split and transit-corridor opportunities. These flags are estimates derived from available data, not a legal determination of eligibility.
Licensing and attribution
Open data is not the same as no rules. We track the license of every source — public-records statutes, public-domain dedications, and permissive licenses such as Creative Commons Attribution (CC BY). Where a source requires attribution, we carry that credit through to where its data is shown, and where a source's terms are restrictive we do not onboard it. Several jurisdictions in our coverage require attribution by name, and we honor those obligations as a condition of using the data.
Verify independently
Igni reflects the public record as the source published it. Government feeds contain errors, omissions and corrections, and permitting and housing rules change and vary by jurisdiction. Our data and classifications are informational signals to act on, not legal, financial or construction advice — always confirm a permit and any eligibility against the issuing authority before relying on it. Questions about our methodology, or a record you think is wrong? Email legal@igni.pro or use our contact form.