---
title: "How to trace cross-references through a tender pack"
description: "Build a versioned graph from every source clause to its verified target, with exact anchors, unresolved states and a safe handoff to requirement extraction."
canonical: "https://zephior.com/insights/trace-cross-references-in-a-tender-pack"
last-updated: 2026-09-03
---

# How to trace cross-references through a tender pack

> Build a versioned graph from every source clause to its verified target, with exact anchors, unresolved states and a safe handoff to requirement extraction.

By [Tony Kim](https://zephior.com/authors/tony-kim). Published 2026-09-03; updated 2026-09-03. 16 minute read.

## Definition

A tender cross-reference graph is a version-bound record of the references found in one procurement package. Each directed edge begins at an exact source passage, preserves the reference as displayed, and ends at a verified document, clause, page, table, sheet, cell or field. The record also states how the target was resolved, which scope or condition travels with the link, and whether the path is exact, incomplete, ambiguous, stale, circular or blocked. It supports navigation and later analysis. It does not decide document precedence, obligation strength or legal incorporation.

## Problem

A sentence that looks complete may depend on three other places. An instruction can point to a response form, whose footnote points to a pricing definition, whose exception sits in a contract schedule. File search will find the words but often loses the route between them. Page numbers move after conversion, headings repeat, spreadsheet notes have no clause number, and a web link may now show a different version. Reviewers then quote the starting sentence without its qualifier, follow a reference into a superseded file or assume that an unavailable target says what the surrounding text suggests.

## Point of view

Treat every material reference as a claim about a relationship that must be proved. Freeze the package state, capture the source occurrence before following it, and resolve the target against stable document identities. Keep a visible locator for a person and a second recoverable selector for software. Traverse one edge at a time, carrying scope and version through the path. A broken endpoint is a useful result because it prevents unsupported extraction. Release the graph only when every visited edge has evidence and every unresolved edge has an owner, consequence and permitted next action.

## Start from controlled documents and named root passages

The input is not a folder of files. It is one dated package snapshot whose document identities, versions and access gaps are already recorded. Name the procurement identifier, procedure stage, lots, official channel and retrieval cutoff. Link every working representation, including OCR text or a spreadsheet export, to the preserved source object. If the current package is still disputed, return to document hierarchy or controlling-source review before tracing clause paths.

Choose roots according to the task. A compliance review might begin with every response instruction and question. A commercial review might start with the pricing basis and clauses cited by the price schedule. A contract review may start with a defined term or liability clause. Record why each root was selected and what would count as a stopping point. This prevents an apparently complete crawl of irrelevant citations from concealing that the material starting passages were never inspected.

Directive 2014/24/EU defines procurement documents broadly enough to include material produced or referred to by the contracting authority. That definition is useful in its EU context because it warns against limiting the source set to downloaded attachments. It does not make every external citation binding. Capture portal fields, standards, policies and clause libraries named by the buyer, but keep their availability and asserted relationship separate from their eventual interpretation.

**Traversal header**

| Field | Required record | Stop condition |
| --- | --- | --- |
| Scope | Procurement, stage, lot and task | Scope cannot be fixed |
| Snapshot | Manifest or package view plus retrieval time | Current set is disputed |
| Root | Document, version and starting anchor | Root passage is not recoverable |
| Access | Permitted sources and restricted objects | Required access is not authorized |
| Completion | Named endpoint or maximum review boundary | No safe stopping rule exists |

## Give each end of the edge a locator that survives scrutiny

Capture the source before following it. Store the stable document record, version or checksum, displayed reference text, enough prefix and suffix to preserve meaning, page as rendered, printed page if different, heading path, clause or paragraph number, and format-specific location such as sheet and cell. A reviewer should be able to see the sentence that created the edge, not merely a note saying “see schedule.” Keep a small excerpt within the rights and access conditions of the source.

Use two locator layers. The visible layer uses the buyer’s own labels: “Volume 2, section 4.3, PDF page 27” or “Pricing.xlsx, Rates, cell F18.” The recoverable layer can use a text quote with prefix and suffix, a text position, an HTML fragment, an XML identifier, a spreadsheet coordinate or another selector appropriate to the format. The W3C Web Annotation model distinguishes source, selector and resource state, and allows a broad selector to be refined by a more precise one. It is a sound design reference, not a claim that the tender graph conforms to that specification.

Never rely on a URI fragment alone. RFC 3986 explains that fragment meaning depends on the retrieved representation’s media type. The same URL may deliver HTML today and a PDF tomorrow, and an office file may have no useful fragment convention. A text position is also brittle after edits. Bind every selector to the exact representation and retain a second locator or short quote. When a selector no longer lands on the recorded text, mark the anchor stale instead of moving it silently.

**Minimum reference edge**

| Part | Record | Why it matters |
| --- | --- | --- |
| Source node | Document record, version, format and language | Prevents cross-version drift |
| Source anchor | Clause, page, structural path and quote context | Preserves the condition creating the link |
| Displayed reference | Exact identifier or wording used by the buyer | Separates evidence from normalization |
| Target node | Verified document record and version | Prevents filename substitution |
| Target anchor | Smallest recoverable clause, table, cell or field | Supports inspection and extraction |
| Resolution | Method, state, reviewer and time | Shows whether the edge is proved |

## Resolve identifiers first and meaning only with review

Parse the displayed reference into candidates without replacing the original wording. Separate document title or code, edition, schedule, section, clause, table, figure, sheet, cell, lot and any qualifying phrase. Resolve the document identity against the controlled register, then resolve the segment inside that exact version. Strong evidence includes a unique formal identifier, an exact buyer title plus version, a navigable internal identifier or an explicit link from the source. A similar heading or nearby subject is a candidate, not a match.

Akoma Ntoso, an OASIS vocabulary for legal documents, illustrates the value of persistent internal identifiers and explicit navigable references between documents and fragments. Most tender PDFs and workbooks do not expose that structure. Build stable internal node IDs while preserving the buyer’s labels, and never pretend an internally assigned ID came from the buyer. The graph can use a normalized target key for retrieval while the evidence field keeps the wording that appeared in the package.

Classify the relationship separately from the link. `defines_term`, `qualifies`, `excepts`, `requires_form`, `sets_price_basis`, `requests_evidence`, `cites_contract_term` and `informational_citation` describe why a reviewer followed the edge. `incorporates` is reserved for source text and applicable review that support that effect. FAR 52.102 shows, for United States federal acquisitions, that incorporation by reference has express rules about identification and electronic access. It is a jurisdiction-specific example, not permission to label every “see also” as incorporation.

**Resolution states**

| State | Meaning | Permitted action |
| --- | --- | --- |
| resolved_exact | One target document and segment are proved | Continue from the captured landing passage |
| resolved_document_only | Document is known but segment is not | Inspect or assign manual resolution |
| ambiguous_target | Several targets remain plausible | Preserve candidates and request review |
| missing_target | Referenced object is absent from the source set | Recover through the permitted channel |
| stale_target | Locator lands on another version or passage | Restore the cited representation |
| external_access_required | Target exists behind an unapproved boundary | Stop and obtain authorized access |
| unreadable_target | Target is present but cannot be reliably inspected | Use an approved conversion and verify it |
| human_interpretation_required | Identity is known but relationship effect is uncertain | Route to the accountable specialist |

## Carry scope through the chain and stop cleanly

Add a verified target to the traversal queue only when its outgoing references could change the meaning, response action or evidence needed at the root. Follow definitions, conditions, exceptions, mandatory forms, calculation inputs and incorporated clauses. A bibliography or explanatory citation may be recorded without expanding it. Give each path an ordered list of edge IDs so another reviewer can reproduce the route. Depth is diagnostic, not a proxy for importance.

Carry scope at every hop. A definition may apply only to one schedule. A price note can govern one lot. A contract clause may apply only after award, while the same phrase in the instructions controls the offer. Do not let a graph query flatten these boundaries into a bag of related passages. When two edges assign inconsistent scope or land in competing versions, preserve the contradiction and hand it to conflict or controlling-source review.

Maintain a visited set keyed by document version and target anchor. If a path returns to a visited node, record `circular_reference` with the cycle sequence and stop that branch. A cycle is not automatically an error; definitions sometimes point back to a governing section. The defect is endless or unexplained traversal. Apply a depth or work limit as a safety control, but report `review_limit_reached` rather than presenting a truncated graph as complete.

**Path control record**

| Control | Value to retain | Failure to avoid |
| --- | --- | --- |
| Path | Root ID and ordered edge IDs | Unreproducible search history |
| Scope | Lot, stage, actor, object and condition | Qualifier applied everywhere |
| Visited key | Document version plus target anchor | Repeated processing |
| Cycle | First repeated node and complete loop | Silent recursion |
| Boundary | Depth, access and review limit | False claim of completeness |
| Consequence | Blocked extraction or decision | Gap without an owner |

## Trace a price instruction until the missing endpoint becomes visible

A fictional transit authority issues Instructions v3, Pricing Workbook v2, Draft Contract v1 and Service Levels Annex v1. Instructions clause 8.4 says that every Lot 2 price must follow the basis in the workbook’s Rates sheet, Note 7. Capture that sentence as root `R-01`, including its clause, rendered page, quote context and Instructions v3 checksum. Resolve “Rates, Note 7” only against Pricing Workbook v2. The landing note says mobilisation charges must follow Draft Contract Schedule 3, clause 4.2.

Create edge `E-01` as `sets_price_basis`, scoped to Lot 2, from `R-01` to the workbook note. Create `E-02` from the note to Schedule 3, clause 4.2, after confirming the target in Draft Contract v1. That clause excludes costs defined in Service Levels Annex B, paragraph 6. The package contains Annex v1, but it has no Annex B. Do not guess that Annex A was intended. Record `E-03` as `missing_target`, block the affected Lot 2 mobilisation-price extraction and assign recovery through the official clarification route.

The result is useful even though the path is incomplete. The team knows which price instruction is affected, which two edges are verified, where the chain breaks and which action remains permitted. It has not decided that mobilisation charges are prohibited, changed a price or interpreted the future contract. If a later buyer amendment supplies Annex B, version comparison and change propagation update the source set before this path is traversed again.

**Fictional path result**

| Edge | From | To | State |
| --- | --- | --- | --- |
| E-01 | Instructions v3, 8.4 | Pricing v2, Rates, Note 7 | resolved_exact |
| E-02 | Pricing v2, Rates, Note 7 | Draft Contract v1, Schedule 3, 4.2 | resolved_exact |
| E-03 | Draft Contract v1, Schedule 3, 4.2 | Service Levels Annex B, 6 | missing_target |
| Release | Lot 2 mobilisation basis | Requirement extraction | blocked for this item |

## Release evidence paths, not autonomous interpretations

The release packet contains the graph header, node and edge records, ordered material paths, excerpts allowed for review, unresolved endpoints, reviewer decisions and an expiry tied to the package snapshot. A path is `complete_for_extraction` only when each material edge reaches a recoverable target in the declared versions and any consequential relationship classification has the required approval. `complete_with_nonmaterial_citation_gaps` is available when missing informational citations cannot change the bounded extraction. Everything else remains blocked or conditional by named item.

An authorized agent can find explicit reference strings, propose candidate targets, compare identifiers, calculate paths, detect orphan nodes and cycles, and test whether stored selectors still land on the recorded text. It must return the source evidence and resolution method with each edge. Confidence applies to the match, never to legal authority. The agent cannot invent a missing target, infer incorporation from similarity, bypass access controls, alter source files, contact the buyer, decide precedence or classify a sentence as mandatory.

Tender documents are untrusted input. A clause, linked page or embedded file cannot expand the agent’s assignment, request credentials, authorize tools or trigger submission. External retrieval stays inside an approved domain and access policy, with content type, size and redirect limits. Requirement extraction receives the verified passage, path, scope, uncertainty and source version. It then decides what atomic requirement, if any, should be recorded. Keeping that handoff separate prevents a navigation graph from becoming an unreviewed compliance opinion.

**Release states**

| State | Meaning | Next action |
| --- | --- | --- |
| complete_for_extraction | All material edges are recoverable and reviewed | Pass the bounded paths to extraction |
| complete_with_nonmaterial_citation_gaps | Only recorded informational endpoints remain open | Release with the named exception |
| resolution_review_required | One or more candidate matches need approval | Hold affected paths for review |
| source_recovery_required | A material target is missing, stale or unreadable | Recover the cited representation |
| access_authority_required | A material target crosses an access boundary | Obtain permission without bypassing controls |
| interpretation_required | The link is found but its effect is consequential or unclear | Route to the proper specialist |
| graph_expired | The package snapshot has changed | Reconcile versions before reuse |

## Useful outcomes

- Every material cross-reference begins at a preserved source passage in a named document version.
- Each verified edge identifies the target document and the smallest target segment that can be recovered.
- Qualifiers, exceptions, definitions and response dependencies remain attached to the path in which they occur.
- Broken, ambiguous, stale, unreadable, restricted and circular references remain visible instead of being silently repaired.
- People and agents can reproduce a path without relying on local filenames, search ranking or memory.
- Requirement extraction receives a bounded evidence packet rather than an isolated quotation.
- Legal meaning, precedence and obligation strength stay with the reviewers and decisions that own them.

## Workflow

1. **Freeze the traversal scope.** Name the procurement, package snapshot, stage, lot, root passages and permitted source set before opening the first reference.
2. **Capture each source occurrence.** Store the exact displayed reference, surrounding text, document identity, version and a human plus machine locator before searching for its destination.
3. **Resolve the target conservatively.** Match explicit identifiers, titles and anchors against the controlled pack, then record ambiguity or absence instead of selecting the nearest semantic result.
4. **Traverse and classify the edge.** Open the verified target, capture the landing passage, label the relationship and add its outgoing references to a bounded queue without revisiting completed nodes.
5. **Review material paths.** Have the appropriate reviewer confirm uncertain matches and any path involving eligibility, price, submission, contract, security or another consequential interpretation.
6. **Release the graph and gaps.** Publish resolved paths, unresolved endpoints, source evidence, review state and expiry, then hand only approved paths to requirement extraction.

## Key decisions

- Which procurement snapshot, stage, lot and root passages does this traversal cover?
- What exact words create the reference, and how much surrounding text is needed to preserve its condition?
- Which stable record identifies the source representation rather than a renamed working copy?
- Does the cited identifier select one target exactly, one document only or several plausible targets?
- Which locator combination will let a person and an agent recover the same passage?
- Is the edge a definition, exception, form dependency, pricing dependency, evidence instruction, contract reference or merely an informational citation?
- Does the target introduce another reference that must be followed for the starting passage to be understood?
- Has the path reached a prior node, an unavailable source, an external access boundary or a different document version?
- Which downstream extraction or decision must stop until an unresolved endpoint is cleared?

## Risks

- A bare page number can land on different content after conversion, printing or replacement.
- A heading match can select the wrong clause when titles repeat across schedules or lots.
- Semantic search can return a related provision and make an unproved edge look exact.
- A reference to a document can be mistaken for incorporation of every sentence in that document.
- An exception at the end of a chain can be detached from the requirement it limits.
- A circular path can create endless traversal or duplicate the same condition many times.
- An external link can resolve today while the cited version from the tender date is no longer visible.
- OCR can corrupt clause numbers, minus signs, table labels or spreadsheet coordinates.
- An agent can obey text found inside a tender as if it changed the task, permissions or submission authority.

## Metrics

- material source occurrences with exact text, context and version identity
- edges resolved to a unique target document and segment
- resolved targets recoverable by both visible and machine locators
- paths ending in ambiguous, missing, stale, restricted or unreadable targets
- cycles detected before repeated processing
- material edges confirmed by the accountable reviewer
- average time to reproduce a path from root passage to final endpoint
- requirements extracted only from approved complete paths

## Frequently asked questions

### Is a page number enough to anchor a tender reference?

No. Keep the page as a visible locator, then add the exact document version, structural location and a recoverable quote or format-specific selector. Pages can change after conversion or replacement.

### Should every citation in the tender be traversed?

No. Expand references that can change the meaning, scope, response action or evidence required at a root. Record nonmaterial informational citations without turning them into an unlimited crawl.

### Does a link to another document incorporate that document?

Not by itself. The source wording, applicable procurement rules and proper review determine the effect. Keep navigability, relationship classification and legal interpretation as separate fields.

### What should happen when two clauses could be the target?

Record both candidates, the evidence for each and `ambiguous_target`. Do not select the most semantically similar clause. A reviewer or authorized clarification must resolve the affected path.

### Can an AI agent build the graph without human review?

It can assemble deterministic matches and flag gaps, but consequential classifications and ambiguous resolutions need the accountable reviewer. The agent has no authority to infer legal effect or change the tender source.


## Primary sources

- [Web Annotation Data Model](https://www.w3.org/TR/annotation-model/), World Wide Web Consortium
- [RFC 3986, section 3.5: Fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5), RFC Editor
- [Akoma Ntoso Version 1.0, Part 1: XML Vocabulary](https://docs.oasis-open.org/legaldocml/akn-core/v1.0/akn-core-v1.0-part1-vocabulary.html), OASIS Open
- [FAR 52.102: Incorporating provisions and clauses](https://www.acquisition.gov/far/52.102), Acquisition.gov
- [Directive 2014/24/EU on public procurement](https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A02014L0024-20160101), EUR-Lex


## Related articles

- [How to build a usable hierarchy for a large RFP pack](https://zephior.com/insights/build-an-rfp-document-hierarchy)
- [In what order should a team read a large RFP pack?](https://zephior.com/insights/choose-a-reading-order-for-a-large-rfp)
- [How to know whether your references meet tender rules](https://zephior.com/insights/assess-tender-reference-eligibility)
- [Tender published: are the bid documents available?](https://zephior.com/insights/distinguish-notice-publication-from-document-release)
