Canonical content

Know what went into the episode, and what happened to it

Sources arrive in whatever shape they were written. They leave as one canonical document that still knows where every part of it came from.

One document, many sources

The canonical document is a content and provenance model before it is a file format.

Ingestion produces a single document that holds the episode's content and, alongside it, the record of where that content came from. Both live in the same structure, so a claim and the source that produced it cannot drift apart in the way they do when provenance is kept in a separate log.

That structure is TEI - the Text Encoding Initiative's P5 vocabulary, a long-standing standard for marking up documents with scholarly apparatus. Episodic uses its header for provenance and its body for the script. Serialization is handled by tei-rapporteur, a TEI P5 library maintained alongside the platform.

Where a prompt needs JSON, that JSON is a projection of the same TEI-backed content model. It is not a second canonical schema competing with the first.

What can be ingested

Five source classes today, each classified and scored on arrival.

Supported source types
Source typeTypically carries
TranscriptsRecorded interviews and prior episodes.
BriefsEditorial direction for the episode or series.
RSS feedsSyndicated items, pulled as an ongoing source.
Press releasesAnnouncements, treated as interested sources.
Research notesWorking material assembled by the production team.

A source reaches the system as an upload or a remote URI attached to an ingestion job. Document classifiers assign a type and a quality score; neither is a judgement about whether the content is correct.

Weighting and conflict

When two sources disagree, one of them wins. The rule that decides is written down.

Weighting heuristics compute a priority score from quality, freshness, and reliability. Where sources conflict, the weighting matrix resolves which normalizes into the canonical body. Coefficients are configurable per series profile, so a team that trusts its own transcripts over a press release can say so once rather than per episode.

Every source is retained regardless of the outcome. Rejected material stays queryable against the ingestion job, because the decision is only auditable if the discarded side of it still exists.

What the provenance record holds

Recorded automatically in the canonical header. The example below is synthetic.

Synthetic provenance fragment from a canonical TEI header Illustrative shape, not a live payload
<sourceDesc>
  <listBibl>
    <bibl xml:id="src-transcript-01" n="1">
      <title>Interview transcript, second pass</title>
      <note type="priority">0.82</note>
      <note type="classifier">transcript</note>
      <date type="ingested">2026-05-14T09:31:07Z</date>
      <respStmt><resp>reviewed by</resp><name>editor-14</name></respStmt>
      <note type="outcome">preferred</note>
    </bibl>
    <bibl xml:id="src-release-04" n="2">
      <title>Partner press release</title>
      <note type="priority">0.31</note>
      <note type="classifier">press-release</note>
      <date type="ingested">2026-05-14T09:31:09Z</date>
      <note type="outcome">retained, not preferred</note>
    </bibl>
  </listBibl>
</sourceDesc>

Identifiers generated during canonical ingestion are time-ordered UUIDv7 values, so records sort chronologically without a separate timestamp index. Large TEI payloads are compressed with Zstandard in storage; the API and domain read paths return plain text and never expose that.

Reusable reference documents

Material that outlives one episode: style guides, research briefs, and the people on the show.

A reference document is versioned content bound to a series, template, or episode by a pinned revision. Because the binding names a revision rather than a document, an episode generated last month keeps the style guide that was current when it ran.

Hosts and guests are series-aligned reference documents rather than properties of an episode. A host can be absent from an episode and a guest can recur across several; binding rules control applicability, and a revision can carry an effective_from_episode_id so a change applies from a chosen episode onwards.

See the reference-document endpoints · Follow the draft into review