About
We built this for ourselves first.
RFP Docket started as an internal tool at MM Sanford, LLC, because we were losing bids we never saw.
MM Sanford, LLC is a small marketing and analytics consultancy in Green Bay, Wisconsin. A meaningful share of our work is public sector — school districts, counties, state agencies, university systems. Which means a meaningful share of our new business depends on finding solicitations published across two dozen portals that have nothing to do with each other.
For a long time that was a person with twenty browser tabs and a calendar reminder. It failed the way you would expect. We would find a good fit three days after it closed, or discover on submission morning that our state registration had lapsed in the spring.
So we wrote a pipeline that scraped the portals we cared about and dropped matches into one list. Then a tracker, because the list was not the hard part — keeping the paperwork straight was. Then a registration tracker, after the second time a lapsed account nearly cost us a bid.
The portals we know best are the ones we bid into ourselves. Wisconsin VendorNet, Dane County, the UW System’s Jaggaer tenants — they turn up in the examples across this site because they are the ones we watch every week. When one of them quietly changes its search form, it breaks our own bidding first.
The thing that made it a product
A posted state contract opportunity is the same fact for every company that might bid on it. The expensive part — reading those two dozen portals, including the ones that render their results through a JavaScript grid and the ones that quietly changed URL last spring — only has to happen once. What is specific to you is much cheaper: which categories you care about, what stage you have put something at, your notes, your registrations.
That is why this exists as a product rather than as our internal tool. The hard part was already built and it does not get harder when more people use it.
What we are careful about
Two things, mostly. The first is that a source going quiet has to be our problem, not yours. An adapter that silently returns zero rows looks exactly like a slow week, and we have been burned by that on our own pipeline. Every source is now checked against its own history, and a source that has worked before and has now been empty twice in a row raises an alert on our side.
The second is that we do not hold your portal passwords. It would be convenient. It would also mean every database export contained other companies’ credentials, and it would turn an access-rule mistake into a breach rather than a bug. Usernames and login notes live on the registration record. Passwords belong in your password manager.
How we work
Small on purpose
You will talk to someone who wrote the thing. Source requests get scoped by a person, not a form.
Coverage over features
A new source you actually bid into beats another dashboard view. Our roadmap is mostly portals.
Honest about gaps
The coverage page lists what is live, what is in build and what is broken. Including the broken ones.
Tell us what you bid on. We’ll show you what’s open today.
Two minutes to set up your first saved search. No card, no call.