Skip to content

Data Model

DASH's data model is { claim, evidence[], edges[] }. The claim is the atomic assertion; each piece of evidence records a source that supports, contradicts, or is neutral toward the claim; edges connect claims to other claims.

Claim

The atomic, source-bound assertion. Every claim carries:

FieldDescription
claim_idUnique identifier
tenant_idOwning tenant
canonical_textThe assertion itself
confidence0.0 - 1.0, validated server-side
event_time_unixWhen the asserted fact occurred
valid_from / valid_toTemporal validity window (valid_from <= valid_to enforced)
chunk_idOptional link back to the source chunk
doc_idOptional source document
extraction_modelWhich model extracted the claim

Evidence

An evidence record binds one source to one claim with a stance:

FieldDescription
evidence_idUnique identifier (must differ per record, even for the same claim)
claim_idThe claim this evidence bears on
source_idURI-style source reference, e.g. news://nyt/2025-09-03
stancesupports, contradicts, or neutral
source_quality0.0 - 1.0, validated server-side

A claim accumulates evidence over time. Ingesting a second evidence record for a claim with a conflicting stance is how contradictions enter the graph - the claim is never edited in place, the evidence accumulates.

Edges

Edges connect claims to other claims:

RelationMeaning
supportsThis claim backs another claim
contradictsThis claim refutes another claim
refinesThis claim narrows another claim's scope
duplicatesThis claim restates another claim
depends_onThis claim's validity needs another claim

ClaimEdge { relation: Contradicts } participates in demotion exactly like contradicting evidence.

Retrieval result

Every retrieval returns an array of RetrievalResult:

json
{
  "claim_id": "c1",
  "canonical_text": "Company X acquired Company Y",
  "score": 0.93,
  "supports": 1,
  "contradicts": 0,
  "citations": [
    {
      "evidence_id": "e1",
      "source_id": "news://nyt/2025-09-03",
      "stance": "supports",
      "source_quality": 0.95
    }
  ]
}

Citations additionally expose chunk_id, span_start, and span_end for character-level traceability back into source documents.

Stance modes

The retrieval planner combines ANN candidates with metadata filters, time-range filters, stance demotion/filtering, and optional graph expansion:

stance_modeBehavior
balanced (default)Contradicted claims are kept but demoted in score
support_onlyAny claim with a contradicting evidence record is removed from results

Time ranges

time_range: { "from_unix": ..., "to_unix": ... } constrains results to a validity window, so facts that were true but have expired are never surfaced.

Released under the Apache 2.0 License.