Search the contract record
FY2021–2025| Contract | Vendor | Agency | Category | Registered | Current amt. | Paid to date | % paid |
|---|
Contract search · Methodology & definitions
SERIES NOTESThe universe
The index covers construction contracts registered with the City, drawn from the City Record registration notices (dataset qyyg-4tf5) for fiscal years 2021 through 2025. A contract enters the index when it is registered; the date row leads with registration because that is the point at which the obligation becomes a public record.
Scope and identifiers
Each contract carries the City's free-text scope description (the work the contract registers) and its PIN, the procurement identification number that the City uses to track the award. Both come straight from the registered-contract record and read blank where the record carries no value. The scope line and PIN are searchable alongside the contract number, vendor, and agency, so a query like a street name or a treatment plant can surface the contracts that name it.
Dates and what they mean
The scheduled end is the contract's planned end date as registered. It is the schedule on the paper, not a record of actual completion; a contract can run past it, finish early, or sit open without the published record changing. Read it as the original plan. The bid due date is a best-effort join to the City Record solicitation that preceded the award, matched where a clean link exists; it is blank where no match was found, so its coverage is partial by construction.
Amounts and percent paid
Original is the contract value at registration; current reflects registered modifications. Paid to date is the City's registered-contract spent-to-date figure, and percent paid divides it by the current amount, falling back to original. Both come from the City contract record and cover every contract in the index, so the table column, the percent paid, and the sort all read the same field for every row. A contract can read above one hundred percent where modifications, retainage release, or rounding push cumulative payment past the registered amount; the page shows the figure as published rather than capping it.
The dated spend curve and payment velocity
The dated spend curve and velocity cover a defined set: every registered construction contract of $500,000 or more registered since 2019 that is open or closed within the past year. Closure is judged by the registered end date because the public record carries no actual-completion date, so a contract whose registered end date is more than a year in the past drops out of the dated set while open contracts and recently closed ones stay in. For each one the nightly job pulls that contract's disbursements from Checkbook NYC and orders them in time. First-payment lag is the number of days from registration to the first disbursement. Days to fifty and ninety percent paid count from registration to the first day cumulative dated payment crosses that share of the contract amount; either reads as a dash when the contract has not reached that mark. Confirmed dated disbursements is the sum of those dated checks, a floor on what has been paid rather than a full accounting. A contract outside that scope, or one inside it that drew no disbursement, reads as a dash for the spend curve and every velocity figure; its paid to date and percent paid still come from the contract record.
Why two payment figures can differ
For a contract in the dated scope that drew a disbursement, the detail panel shows both paid to date, the City's running tally, and confirmed dated disbursements, the sum of individual checks the nightly job found. These can legitimately differ: a check the ledger has not yet published is not in the dated sum, so it can sit below the City's tally. The table and percent paid use the contract-record figure because it covers every contract; the dated sum is shown alongside it as a confirmed floor, and the nightly job reports how closely the two agree.
Where the payment timing comes from
Progress-payment timing is read from Checkbook NYC's Spending domain one contract at a time: for each contract in the dated scope the nightly job queries that contract's own checks, then dedupes them on the payment document so a re-reported check is not counted twice. The scope is fixed by definition, every registered construction contract of $500,000 or more registered since 2019 that is open or closed within the past year, not by a count cap. Checkbook serves no cross-origin access, so this page reads a static file the nightly job writes rather than calling the payment ledger from the browser.
What is not here
No borough, address, or coordinate appears on this page. The published registration and payment records do not carry a location field for these contracts, so the page omits geography rather than inferring it.