PermitPipeline

Methodology

How the Preconstruction Activity Index is built, what it does and does not measure, and where every figure comes from.

Edition: August 2026 · covering May–July 2026 · data extracted August 24, 2026

Index definition

The Index is a year-over-year momentum measure centered on 100:

Index = 100 × (applications in the latest three complete months) ÷ (applications in the same three months one year earlier)
100 means unchanged. 90 means activity is down 10%. 110 means it is up 10%.

Each city is computed and reported on its own; the two are never combined into a single national score, because their permit systems measure different things. A permit application is an early public indication of intended work, not proof that construction will proceed. PermitPipeline treats it as an early signal.

This edition compares May–July 2026 with May–July 2025.

City universes

New York City

Counted from w9ak-ipjd. The unit is a distinct job_filing_number. An initial filing is one whose filing number ends -I1; it opens a new DOB job. Subsequent (-S*), post-approval amendment (-P*) and administrative (-A*, -B*, -C*) filings attach to a job that already exists and are excluded from the index, because the project they belong to was already counted. Filing month comes from filing_date. The dataset excludes electrical, elevator and limited-alteration jobs, which DOB tracks separately.

San Francisco

Counted from f2jc-ivnc, the city's own deduplicated view, one row per permit. The unit is a distinct permit_number and the date is filed_date. All applications are counted regardless of their later status. Filtering out cancelled and withdrawn permits would be maturity-biased, because an older cohort has had far longer to acquire a cancellation than a recent one: measured on this edition's windows, 1.36% of the 2025 cohort was cancelled or withdrawn against 0.71% of the 2026 cohort, so the filter itself would have flattered the current period. Permit types are classified by permit_type code, never by its description label. A code that appears without a published definition is reported as "Other/newly introduced permit type, definition pending".

Every build asserts that the deduplicated view reconciles exactly with a distinct count from the raw i98e-djp9, and that the deduplicated view is not stale relative to it.

Geographic rules

New York uses Neighborhood Tabulation Areas (nta); San Francisco uses Analysis Neighborhoods. Mapping coverage is published rather than assumed: NTA present on 99.63% of prior-year and 99.62% of current initial filings (75 and 69 filings unmapped, reported as Unknown and included in every city and borough total); SF neighborhood present on 100.0% and 100.0%.

Mover thresholds. A neighborhood is only described as a mover if it clears all of:

The edition displays up to the six largest qualified moves in each direction, ranked by index; the city pages list every row that passes the rule, and the CSVs contain every area including those that do not.

Processing measures

Approval and issuance timing is computed from dated events, never from a status column. New York: approved_date minus filing_date. San Francisco: issued_date minus filed_date. Because filing_status holds only a filing's current value, a day-120 status cannot be reconstructed for a past cohort, and no such breakdown is published.

Cohorts are always compared at identical maturity — April filings measured at 120 days for both years — and segmented by review path, because professionally self-certified filings and standard plan examination follow different review processes. Work-type segments are published where a type has at least 100 filings in both cohorts; changes of at least 10 percentage points are highlighted as exploratory findings. These thresholds will be applied unchanged in future editions.

San Francisco issuance is reported separately for over-the-counter and plan-reviewed permits, since over-the-counter permits are issued without plan review and a blended median would mislead. Declared-value statistics cover plan-reviewed work only (permit_type='3'), all statuses, one row per permit: n=94 in July 2025 and n=75 in July 2026, each 100% with a non-zero declared value. Values are applicant-declared and unaudited. NYC declared-cost statistics are withheld from this edition: the median moved to a flat $30,000 from April 2026 and that shift is not yet explained.

Revisions

Every figure in an edition is generated from a single frozen extraction, so the page, the charts and the CSVs cannot disagree. Both cities back-date records, so a closed month's count keeps changing quietly for weeks after it closes.

Published editions are immutable. Each new edition re-extracts the full history and republishes it; a prior reading is never edited in place. A dated revision note is added when a published reading moves by at least 0.5 index points, crosses 100, changes a neighborhood's direction or qualification, or changes any published conclusion.

Sources and licensing

The published Index CSVs are licensed under CC BY 4.0. PermitPipeline's proprietary data, firm graph, software and other site content are excluded. Suggested attribution: “PermitPipeline Preconstruction Activity Index,” edition date and source URL.

Downloads: monthly filings · NYC boroughs · NYC neighborhoods · NYC approval by work type · SF neighborhoods

What this is not

Not a construction forecast: no back-test has been published against later issuance or starts. Not seasonally adjusted. Not a national measure. Not comparable between cities. Not a measure of construction spending. And not derived from PermitPipeline's proprietary firm graph — everything in the Index reproduces from public data.

The PermitPipeline Preconstruction Activity Index is published by Josh Steinman, founder of PermitPipeline. Underlying data: NYC DOB NOW Job Application Filings and San Francisco building permits (deduplicated). See the methodology, the Firm Directory, and why we publish this research.