AI and machine learning contract spending at the Department of Homeland Security, FY2022–FY2026 — sourced from USASpending.gov and classified by LLM.
This analysis identifies DHS contracts that involve artificial intelligence or machine learning work. Contract descriptions were searched for — AI-related keywords, then each matching contract was reviewed by an LLM to filter out false positives (e.g., fingerprint scanners labeled "biometric," or generic "algorithm" references in non-AI work).
Amounts reflect total obligated value reported in USASpending. Contracts may span multiple fiscal years.
Every contract classified as AI/ML work. Click an Award ID to view on USASpending.gov.
Click any row for full contract details from USASpending.
| Award ID | Sub-Agency | Vendor | Amount ($M) | Source | Keyword | Description | Why AI? |
|---|
An open analysis of DHS contract spending on AI and machine learning work between FY2022 and FY2026, built by joining the USASpending bulk contract archive against an LLM classifier. Every fact on this dashboard reduces to a row in USASpending.gov — click any contract's "View raw data + classification provenance →" link to see the upstream column for each value, the trigger that flagged it as AI, and a direct link to its USASpending page.
FY2022–FY2026 prime contract awards at the Department of Homeland Security (agency code 070), pulled from the USASpending Award Data Archive. Sub-agencies include CBP, ICE, TSA, USCIS, FEMA, Coast Guard, Secret Service, and others. Grants, IDV vehicle parents, and subawards are excluded; child task orders under IDV vehicles are included.
The table below is the single source of truth: every dashboard variable, the upstream dataset and column it lives in, and what it populates on the site. Per-row provenance (with the USASpending column name beside each value) is rendered on raw.html — click any contract.
| Variable group | Source dataset | Join key | What it populates / what to know |
|---|---|---|---|
| Award identity award_id (PIID), vendor, sub-agency, amount obligated, NAICS, PSC, period of performance, description, USASpending permalink |
USASpending Award Data Archive (FY22–FY26 bulk, DHS) | PIID | All contract-table columns and the per-contract modal. Self-reported by agencies. The literal monthly per-FY ZIP files we ingest are linked from each contract's raw-data page. |
| Keyword match matched_keyword(s) |
Derived: case-insensitive substring match of — AI-related terms (listed below) against award_description / transaction_description / prime_award_base_transaction_description |
description text | Drives the keyword search classification path. Broad terms like algorithm, biometric, and decision support are kept intentionally — the LLM pass handles false positives. The actual matched keyword is preserved per row and highlighted on raw.html. |
| LLM AI verdict is_ai, explanation |
gpt-5.4-mini (structured output) — given description + vendor + sub-agency + NAICS + PSC; prompt instructs lean-toward-true on borderline cases | — | Primary filter — every keyword hit is reviewed by the LLM and only is_ai = true rows survive. The one-sentence explanation appears in the contract modal, on raw.html, and in the obligation-history view. LLM mistakes happen — every claim is rooted in the contract's description, which is also shown. |
| Modification re-classification mod_text |
USASpending modification descriptions joined across all modifications on a contract; LLM re-run on combined text | PIID | Drives the modification text classification path. Catches contracts whose original award description didn't mention AI but whose later modifications did (e.g., "added AI/ML support team"). The combined modification text is shown verbatim on raw.html. |
| IDV sibling expansion idv_parent, idv_siblings |
Derived: every other AI-confirmed task order under the same parent IDV vehicle | parent_award_id_piid | Drives the idv expansion classification path. Once a parent IDV has a confirmed AI sibling, every other task order under it is pulled and LLM-classified. The sibling list is shown on raw.html so the audit trail is visible. |
| Computed dashboard fields total_ai_dollars, total_ai_contracts, by_agency, source path counts |
Computed in our build from the rows above | — | Stat cards on the Dashboard expand into list modals showing the items behind each count (sub-agencies, vendors, keywords). The agency bar chart drills into the per-agency contract list at raw.html?flag=agency; per-row provenance lives at raw.html?piid=…. |
Pills shaded in green hit at least one contract; gray pills returned zero matches and are shown to demonstrate search coverage.
Every value shown on a contract row, mapped to its upstream USASpending column. The full USASpending data dictionary defines every column referenced.
| Dashboard field | Source | USASpending column | Meaning |
|---|
All ingestion, keyword search, classification, and dashboard build code: github.com/abigailhaddad/dhs-ai-contracts — the README has the technical setup.