Methodology
Where every Permit comes from, how it gets its Permit type, and how we infer Follow-on work.
How Permits are collected
Every night we fetch new and changed records from each city's own open-data source. The sources are listed on the data sources page.
- When a City is added we load its history: every Permit issued since Jan 1, 2024 that the source still publishes, so Cities can be compared over whole calendar years.
- A Permit is identified by the city plus the city's own permit number. When the city updates a record, we update ours; it is never listed twice.
- We keep each record exactly as the city published it, so when we correct how a city's records are read, or change a Rule, we apply the change to every Permit we hold.
- The ZIP is the one the city published. Where a city publishes coordinates but no ZIP, we work out the ZIP from the coordinates.
- Each City shows a Data-through date: the issue date of the newest Permit we hold for it. The Status page lists it for every City with the time we last checked the source.
Permit types
Every city classifies permits its own way. For each city we keep a Mapping from its classifications to one of our 13 Trades, and that is the Permit type we show:
Roofing, HVAC, Plumbing, Electrical, Solar, Pool, Fence, Landscaping, Gutters, Windows and doors, Demolition, New construction, Remodel.
A Permit whose classification the Mapping does not cover yet is kept, and shown with the city's own classification until we extend the Mapping.
Follow-on work and the Rules
Follow-on work is a Trade a Permit may lead to. A new house usually needs a fence; a new pool needs a barrier around it. We infer it only from the published Rules below, and every Follow-on work entry on a Permit names the Rule and version that produced it. When all of a Rule's conditions hold, it adds its Trades, apart from the Permit's own Permit type.
| Rule | When | Adds Follow-on work | Why |
|---|---|---|---|
| new-single-family v1 |
| Fence Landscaping Gutters | A new house is usually handed over without a fence, a finished yard or gutters |
| pool-barrier v1 |
| Fence | Residential pool codes (ISPSC, IRC Appendix G) require a barrier fence around a new pool |
| pool-site-work v1 |
| Landscaping | Digging and decking a pool leaves the yard around it to be relandscaped |
| demolition-rebuild v1 |
| New construction | Tearing down a whole house usually clears the lot for a new one |
| reroof-gutters v1 |
| Gutters | Gutters come off for a reroof and are often replaced rather than rehung |
What we won't claim
- That a Permit is an open job. Many Permits already name the contractor doing the work.
- That Follow-on work will happen. It is an inference from a stated Rule, and the Rule is named so you can judge it.
- That we hold every permit a city has issued, or that a city has released everything up to today. We show what the city has published, through the Data-through date.
- Anything about a contractor beyond what the city published. The Contractor name is shown exactly as the city wrote it; two spellings of one company are two names, and we don't rate, verify or license-check anyone.
- Contacts from anywhere but the Permit. A phone number appears only when the city published it on that Permit.
- That the declared value is the price of the job. It is the value the applicant gave the city.