Outlay

Outlay Methodology

Version: 1.2.0 — this file is versioned in lockstep with METHODOLOGY_VERSION in pipeline/src/flags.ts. Every stored flag records the version that produced it. Changing any threshold or definition requires a version bump here and there.

What Outlay is

Outlay ingests federal contract award data from the USAspending.gov API, normalizes recipient names into stable entities, and surfaces structural patterns in the data using the documented rules below.

A flag is not a finding of waste, fraud, abuse, or wrongdoing. It marks a measurable pattern that is worth a look at the underlying record. Many flagged patterns have routine explanations (incremental funding, option exercises, legitimately specialized markets). Outlay deliberately uses no editorial labels anywhere in the data layer.

Data scope (v1)

Record versioning (our own archive)

USAspending publishes only the current state of each record; corrections and revisions overwrite silently, and agencies self-report the underlying data. Outlay therefore keeps its own append-only archive from the first pull onward: every ingest stores a content-hashed copy of each award's source payloads in award_versions. A later pull that returns identical content only confirms the record; changed content appends a new version with the list of changed fields. This makes post-publication revision detectable and preserved — but only from our first observation forward. Data prior to the first pull is taken as-is from the source and cannot be independently verified by Outlay.

Revisions are routine: obligation and outlay figures change as spending proceeds, and error corrections are normal. A recorded revision is a fact about the record's history, not evidence of wrongdoing. Revision counts per pull are stored on ingest_runs and shown in the UI.

Entity resolution

Recipient identity, in priority order:

  1. UEI (SAM.gov Unique Entity Identifier) when the record carries one — entity id uei:<UEI>. This is authoritative: two spellings with the same UEI are the same entity; similar names with different UEIs stay distinct.
  2. Normalized name otherwise — entity id name:<sha256-prefix> of the normalized spelling. Normalization uppercases, strips punctuation, collapses whitespace, expands common abbreviations (INTL, BROS, &), and removes trailing corporate-form suffixes (INC, LLC, CORP, COMPANY, …) — never tokens mid-name.

Every raw spelling observed is kept in entity_aliases with its UEI and seen counts, so the mapping is auditable. Known limitation: name-only records that belong to a UEI-bearing entity but never co-occur with its UEI resolve to a separate name: entity; corporate parents are recorded (parent_uei) but subsidiaries are not rolled up into parents.

Flag rules

R1 — end_of_fy_obligation_spike

The federal fiscal year ends September 30. Obligation activity concentrated in the final month is a long-documented structural pattern ("use it or lose it" budgeting).

Flag when, over an award's transactions with a non-null obligation amount:

Single-transaction awards are excluded: an award simply made in September is not a spike within an award's own funding history.

R2 — single_bid_competed

Flag when an award was procured under a competitive procedure but received exactly one offer:

Context: single-offer competition can reflect a genuinely specialized market; it can also indicate solicitation terms or timelines that discouraged bidders. The flag states only the recorded facts.

R3 — modification_growth

Flag when total obligations reach the initial obligation:

Known limitation: contracts that are deliberately incrementally funded (common in DoD) trigger this rule even when total spending stays within the contract ceiling. The award page shows base_and_all_options (the potential value) next to the flag so readers can see whether growth exceeded the original ceiling.

R4 — split_purchase_pattern

Purchases at or above the simplified acquisition threshold ($250,000) require fuller competition procedures. A known circumvention pattern is splitting one requirement into several smaller awards. Flag every award in a group where:

The contracting office is proxied by the first six characters of the contract number (PIID), which lead with the issuing office's identifier (DoD: the issuing DoDAAC, e.g. N00019; VA: 36C + station code, e.g. 36C242). Only maximal windows are considered, and when an award belongs to overlapping qualifying windows the largest cluster is recorded.

Known limitations: the PIID prefix is coarser or less office-specific at some civilian agencies; recurring same-vendor buys (e.g. quarterly reagent orders across a hospital network) can qualify legitimately. Tuning history: the v1.1.0 rule was calibrated on the VA verification slice, where a sub-agency grouping with a 30-day window flagged 46% of awards and was rejected as non-discriminating. This rule is a lead generator; the source records show whether the awards describe the same requirement.

R5 — just_under_threshold

Flag awards whose amount falls within 5% below the simplified acquisition threshold — $237,500 up to (not including) $250,000.

Context: legitimate awards also land in this band; pricing to a known threshold is not itself improper. The band is interesting in aggregate — a buying office whose award amounts bunch just under the threshold far more than just over it warrants a look — and the per-award flag exists so those populations can be examined. Compare the density just under vs. just over the threshold before reading anything into an individual award.

Outlays (File C) — obligations vs. money out the door

Contract award records (File D1, everything above) record obligations — binding commitments. Actual disbursements ("outlays") come from a different source: File C (Award Financial), submitted monthly by agency financial systems and pulled here via USAspending's Custom Account Data download, scoped by agency and fiscal year.

How Outlay handles File C, and the honesty rules that go with it:

R6 — outlay_lag

Flag awards where money was committed long ago but little has been disbursed:

Context: slow spend-out is completely routine for construction, shipbuilding, and multi-year R&D, where costs are incurred late by design. The flag states timing facts only.

Source-data caveats (displayed in the UI, never hidden)

Changelog