Why a draft quotation repeated the first page's products
A customer-facing document can be wrong even when the staff record is correct. The investigation needs to follow the information through the step that changes it, rather than repair the source simply because the final output looks wrong.
This fictional case concerns a twelve-line supplier quotation draft. The first PDF page is correct. The second repeats the first six products, leaving the final six absent. The document remains a draft throughout investigation; technical correction does not authorise the commercial offer.
Establish the expected sequence
The staff record Q-96 contains line identifiers L-01 through L-12 in that order. Each line has its own product reference, quantity, unit and approved draft description. The preview inside the quoting tool shows all twelve once.
The PDF output is arranged at six lines per page. Its extracted and visually inspected sequence is:
| Output area | Expected line identifiers | Observed line identifiers |
|---|---|---|
| Page 1 | L-01 through L-06 | L-01 through L-06 |
| Page 2 | L-07 through L-12 | L-01 through L-06 |
The output has twelve displayed rows, so counting rows alone would miss the failure. Counting unique line membership shows both repetition and omission. The PDF's total cannot be used as proof that every displayed item is correct either.
Compare the boundaries in order
The source record is inspected first and is unchanged. The data handed to the renderer contains the complete twelve-line sequence. The fault appears when the renderer selects records for each page.
Its pagination step starts a local row index at zero on every page. The item lookup incorrectly uses that local index against the full source list, rather than selecting the corresponding global line or the correct page slice. Page two therefore fetches the first six records again.
This evidence supports a renderer-selection defect. It does not support deleting apparent duplicate source lines, merging products or asking staff to change the quotation quantities. Those actions would damage correct business data and leave the generation rule unresolved.
Choose the bounded correction
The authorised technical change makes each output row use the line identifier and position assigned to its page. The exact implementation depends on the rendering system, but its contract is simple: every included source line must appear once in the intended sequence, with its associated values.
The team regenerates Q-96 as a draft and compares the resulting membership. Page one contains L-01 through L-06; page two contains L-07 through L-12. The quantities, units and descriptions match the corresponding staff records. The source quotation and its commercial approval state are not changed.
The earlier incorrect output is identified as superseded within the organisation's controlled process. If an incorrect document had already been sent, the business owner would need to decide how to correct the communication. The software repair alone cannot resolve that external consequence.
Check the boundary that caused the failure
The verification includes three fictional fixtures:
| Fixture | Source lines | Required output membership |
|---|---|---|
| Q-97 | 5 | Five unique lines, each once on one page |
| Q-98 | 8 | Six lines on page one and the remaining two on page two |
| Q-99 | 13 | Six lines, six lines and one line across three pages, with no repeat or omission |
For each fixture, the comparison checks identifiers and associated values, not only the page count. A repeated product legitimately requested on two separate source lines must remain two distinct lines; the repair must not “deduplicate” by product reference and erase a valid request.
The worked review passes these membership checks and preserves the draft status. It also confirms that the document total still corresponds to the intended source calculation. Further visual, accessibility and commercial review remain separate requirements for the actual delivery.
Leave evidence that prevents the wrong future repair
The issue record should identify the affected renderer step, the source-to-output comparison and the boundary fixtures. Preserve the reason that source cleanup was rejected: the original records were correct. A later template change should retain the multi-page membership checks, because a one-page example cannot expose this failure.
When investigating your own workflow, find the earliest point at which the evidence changes. Compare identities as well as counts. A message saying “generated successfully” establishes that a generation process finished, not that the output contains the right work.
Support and care can cover a bounded investigation. System-connections work applies the same source-to-destination discipline where information crosses between tools.