About The Demand Signal

Extracting intelligence on what government intends to buy · AI-native procurement intelligence from OODA

Current as of 06:15 UTC, 13 August 2026

What this is

The federal government announces what it intends to buy long before it buys it. Those announcements are public, and they are close to unreadable in bulk: tens of thousands of notices a week, most of them irrelevant to any particular reader, many of them the same requirement posted by several offices at once.

The Demand Signal reads them and publishes what is moving. The AI & Autonomy edition covers procurement of artificial intelligence, machine learning, autonomous systems and the infrastructure behind them, across defense and civilian agencies alike. Other editions are planned and the schema already supports them.

The product reports. It does not advise. Nothing here is a recommendation to pursue anything, and there is no red-amber-green anywhere on the site, because traffic-light color is advice.

How it is built

Two tiers, and they meet only at a database. Collection, extraction and drafting run on an NVIDIA DGX Spark on premises. The Postgres on that machine is the system of record and is not reachable from the internet. Nothing inbound, outbound only.

Every night a job pulls the SAM.gov opportunity extract, filters it against the edition's vocabulary, fetches full descriptions for anything that matched, and hands the new items to a model for extraction. A separate job then writes a projection of the results to a hosted Postgres. This site reads that projection through a role with SELECT and nothing else. Corrections are applied to the system of record and travel outward from there, so the two tiers cannot disagree about what was published.

Every model call in the pipeline runs on that machine, on open-weight models. Extraction, scoring and the daily summary never leave it. That is a deliberate constraint rather than a cost decision: it keeps the analysis reproducible on hardware we control, and the pipeline works the same way whether or not any particular vendor has capacity today.

Scoring

Each notice gets a relevance score between 0 and 1, assigned against a five-band rubric with worked examples at every band. The question the score answers is narrow: is artificial intelligence or autonomy what is actually being bought here. Not whether the notice is interesting, not whether it is worth pursuing.

Procurement stage is handled separately, and deterministically, from the notice's own text. An intent to sole source, a cancelled requirement and a completed award are all real, and none of them is demand a reader can act on, so each ranks below its subject score. Mixing that judgment into the scoring prompt was tried and abandoned: the model began conflating subject with stage, and it took three passes to separate them again. A prompt is a request. Validation is a rule.

Cross-posted notices are collapsed to one line at the median of their copies. Taking the highest copy, which is what the obvious database query does, makes a displayed score the maximum of several samples, so a requirement posted nine times would outrank an identical one posted once. That is a sampling artifact, not a signal. The number you see is the median, and the line tells you how many postings it represents.

Thin notices remain the honest weakness. Some announcements say almost nothing in their body text, and a low score on one of those reflects missing evidence rather than an irrelevant requirement. Those are flagged internally rather than quietly corrected.

Summarizing

One model call a day writes the summary at the top of each page. The same text opens a daily brief, so the site and the brief cannot describe the same day differently.

It publishes as drafted, and a human corrects it afterwards. That is a weaker promise than editing every word before publication, and it is worth stating plainly rather than implying otherwise. What the system does guarantee is that the model's output is never destroyed by a correction, that clearing a correction restores the original, and that what was published and when stays auditable.

On a quiet day the summary should say the day was quiet. Weekend volume is thin, which is why these pages lead with what is moving rather than what arrived: deadlines advance on a Sunday even when nothing is posted.

Sources

SAM.gov contract opportunities, currently the only source. Award data from USAspending is next. A forecast-stage source is still an open problem: DHS APFS was assessed and dropped after a live pull showed it carried almost nothing and ignored its own query parameters.

Published agency names follow the government's spelling rather than the feed's, and the feed's several spellings of one department are merged into one.

Members see the whole graph

These pages are the surface. Underneath sits the entity graph: which agencies and offices are buying, which programs recur, which vendors are named in requirements before an award exists.

The OODA Network