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.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_alterationorresidential_alterationdepending on the property - HVAC — folded into
commercial_meporresidential_mep - Solar — folded into
residential_mep(residential solar PV) orcommercial_alteration/commercial_mep(commercial solar) - Fire-protection / sprinkler — folded into
commercial_mep/residential_mep - Data center — folded into
industrial_new
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:/v1/permits?cohort=…&jurisdiction=…) lets you paginate the rows
backing each count.