Compliance matrix

One row for every requirement in the solicitation: where it comes from, who answers it, where the answer goes, and whether a second person has checked it. Paste a list, then export a CSV or print it.

By Colton HeilFree, no sign-up

One row for every requirement. A row is finished when someone else has checked it.

The solicitation
Add requirements

Copy the requirement lines from the solicitation and every addendum. Bullets, numbers, letters and checkboxes at the start of a line are removed, and a line longer than 300 characters is cut. Pasting does not read or send the text anywhere.

The matrix

Readiness

4 pass or fail rows still open

0 of 10 checked (0%)

10 not started, 0 in progress, 0 done

A missed pass or fail requirement can make a response non-responsive. 10 of 10 rows are not yet checked.

What you type stays in this browser and is not sent to us. A draft is kept on this device until you start over.

How the matrix works

It follows the second step in our article on how to respond to an RFP. Each row is one requirement from the solicitation or an addendum. You note where it comes from, what kind it is (pass or fail, a date, a form or signature, a written answer or a price), who answers it and where in the response the answer goes. Then you move it through four statuses: not started, in progress, done, and checked by a second person.

A row is finished only when someone who did not write the answer has checked it against the solicitation. That is the final check our article on why bids get disqualified recommends. The readiness count is the share of rows checked, and rows marked pass or fail are flagged first, because a missed one can make a response non-responsive.

Using it

Copy the requirement lines from the solicitation and from every addendum, paste them in, and add the section number beside each. Log an addendum as new rows or in the notes, with the date it was issued. The example loads eight rows read from a real solicitation, the City of Exeter, California's Request for Proposals 2026-05. The full reading is in the worked matrix in the article.

What it does not do

It does not read the solicitation, so it cannot find a requirement you did not enter, and it cannot tell you what a buyer will treat as pass or fail. When the solicitation is silent, ask before the question deadline. A matrix is only as good as the check on it. Turning rows to checked without reading the document defeats the point. Our bid or no-bid worksheet comes before this step. Use it to decide whether the matrix is worth building.

Your data

Everything you type stays in your browser. The matrix keeps a draft in this browser's local storage so a refresh does not lose it, and Start over deletes it. The CSV is built on your device. Print opens your browser's print dialog, where you can choose Save as PDF. The tool needs JavaScript to run. We record usage events, such as opening a tool, finishing it and exporting it, with a random browser ID and the page and site your visit came from. They never include what you type. If you later start the Bid Monitoring quiz in this browser, that ID links those events to your account. See our privacy notice.

Keep reading

See it for your business.

Share a few details and we'll follow up to schedule a demo. Date and time are optional.

Times are shown in your local time. If you pick a time, we'll confirm a 30-minute demo by email.

Your information is sent securely to the VelocityBids team.