Skip to content

Trust levels

Every claim carries a trust level, serialised as a label:

{ "predicate": "brand_name", "object": "Example", "trust_level": "L3" }

The levels are L0, L1, L2, L3, L4 and L5 — an ordered scale from observed to attested. A higher level means a stronger provenance story, not a stronger belief.

L5 is the top of the scale and it means a verified party attested this. It does not mean the statement is correct. A manufacturer can attest something wrong about its own product; the attestation is what we can evidence, and the level records that, nothing more.

This is why the level is a property of the claim and not of the product, and why two claims about the same subject and predicate can sit at different levels without one of them being deleted. Contradiction is representable on purpose.

Where an operation accepts a minimum trust level, it takes the label form:

GET /v1/products/search?trust_level_min=L3

An integer is not accepted. The scale is a labelled ordinal, and treating it as a number invites arithmetic on it — averaging two levels, or interpolating a “2.5” — which the model does not support and which would produce a value that means nothing.

trust_level is nullable. A claim without one has not been assessed, which is not the same as being assessed at the bottom of the scale. Do not coerce a missing level to L0.