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.

RuleWhenAdds Follow-on workWhy
new-single-family v1
  • Permit type is New construction
  • Description or the city's own permit type matches single[- ]family
Fence Landscaping Gutters A new house is usually handed over without a fence, a finished yard or gutters
pool-barrier v1
  • Description or the city's own permit type matches \bpools?\b
Fence Residential pool codes (ISPSC, IRC Appendix G) require a barrier fence around a new pool
pool-site-work v1
  • Description or the city's own permit type matches \b(in-?ground|swimming) pools?\b
Landscaping Digging and decking a pool leaves the yard around it to be relandscaped
demolition-rebuild v1
  • Permit type is Demolition
  • Description or the city's own permit type matches \btotal demo|\b(one|two|single)[- ]family\b
New construction Tearing down a whole house usually clears the lot for a new one
reroof-gutters v1
  • Permit type is Roofing
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.