SERIES · CI-ABOUT·SOURCE · NYC OPEN DATA · DATA.NY.GOV · BLS·DOC · MISSION & METHOD
About

Why The Concrete Index exists.

Brooklyn Bridge · Unsplash
Salar Jalinous
Salar Jalinous, AFSB, CPCU
Contract surety professional

The mission

The data behind public construction is public, but it is scattered. Award notices sit in one system, capital budgets in another, and payments in a third, and none of them were built to be read together. The agencies that fund the work, the contractors who build it, the brokers and underwriters who back it, and the analysts who measure it all make decisions about the same market from different and partial views of it.

The Concrete Index exists to close that gap. It is an automated pipeline that pulls those scattered public records into one contractor-attributed picture and refreshes itself nightly. Every figure on this site comes from the public record, normalized and read the same way for everyone: what's funded, what's bidding, what's awarded, and what's being paid. When everyone works from the same view of demand, bids can be sharper and bonding and credit decisions can draw on a clearer, shared view of the market.

My background is in contract surety, so I built the demand side of that picture in the open. This site is a personal project. It is built entirely from public data on my own time, it is not affiliated with, endorsed by, or speaking for any employer, and nothing on it represents any employer's view of any company named in the public record.

What this site actually does

The Concrete Index is a live reading of New York City's public construction market, built directly on the government's own records. Nothing here is estimated or scraped. Most pages query the official datasets at the moment you load it, run the numbers in your browser, and render the result. The few sources a browser cannot reach are pulled and normalized overnight by an automated job and read back from a compact static file. There is no analyst refresh to wait for.

1 · Pull
Each page queries the City Record, the OMB capital plan, the SCA construction roster, and the MTA capital dashboard through their Socrata APIs. Aggregation runs server-side with SoQL where a dataset is large, and in the browser on views whose filters need to recompute as you change them. Either way the math is reproducible from the public record.
2 · Normalize
Raw records are messy. Sub-projects duplicate, renewals hide among new awards, budgets repeat across rows, and agencies go by five names. One disclosed rule set fixes that: project rows collapse on an agency-plus-FMS-ID key, continuations are flagged by selection method, and $500M megaprojects can be set aside so a single award doesn't bend a trend.
3 · Read
From the cleaned data the site computes the demand funnel end to end, phase-conversion rates by agency, a composite index back to 2004, and a briefing that rewrites itself from the live record on every visit.

The pipeline underneath

Those three steps run on top of a record-linkage and aggregation pipeline that does the work a public-records analyst would otherwise do by hand. The City's construction record is split across systems that were never built to be read together, and each is loosely aggregated inside itself. The pipeline resolves that into one current, contractor-attributed picture, and re-runs itself nightly with no manual pull.

Ingestion. It reads several public sources: the City Record for award notices, the OMB capital plan for committed budgets, the School Construction Authority and MTA capital datasets, and Checkbook NYC, the Comptroller's system of record for registered and paid amounts. It also reads New York State open data on data.ny.gov, the MTA's and the State University Construction Fund's named-vendor procurement records, which attach a contractor name to MTA and State construction work, and the City's Doing Business Database, used behind the scenes to corroborate the contractor groupings.
Record linkage. One contractor files under many legal-name spellings and joint-venture entities. The pipeline links those to a single parent through a deterministic, hand-verified alias map. Each grouping is corroborated by a shared, distinctive identifier: a shared business address, with high-occupancy office towers and registered-agent suites excluded so a common address can never merge two unrelated firms, and, at the organization level, a shared principal officer or owner in the City's Doing Business Database, with common or non-distinctive principals discarded. No individual is named anywhere on the site. The match is exact and rule-based, not probabilistic and not machine-learned.
Deduplication. Award notices collapse to one record per procurement, and capital-plan budgets collapse to one record per project, since the source repeats a project's budget across every sub-project row.
Reconciliation. It carries three dollar measures per contractor: award-notice value from the City Record, plus registered contract value and paid to date, both from Checkbook NYC. They are held as separate reconciled figures and never blended into one number.
Nightly self-refresh. An automated job re-runs the ingestion and aggregation every night. Where a source cannot be read from the browser (Checkbook NYC allows no cross-origin request and returns a paged XML feed), the job fetches and normalizes it server-side and writes the compact static file the site reads, so the picture stays current without an analyst in the loop.

Who it serves

The site does not see financials, margins, bonding capacity, or job performance, and it does not rate or certify any contractor. Each party below reads the same public numbers for a different decision.

Surety and credit professionals. The “Contractors” page opens with a contractor lookup that pulls any account's public award history from the City Record in one query: what it has won, from which agencies, and how its job sizes are trending. Read against a contractor's financials, this is demand-side context those statements do not carry. A rising job-size trend is a demand fact, not a verdict. A book stepping up in size is taking on work of a different scale: context to read against the financials, not a risk rating. The “Funnel” and “Analysis” pages add portfolio color, whether a segment is thinning and where forward work is funded. The contractor lookup also shows a firm's MTA and New York State construction work, named from the State's own open data, on a separate ledger that is never summed with the City figures. The “Agencies” page profiles a single agency's committed-versus-awarded book, the trades it buys, the firms it pays, and a dollar-weighted borough footprint of where its work lands. The “Contracts” page is a per-contract lookup: I made it searchable by contract number, vendor, agency, the work's scope description, and the City's procurement identification number, so a query like a street name or a treatment plant surfaces the contracts that name it. Open one registered contract and it shows how much of that contract the public record confirms has been paid, the scope and PIN that identify it, and, for contracts of $500,000 or more registered since 2019 that are open or recently closed, a dated spend curve built from the individual checks with first-payment lag and pay-down speed. That paid figure is a floor built from confirmed disbursements. It covers the single contract entered rather than the market, and a balance below the registered amount can reflect work still in progress as well as payment not yet posted. The School Construction Authority and Port Authority remain unattributed, because those datasets carry no contractor name.
Brokers and agents. The “Pipeline” page and the “Bidding” page are a prospecting map. “Pipeline” shows committed-but-unspent capital by agency, borough, and category, the market where the next round of bonding demand is forming, often before it is advertised. “Bidding” shows every City construction solicitation open right now, sorted by what is due next.
Contractors. The “Bidding” page is a working bid-chase list: every open City construction solicitation, its due date, its procurement method and PIN, and the agency contact who answers questions, re-pulled on every load. The “Contractors” page adds competitive context, showing who has been winning what kind of work from which agencies, and how award dollars spread across the market by job size. The “Pipeline” page shows where funded work is stacking up before it is advertised.
Credit analysts and investors. The “Funnel” and “Analysis” pages give a public-market read on one of the country's largest construction economies, with the full method disclosed on each page. Backlog coverage, unspent committed dollars over trailing-year spending, is a market-level reading, the public-market analog of how a single contractor's backlog relates to its revenue. It describes the market, not any one firm; the per-vendor pages carry no revenue or backlog figure and none can be derived here.

Everything here comes from public data, read by a fixed, disclosed rule set. No contractor is rated, scored, or ranked, and nothing is estimated or inferred by a model.