Skip to main content
The PermitCore product UI calls these segments; the API field and endpoint keep the name cohort (e.g. the cohort field on a permit, the /cohorts/distribution endpoint). Same taxonomy — “segment” (product) and “cohort” (API) are interchangeable.
Every permit ingested by PermitCore is classified into one of 23 canonical segments. Segments are the primary axis for slicing the dataset — by use type (commercial / residential / industrial / civic) crossed with scope (new construction / alteration / demolition / MEP / etc.).

The 23 canonical cohorts

multifamily_mep is a newer cohort — filterable and populated, but narrower and not yet certified. It returns real data, but it is not yet held to the ≥99% classification-precision bar the other 22 segments meet. Today it’s classified in 3 metros (primarily Austin — ~72% of rows — plus New York City and Norfolk), and its filings are largely historical (no new filings in the trailing 30-day window at the time of writing). Filter by it knowingly: expect metro-narrow, historical results, not the breadth or certified precision of the core segments. The other 22 are the established, site-certified set.

What’s NOT split out today

The current cohort taxonomy intentionally rolls up several specialty categories that other systems sometimes split:
  • Roofing — folded into commercial_alteration or residential_alteration depending on the property
  • HVAC — folded into commercial_mep or residential_mep
  • Solar — folded into residential_mep (residential solar PV) or commercial_alteration / commercial_mep (commercial solar)
  • Fire-protection / sprinkler — folded into commercial_mep / residential_mep
  • Data center — folded into industrial_new
These are on the data-pipeline roadmap as future sub-cohort splits. For now, query the rolled-up parent and filter downstream by permit-type keywords.

Cohort assignment

Cohort tags are emitted by PermitCore’s LLM-1 classifier per permit. Tags are deterministic per permit (same input → same cohort) and improve over time as the classifier is fine-tuned on operator-validated labels. A per-permit /v1/permits/{id}/explanation endpoint surfacing the classifier’s reasoning is on the roadmap. Every permit has exactly one cohort. No multi-label.

Querying by cohort

The cohort distribution endpoint surfaces per-jurisdiction counts:
See Cohort distribution endpoint → for the full response shape. The permit-listing endpoint (/v1/permits?cohort=…&jurisdiction=…) lets you paginate the rows backing each count.