ADR-053: Grounding Contract for Evidence-Backed Insights¶
- Status: Accepted
- Date: 2026-04-03
- Authors: Podcast Scraper Team
- Related RFCs: RFC-049, RFC-050
- Related PRDs: PRD-017
Context & Problem Statement¶
GIL produces insights (key takeaways) from podcast episodes. Unlike summaries, insights claim to represent specific points made in the episode. Without a formal definition of what "evidence-backed" means, insights are no more trustworthy than generated text. The system needs a verifiable contract that defines when an insight is grounded, what evidence looks like, and how consumers can audit the chain from claim to transcript.
Decision¶
We adopt a grounding contract with the following rules:
- Every Insight has an explicit
groundedboolean: set after extraction, not assumed.grounded = truemeans ≥1SUPPORTED_BYedge to a Quote node after filtering low-confidence candidates. - Quotes are verbatim transcript spans: a Quote node contains the exact text from
the transcript with
char_start,char_end, and optionaltimestamp_start_ms/timestamp_end_ms. Quotes are auditable against the original transcript file. - Evidence chain: Insight →
SUPPORTED_BY→ Quote →EXTRACTED_FROM→ transcript. Every link is navigable and verifiable. - Confidence and provenance: ML-derived nodes carry
confidence,model_version, andprompt_version. These separate "model certainty" from truth. - Quality target: ≥80% of insights should be grounded in a well-processed episode.
Episodes below threshold are flagged with
gil_quality: "low".
Rationale¶
- Trust: Without grounding, insights are indistinguishable from hallucination. The contract makes trust explicit and measurable.
- Verifiability: Consumers can click through from insight to quote to transcript position. This supports the viewer, CLI, and any future UI.
- Quality measurement: The
groundedboolean enables quality metrics, filtering (--grounded-only), and search ranking by evidence strength. - Honest handling: Ungrounded insights are not hidden — they are labeled honestly, letting consumers decide what to trust.
Alternatives Considered¶
- Grounding as metadata, not a contract: Rejected; without a formal definition, "grounded" becomes meaningless and inconsistent across episodes.
- All insights must be grounded (reject ungrounded): Rejected; extraction quality varies. Honest labeling is better than silent dropping.
- Probabilistic grounding score instead of boolean: Rejected for v1; a binary
groundedis simpler to consume and filter. Confidence score exists separately for fine-grained use.
Consequences¶
- Positive: Clear trust model. Enables
--grounded-onlyfiltering across CLI, search, and viewer. Quality metrics are measurable and trackable. - Negative: Extraction must include QA/NLI step to determine grounding, adding pipeline latency. Some insights will be honestly labeled as ungrounded.
- Neutral: Quote extraction requires extractive QA across all tiers (ml, hybrid, cloud) per RFC-049.
Implementation Notes¶
- Schema:
gi.json— Insight nodes haveproperties.grounded(bool),properties.confidence(float),properties.model_version(string) - Quote nodes:
properties.text(verbatim),properties.transcript_ref,properties.char_start,properties.char_end,properties.timestamp_start_ms - Edge:
SUPPORTED_BYfrom Insight to Quote;EXTRACTED_FROMfrom Quote to transcript - Quality gate:
run_grounding_pass()in GIL extraction; threshold configurable