Methodology
How we calculate closure rates and which permits we count for Philadelphia.
What is a closure rate?
When a contractor pulls a building permit in Philadelphia, an inspector needs to verify the work was completed correctly before the permit can be closed. A closure rate measures the percentage of an applicant's permits that have been properly closed:
The 365-day eligibility rule
A contractor who pulled a permit last month hasn't had time to complete the work yet. To avoid penalizing recent activity, we only count permits issued more than 365 days ago when calculating closure rates.
Permits issued within the last year still appear in the data but are dimmed in the table and not factored into the rate.
Which permits are included?
Philadelphia’s L&I building permit data spans two systems of record — HANSEN (1/1/2007–3/13/2020) and the current ECLIPSE system (3/16/2020–present). We include construction permits from both:
HANSEN system (pre-2020)
| Permit Type | Description |
|---|---|
| Electrical Permit | Electrical wiring, panels, service work |
| Plumbing Permit | Plumbing installations and modifications |
| Alteration Permit | Renovations and alterations to existing buildings |
| Mechanical Permit | HVAC and mechanical system installations |
| Suppression Permit | Fire suppression system installations |
| New Construction Permit | New building construction |
| Demolition Permit | Building demolition |
| Addition Permit | Building additions |
| Fast Form Building Permit | Streamlined building permits for smaller projects |
ECLIPSE system (2020–present)
| Permit Type | Description |
|---|---|
| Electrical Permit | Electrical installations and modifications |
| Plumbing Permit | Plumbing installations and modifications |
| Residential Building Permit | Residential construction, renovations, and additions |
| Commercial Building Permit | Commercial construction and alterations |
| Mechanical / Fuel Gas Permit | HVAC, mechanical, and fuel gas systems |
| Fire Suppression Permit | Fire suppression system installations |
| Demolition Permit | Building demolition |
| General Permit Minor | Smaller-scale general construction work |
| General Permit | General construction permits |
| Site / Utility Permit | Site work and utility installations |
Applicant identification
Philadelphia’s permit data has two relevant fields: a Contractor Name field identifying the contractor on the permit, and a separate Applicant Type field indicating the role of the person who applied (Professional / Tradesperson, Tenant, or Owner). We use the Contractor Name as the applicant for closure rate tracking.
About 22% of permits have no contractor name — these are typically owner-filed permits where no contractor was designated. These permits are still tracked but do not appear on any applicant’s record.
The dataset includes a SYSTEMOFRECORD field that identifies which L&I system each permit originates from: HANSEN (1/1/2007–3/13/2020) or ECLIPSE (3/16/2020–present).
What is excluded?
We exclude permits where low closure rates are systemic or the permit type doesn’t represent inspectable construction work:
| Permit Type | Reason |
|---|---|
| Zoning / Use Permits | Land use and zoning compliance, not construction work |
| Administrative Permits | Administrative permits, not inspectable construction |
| Operations Permits | Operational permits, not construction work |
| Sign Permits | Sign installation, not building construction |
| Zoning Admin Review | Administrative zoning review, not construction work |
| Master Plan | Planning-level permits, not construction work |
Deduplication
The dataset may contain a small number of duplicate permit numbers where the same permit appears in both the legacy and ECLIPSE systems. The standard deduplication process runs during each nightly refresh to handle these cases.
Status classification
Per L&I’s data documentation, a “Completed” status means “construction should be wrapped up and any additional work would require additional permits.” The HANSEN and ECLIPSE systems use different status values. We map both to a common classification:
HANSEN (legacy) system
| Status | Classification |
|---|---|
| COMPLETED / CLOSED | Counted as closed — work verified complete |
| ACTIVE | Counted as open — permit active, work not yet completed |
| EXPIRED | Counted as open — permit expired without completion |
| ABANDONED | Excluded — permit abandoned, closure not applicable |
| REVOKED | Excluded — permit revoked |
ECLIPSE system
| Status | Classification |
|---|---|
| Completed | Counted as closed — work verified complete |
| Issued | Counted as open — permit issued, work not yet completed |
| Expired | Counted as open — permit expired without completion |
| Cancelled | Excluded — permit cancelled before work |
| Refused / Denied | Excluded — permit application refused or denied |
| Stop Work | Excluded — work halted |
| Withdrawn | Excluded — application withdrawn |
We classify Expired as “open” because it indicates the contractor did not complete and close the permit before it expired. The dataset also includes a permitcompleteddate field, but we use the status field for classification as it is the authoritative indicator of permit completion.
Leaderboard criteria
The leaderboard applies two additional filters:
- Minimum 20 rated permits — avoids surfacing statistically insignificant data.
- Active in the last 3 years — prevents the list from being populated by defunct companies.
The leaderboard can be filtered by permit type (e.g., Electrical, Plumbing). When filtered, both thresholds apply only to permits of the selected type.
Median comparison
On applicant detail pages, each closure rate is compared to the median closure rate across all leaderboard-eligible applicants in the same category. This gives context — a 50% closure rate means something different in a category where the median is 40% versus one where it's 80%.
Medians are calculated from the same pool of applicants who meet the 20-permit minimum threshold.
Data source
All data comes from the L&I Building and Zoning Permits dataset on OpenDataPhilly. The dataset is refreshed nightly.
Limitations
This site shows permit closure data. It does not evaluate the quality of anyone's work. There are legitimate reasons a permit may remain open:
- Client non-cooperation — the property owner may fail to schedule the final inspection or grant access.
- Administrative backlog — work may be inspected and approved but not yet updated in the system.
- Project delays — financing, design changes, supply chain issues, or other factors outside the applicant's control.
- Multi-phase projects — large commercial projects may legitimately take years to complete.
- Permit holder vs. contractor — the applicant may be a GC, architect, or owner — not necessarily the person scheduling the inspection.
If you believe there are inaccuracies in the underlying permit data, contact the Philadelphia Department of Licenses & Inspections at [email protected].