TypezoNotes

How to extract RFP requirements without losing the page reference

Requirements are obligations, not sentences. A practical method for pulling every one out of a solicitation with the page reference intact.

Every bid starts with the same manual step: read the solicitation and write down what it requires. Teams do this in a spreadsheet, and the spreadsheet is usually fine. What goes wrong is the reference.

A requirement without a page number is a note. A requirement with a page number is evidence that the obligation exists, which is what you need when a reviewer disputes a row or an amendment changes the text.

Requirements are obligations, not sentences

Not every sentence in a solicitation is a requirement. “The Contractor shall provide…” is. “Background information is provided for context” is not, unless it carries a duty. A single paragraph can hold two obligations and one aside.

The test is simple: can you fail to do it? If the answer is yes, it is a requirement. If the sentence only describes the agency or the project, it is context.

Keep document order

Sort requirements by where they appear, not by theme, owner or priority. Document order is how the buyer reads the bid, and it is how you will find a row again when someone asks about section L.3.

Grouping by theme feels tidier and costs you the ability to check coverage section by section. If section M has twelve obligations and your register has nine, the order is what shows you the three you missed.

The page reference is the audit trail

Record the section, the clause and the page for every row. Page numbers should come from the document as parsed, not from the page number printed in the footer. Those two disagree more often than people expect, especially in documents assembled from several files.

When the citation is wrong, the fix is upstream: re-parse, do not hand-correct the number. A hand-corrected page number is a number nobody can reproduce.

Handle the three awkward cases

  • Scanned pages. OCR the page, but mark it as OCR. Confidence is lower and a citation should say so. Check those rows by eye before relying on them.
  • Attachments. Parse them as part of the solicitation, not as an afterthought. The pricing form and the certification schedule carry obligations.
  • Amendments. Re-extract after an amendment. Do not patch the old register by hand; you will lose the rows the amendment added and keep the ones it deleted.

A short checklist

  1. One row per obligation, not per sentence and not per section.
  2. Document order, with section and clause recorded.
  3. Page and offsets from the parser, not from the model or the footer.
  4. Status vocabulary that includes “no response yet”.
  5. An evidence field that points at a document and a page.
  6. Explicit gap rows for obligations with no evidence.
  7. Re-run after every amendment.

How Typezo does it

Typezo parses the solicitation once at upload, extracts requirements with their section and page in document order, and drafts an answer only where a stored span supports it. Unsupported requirements become gap rows. Before export, a deterministic verifier re-checks the quotes and page references.

The sample workspace shows the result: a requirement, the page it came from, and a citation you can open. It is fictional and labelled that way.