Download the ledger package
The package keeps the blank working template, a clearly synthetic example, and structural validation rules separate. All example entities, prompts, URLs, and answer text are fictional.
Why an occurrence-level ledger?
AI-answer research often jumps from screenshots or exports to totals. That shortcut makes it difficult to reproduce the prompt, distinguish mentions from citations, understand what a source supported, or revisit a judgment when a taxonomy changes. The ledger preserves the smallest useful unit: one citation occurrence within one dated answer observation.
Multiple citations in one answer become separate rows sharing the same observation_id. A mention with no visible citation can still be recorded as an observation summary elsewhere, but it should not be invented as a citation row. If a cited URL appears twice in one answer, retain both positions unless the research question explicitly uses unique URLs.
Collection workflow
Assign stable prompt IDs and versions before collection. Preserve exact language, intended audience, task intent, and market.
Record product, answer surface, timestamp, market, signed-in state when relevant, and a privacy-safe answer excerpt.
Store the exact observed URL, link label, citation position, mention status, and the claim or passage it appears to support.
Apply the versioned source-role taxonomy to the answer context. Keep ambiguity as needs_review.
Later, record HTTP state, final URL, publisher canonical, and access constraints without overwriting the observed URL.
Validate required fields, reconcile a sample between reviewers, and publish denominators with every summary.
Field groups
| Group | Core fields | Reason |
|---|---|---|
| Observation identity | observation_id, prompt_id, prompt_version | Connect every row to one controlled prompt run. |
| Run context | answer_system, answer_surface, run_timestamp, market | State where and when the variable answer appeared. |
| Citation occurrence | citation_id, citation_position, observed_url, link_label | Preserve the exact visible source occurrence. |
| Answer use | mention_present, citation_present, answer_evidence_span, claim_summary | Document what the answer visibly used the source to support. |
| Role annotation | primary_role, secondary_roles, publisher_relationship, taxonomy_version | Separate source responsibility from source quality. |
| URL verification | verification_status, verified_final_url, publisher_canonical, verification_timestamp | Keep later network findings distinct from raw evidence. |
| Review | reviewer_id, review_status, notes, is_synthetic | Make uncertainty, examples, and later corrections explicit. |
Roles and controlled values
The template uses the companion seven-role taxonomy: entity, definition, evidence, comparison, implementation, validation, and action. Use a semicolon-delimited list for secondary roles in CSV. Publisher relationship is one of owned, partner, independent, unknown, or not_applicable.
Verification status is not_checked, reachable, redirected, access_limited, not_found, or error. A challenge page, login wall, regional restriction, timeout, or rate limit belongs under access_limited or error; it is not automatic proof that the citation is invalid.
Quality checks before analysis
- Every
citation_present=truerow has an absolute HTTP(S)observed_urland positive citation position. - Rows sharing an
observation_idagree on prompt, system, surface, timestamp, and market. - Every primary and secondary role uses the taxonomy version recorded on the row.
- Observed URLs remain unchanged; normalization and network verification use separate fields.
- Synthetic fixtures are labeled
is_synthetic=trueand never mixed into measured totals. - Privacy-sensitive or copyrighted answer text is minimized; store a short evidence span rather than unnecessary full output.
- Ambiguous rows remain
needs_reviewuntil a reviewer resolves or excludes them.
Report bounded findings
Useful summaries include observations collected, observations containing the tracked entity, citation occurrences, unique observed URLs, normalized URL keys, unique publisher hostnames, and source-role coverage. These are different denominators. Report the prompt-set version, systems, product surfaces, markets, collection window, reviewer method, missing data, and sample size alongside every chart.
What the ledger cannot prove
It cannot establish stable rank position, model training inclusion, publisher authority, factual correctness, search demand, commercial impact, or why an answer system selected a source. Repeated observations can describe change in the measured sample; they do not reveal an undisclosed model's causal mechanism.
Version 1.0 · Published 2026-08-12 · Update the schema version when required fields, controlled values, or meanings change.