MCP
How Search Behaves

How search behaves

Search results here do not behave the way a web search does. The differences are deliberate, and knowing them changes the questions you ask.

Newest first, not best first

RFP searches are sorted by date, newest first. They are not ranked by relevance unless you ask for it.

This matters more than it sounds, because only about 2% of the index is open at any moment. The rest is past work: closed solicitations, awarded contracts, expired notices. A search that does not filter by status therefore returns mostly history, sorted by recency, and the genuinely live opportunities are scattered through it.

Ask for open opportunities explicitly whenever that is what you want.

You can override the order by asking for the most relevant results rather than the most recent, which sets sort_by to relevance. Signal searches are the other way round: they rank by relevance by default, and you ask for newest if you want the order reversed.

Past work is still worth searching. It tells you what an agency has bought before, who won, and when a contract is likely to come round again.

Keywords widen, they do not narrow

This is the opposite of most search tools, and the most common reason results disappoint.

A row qualifies if it matches any one of your keywords. Adding a keyword therefore adds results rather than filtering them down. Each extra term pulls in another set of loosely related rows, and the proportion that is actually about your subject falls.

We measured this. Searching for construction alone returned 24 on-topic rows out of 25. Searching for construction, renovation and general contractor together returned 20 out of 25. The longer list looked more thorough and performed worse.

Use one or two precise terms. If you need to cover genuinely different things, run separate searches rather than combining them.

Purchase lines, not totals

A vendor search returns individual purchase lines, ordered by how well each matches your keyword. It does not total what an agency has spent with a vendor.

If you want a total, you are looking at a list of lines to be added up, and you should check first that they are all the same company and all the same kind of purchase. Neither is guaranteed.

Two things that make spend records misleading

The description is not always what was bought. The field sometimes holds the agency's own expense account name instead. A keyword can therefore match an accounting category rather than a product, and a row can look relevant while describing something else entirely. Results include the category alongside the description so you can tell which you are reading.

Vendor names are inconsistent. The source records vary in whether they include legal suffixes, they truncate long names, and they sometimes reorder words. Two names that look almost the same are usually one company, and one company can appear under several spellings in a single result set. Treat a vendor name as a label to verify, not an identifier.

Contradictions are flagged, not hidden

An RFP whose status says open while its own deadline has already passed is not quietly corrected or dropped. It comes back carrying a data_quality_warning, so you can see both what the source says and that it disagrees with itself.

This is deliberate. A silently corrected row would hide the fact that the underlying record is unreliable, and sometimes the stale date is the mistake rather than the status.

Duplicates are collapsed

The same solicitation is often published on an agency's own procurement page and on several bid aggregators. Results are de-duplicated to one row per agency, title and deadline, so you see the opportunity once rather than four times.

Signals come before RFPs

A solicitation is the end of a process that has usually been visible for months. Civic signals are extracted from council and board meeting minutes, which is where that process is discussed in public before anything is published.

That is the whole point of them. If you only search RFPs you are reading the announcement; if you search signals you are reading the discussion that leads to it. The gap is often 6 to 18 months.

Two things to watch for in a signal. A signal marked with a decided vendor means the agency has already chosen someone, so it is history rather than an opening. And each signal links to the meeting document it came from, in both PDF and markdown, so you can check the wording yourself rather than trusting the summary.

Setup should only take a few minutes. If you have any questions along the way, just reach out at [email protected] and we'll help you get connected.