GAO Bid Protest Nexus

33,136 bid protests, mapped.

Every decision coded against 33 protest grounds and eight case facets, in a 3D constellation you can filter, a decision table, and per-ground sustain rates. As of v2.1 it opens straight in your browser, with an analysis of each decision written in advance and the full license in the page. A downloadable version with full-text search is in the works.

v2.1

Run it in your browser

The whole dashboard is one self-contained page. No download, no Python, no server, no account. It is the largest corpus the project has covered.

What is in it. 33,136 GAO bid protest decisions across 33 protest grounds and eight facets — ground, outcome, procurement authority, protest posture, decade, PDF source, text source and digest. Seven tabs: the 3D map, the decision table, Dynamic Search, Ground detail with per-ground sustain rates, Analysis, Setup, and the full license and credits.

The two model-backed tabs. Dynamic Search runs against a vector index of the full decision text. That index is far too large to ship inside a web page and needs a small server behind it, so the tab is present but says plainly that it is not part of this hosted copy; it will come with the downloadable version, which is in the works. Analysis here shows an analysis written in advance by an automated batch run over each decision’s text: press Analyze on a decision and it appears at once, with no model to connect. Nearly every decision has one. Analyzing or comparing several decisions at once, or asking your own question across a set, will come with the downloadable version too, against any model you like.

What it cannot tell you yet. The coding is AI-derived and has not been reviewed decision by decision. 82% of ground assignments are model-assigned rather than checked, and are marked with a dagger in the table and popups. Half the corpus has no recorded outcome, so sustain rates cover a subset rather than the whole. 27,239 decisions link to a gao.gov landing page rather than straight to the PDF. The dashboard states all of this on its own face as you use it, and links to a fuller explanation.

Where it is going. Accuracy and every feature here are under active work, release over release: more reviewed ground assignments, more recorded outcomes, more direct PDF links, and faster filtering over a corpus this size. Treat any single coded value as a lead to verify against the original decision, never as a finding.

New in v2.1

Two new tabs

Analysis has always been able to run in the browser, but it needed a model endpoint and nothing on the page told you how to give it one. And the licensing sat on this site rather than in the file you were actually using. Both are now tabs in the dashboard itself. Since then, Analysis on this site has moved to analyses written in advance, so Setup now says what each tab needs here and what the downloadable version, in the works, will add.

The Setup tab: what works on this site and what is coming, then a table of what each tab needs — nothing for Map, Table, Ground detail, License or Analysis, whose analyses are written in advance, and Dynamic Search coming with the downloadable version — and a note on what leaves your machine.
Setup — What each tab needs on this site, and what the downloadable version, in the works, will add: Dynamic Search over the full text, and Analysis against your own model, across several decisions at once.
The License tab: a table splitting Apache 2.0 code from CC BY 4.0 data, the upstream corpus and the public-domain GAO decisions, then a copyable attribution citation, credit to Kevin Misener's two corpora, and a section on what the data can and cannot tell you.
License — Which license covers what, a citation you can copy straight out, credit to the corpora underneath, and a plain count of what the coding does not yet cover: 27,232 of 33,136 grounds assigned by a model, half the corpus with no recorded outcome.

Setup says what each tab needs. On this site, Map, Table, Ground detail and License need nothing, and Analysis shows the analysis written in advance for each decision. A downloadable version is in the works: it will add live Analysis against any model that speaks the OpenAI /v1/chat/completions shape, several decisions analyzed or compared at once, and Dynamic Search over the full text.

License puts the terms in the file. The dashboard is one self-contained page that people download and pass around, and a copy that has left this site should still be able to say what it is: Apache 2.0 for the code, CC BY 4.0 for the taxonomy and the coding, MIT and CC BY for the two upstream corpora, public domain for the decisions themselves. The citation that satisfies the attribution requirement is there to copy, and so is the same limitations accounting the map carries.

What it looks like

These come from the full version, where Dynamic Search and live Analysis work; a downloadable version of it is in the works. On this site Dynamic Search is not available and Analysis shows analyses written in advance. They also predate v2.1: they were taken against the earlier 5,986-decision corpus, so the counts are smaller than what you will see, and they show the layout from before Setup and License were added. The live dashboard is the current interface.

The GAO Bid Protest Nexus map tab: a dark 3D constellation of 33 glowing clusters, one per protest ground, each labeled with its name and decision count, with faint filaments converging on a central core of filter values.
Map — Every one of the 5,986 decisions as a dot, clustered around its protest ground. Ball size tracks volume, so Past Performance Evaluation at 808 dwarfs Definitive Responsibility Criteria at 11.
The table tab: a dense dark table listing decisions by B-number with short description, ground, disposition, outcome, procurement authority, posture and links.
Table — Every matching decision with its five filter values and links straight to the gao.gov page and the PDF.
The Dynamic Search tab showing results for a query about untimely protests: several passages from GAO decisions, each with a relevance score, date, digest badge and links to gao.gov and the PDF.
Dynamic Search — Full-text search over the decision corpus, returning ranked passages with relevance scores and source links. Coming with the downloadable version.
The Ground detail tab for OCI: a large 20.9% sustain rate, 51 of 244 decisions, a 16.3 to 26.4 percent confidence interval, breakdown bars by procurement authority and protest posture, and a grid of B-number links.
Ground detail — The sustain rate for one ground against the 12.2% corpus base rate, with its 95% confidence interval, splits by authority and posture, and every sustained decision listed.
The Analysis tab showing a key-element summary of one decision: a snapshot listing protester, agency, awardee, solicitation number and dollar value, followed by procurement authority and posture, and the grounds raised.
Analysis — One decision reduced to its key elements: parties, solicitation, authority and posture, the grounds raised, and GAO's ruling on each. Here, a $706M systems engineering award protested on organizational conflict of interest.
The Analysis tab comparing three selected decisions: a summary of the set, then a side-by-side table with columns for B-number, date, authority, posture, grounds pressed, GAO's disposition and remedy.
Analysis — comparison — Select up to twelve decisions anywhere in the dashboard and read them against each other: a side-by-side table, what they share, and where they diverge. These three all turn on OCI; one was sustained.

Credits

The Nexus is built on someone else's work, and the corpus it reads came first.

The decision corpus came from Kevin Misener, in two collections. The 33,136 decisions behind the dashboard come from his GAO-Bid-Protest dataset on Hugging Face, released under the MIT license. The roughly 5,700 decisions behind the project's earlier releases come from his GAO-Bid-Protest-Dataset on GitHub, which is released under a Creative Commons Attribution license. Both were used the same way: the URLs to the decision PDFs, the 33-ground taxonomy and the per-decision coding were derived from his data using AI, and the dashboard and the search index are built on top of that. If you reuse either corpus, credit that source too.

The decisions themselves are works of the U.S. federal government and are not protected by U.S. copyright (17 U.S.C. § 105), so they are in the public domain. Cite GAO as the source.

Everything added here carries two licenses. The dashboard code, the search backend and the scripts are Apache 2.0. The 33-ground taxonomy, the per-decision coding, the decision metadata and the vector index are CC BY 4.0. Use it, change it, build on it, at work or commercially — just keep the credit. Releases before v1.0 were published under CC BY 4.0 in full and stay available under that license.