CoolFace
Datasetpublic

abigailhaddad/dc-procurement-raw

DC procurement: raw source snapshots Work in progress. These snapshots are being used for an analysis that is still being checked. The files here are raw source material, not findings. Raw, unmodified responses from the District of Columbia's Contracts and Procurement Transparency Portal (https://contracts.ocp.dc.gov), plus the source documents and other agencies' published files used alongside them. Nothing here is derived. No classification, no extraction, no OCR output, no… See the full description on the dataset page: https://huggingface.co/datasets/abigailhaddad/dc-procurement-raw.

sourceHugging Faceotherupdated 17d agoView on Hugging Face
0likes73downloads
Dataset Card

DC procurement: raw source snapshots

Work in progress. These snapshots are being used for an analysis that is still being checked. The files here are raw source material, not findings.

Raw, unmodified responses from the District of Columbia's Contracts and Procurement Transparency Portal (<https://contracts.ocp.dc.gov>), plus the source documents and other agencies' published files used alongside them.

Nothing here is derived. No classification, no extraction, no OCR output, no joins. Those stay out of this dataset on purpose: they are model output and should not be mistaken for what the District published.

What is here

PathWhat it is
raw/Portal API responses, pulled 2026-09-05
raw_baseline_20260824/The same endpoints, pulled 2026-08-24
h1b/raw/US Department of Labor LCA disclosure files
calc/raw/GSA CALC API responses (federal awarded hourly rates)
dcas_sources/Saved source documents for the DCAS procurement history

Each snapshot directory carries a manifest.json recording what was pulled, when, and how many rows each file held.

Two snapshots, on purpose

raw_baseline_20260824 is kept because it cannot be re-fetched. The portal serves current state only, so an August pull is not reproducible from a September request. Twelve days moved real numbers between these two: contract rows 7,113 to 7,168, payments 866,823 to 869,839, distinct contracts 3,983 to 4,013.

Quirks worth knowing before you use this

The payments endpoint ignores every filter. FiscalYear, PaymentFiscalYear, CommodityCode, AgencyName and ContractNumber were each sent alone and each returned the identical complete table. There is no way to request a slice, so payments.json is the whole table, unpaginated, in one response.

A contract row is an option period, not a contract. 7,168 rows are 4,013 distinct contract numbers. Summing ceilings across rows double counts.

Most payments carry no contract number. 481,031 of 869,839 rows have one. Any join from payments to contracts covers about 45% of the rows.

`paymentAmount` and `voucherAmount` are different things. The first is the check total and repeats across every line it covers; the second is the line. Summing the wrong one gives $114.7B instead of $33.5B.

The commodity codes are assigned by the buyer and applied loosely. Class 918, "consulting services", holds Medicaid managed care contracts. Class 920, "data processing, computer, programming and software services", holds a plumbing contractor's $14M contract.

Provenance and license

These are public records published by the District of Columbia, the US Department of Labor, and the General Services Administration. They are reproduced here as fetched, without modification. The District's portal is the authoritative source; where this copy and the portal disagree, the portal is right.