Demand funnel
SELECTED AGENCYfms_id, most-advanced phase. Source fb86-vt7u.pin. Source qyyg-4tf5.Velocity
SELECTED AGENCYTop trades
CAPITAL PLAN · DOLLAR-WEIGHTEDTop recipients
CITY RECORD · TRAILING YEAR| Recipient | Awarded | Share |
|---|
Borough footprint
DOLLAR-WEIGHTED · 5 BOROUGHSBacklog coverage across agencies
YEARS · TOP 10The full velocity table
RANKED BY PIPELINE| Agency | Open pipeline | Spent (TTM) | Awarded (TTM) | Backlog, years | Days to 50% paid |
|---|
Payment velocity across agencies
DATED SET · DAYS| Agency | Dated contracts | First payment, days | Days to 50% paid |
|---|
Agency profile · Methodology & definitions
SERIES NOTESThe two scopes
Committed is the unspent budget the agency holds across active projects in the City's most recent capital plan snapshot (NYC OMB, dataset fb86-vt7u): total project budget minus spend to date, across projects in an active phase, with close-out and dead states removed. The plan repeats a project's budget on every sub-project row, so rows are collapsed on managing agency and fms_id and the most advanced phase is kept before anything is summed. Awarded is the value of this agency's construction award notices in the City Record (dataset qyyg-4tf5) over the trailing twelve months, filtered to the two construction procurement categories and deduped to one row per pin at the largest amount. The two scopes measure different things and stay in separate columns.
What the trailing year means
Every award window on this page is the twelve fully-elapsed calendar months: the current partial month is excluded, so a few days of the month in progress cannot pull the total down. This is the same window the “Funnel” page, the index on the “Analysis” page, and the “Briefing” use, so an agency's awarded figure reads the same wherever it appears on the site.
Spending is archive only
Actual outlays live in Checkbook NYC, which serves no cross-origin access, so a browser cannot read it. The nightly archive snapshots it instead. This page shows committed and awarded live and marks spending as archive only rather than estimating a figure it cannot fetch here.
Matching an agency across the two sources
The capital plan names the agency by short code and the City Record names it in full, so a lookup maps one to the other. Some agencies do not reconcile cleanly. The Department of Design and Construction builds for many client agencies, so it carries a large award book of its own while client agencies such as Housing Preservation and Development show heavy awards in the City Record but little capital plan budget under their own code, because the plan files that work under the building agency. Where a selected agency has a scope that does not map, that side reads as unavailable rather than borrowing another agency's number, and the selector notes the mismatch.
Borough derivation and provenance
The two scopes carry borough on different footings, and the page keeps them apart. In the capital plan, borough is a structured field on each project, the harder source; Citywide and blank values route to an explicit citywide bucket rather than a borough. In the City Record there is no address or coordinate, so borough is read from the notice text: a community board cue in the project description first, then an explicit borough name in the title, and a notice that names more than one borough or reads as citywide goes to the citywide bucket whole. Award borough is therefore the softest figure on the page and is labeled as such wherever it appears.
Dollar-weighting and the citywide bucket
Every borough figure is weighted by dollars, not by the count of projects, so a single large job registers at its true weight. The citywide, multi-borough, and unspecified share is reported as its own slice and never spread across the five boroughs, which would manufacture a geography the data does not contain. Each borough also carries its largest single project as a share of that borough's total, so concentration in one job is visible.
Velocity and backlog coverage
Spent is trailing-year capital outlay, measured as the growth in each project's cumulative spend-to-date between capital plan snapshots. OMB publishes a plan snapshot roughly every four months; for each project, spending in a period is its cumulative spend-to-date in one snapshot minus the prior snapshot, floored at zero. Projects are matched across snapshots by agency and fms_id, with sub-project rows collapsed first so nothing is double-counted. The trailing year of spend is the last three plan-to-plan periods. Backlog coverage is unspent committed dollars divided by trailing-year spending: how many years the funded pipeline would take to deliver at today's pace. It is the demand-side counterpart to a contractor's backlog ratio.
Spending is measured only across projects observed in both the prior and the current snapshot, a matched panel. spend_to_date is a lifetime cumulative figure, not a period figure, so a project appearing in the plan for the first time arrives carrying whatever it has already spent, sometimes years of it; counting that from zero would book its whole back-history as spending in the one period it happened to show up. A new entrant therefore contributes nothing until it has been observed twice, and its spending before it entered the plan is not counted. Projects that leave the dataset stop contributing under the same rule. Both edges hold the series to growth that two readings actually support, on this page and on the “Funnel” page alike.
The per-agency backlog ratio is shown only where an agency's trailing self-delivered outlay clears $10M. Below that, the agency's capital work is mostly delivered under another managing agency, chiefly the Department of Design and Construction, so its own spend line understates delivery and the ratio would be a noise figure rather than a velocity signal. Those agencies still appear in the velocity table with their pipeline and a blank backlog column. Below $1M of trailing outlay the spend figure itself is suppressed to an en dash: a year of self-delivered spending that lands in the thousands does not describe a slow builder; it describes an agency that is not building its own work at all, and printing the residue beside a pipeline in the hundreds of millions would read as a figure rather than as the absence of one. The cross-agency ranking charts the ten agencies with the deepest coverage among those with a computable ratio.
Payment velocity from the dated contracts
The cross-agency payment-velocity figures, median first-payment lag and median days to fifty percent paid, are computed from a separate same-origin dataset, /data/contract-search.json, the file the “Contracts” page reads. It holds registered construction contracts, each carrying its scope description and the City's procurement identification number; only those of $500,000 or more registered since 2019 that are open or closed within the past year, and that carry confirmed Checkbook NYC disbursements, contribute dated timing. For each such contract the nightly job orders its checks in time and measures days from registration to the first disbursement and to the day cumulative payment crosses half the contract value. An agency's figure is the median across its dated contracts, shown only where it has at least eight; the per-contract detail behind each one, including the dated spend curve, lives on the “Contracts” page. These medians are a floor built on confirmed payments, not a full accounting.
Scope and what this is not
Committed covers the City's capital plan; awarded covers the City Record's construction categories; spent covers the capital plan's full scope because capital budgets are not divided by procurement category. All are public records, read live on each page load and never hardcoded. The page reads one agency at a time and does not trace a single project from plan to award to payment; it places public ledgers next to each other on their own terms. Backlog coverage is a structural ratio, a stock measured now over a flow measured over the trailing year, not a delivery schedule.