Security & trust center

What PaperTrail does to make its verdicts trustworthy and its data handling accountable.

Deterministic verification (the moat)

A language model can be asked to check a claim, but its answer can drift between runs. PaperTrail pairs the model's verdict with a deterministic effect-size cross-check written in code.

  • Reported estimates and confidence intervals (RR, HR, OR, RRR) are parsed and checked against fixed statistical rules.
  • Because the check is deterministic, its result cannot be made to wobble by resubmitting the same claim.
  • Where a claim has no parseable numeric estimate, the cross-check honestly defers rather than inventing one.

Code-enforced provenance

The verification model is asked to quote the source exactly, but nothing about a model response guarantees the quotes are real. PaperTrail turns that expectation into a code-enforced invariant.

  • Every flagged source span is located inside the cached source text before it is ever shown.
  • Matching is exact-substring first, then whitespace-normalized, always recovering the verbatim original text and its offsets.
  • Any span that cannot be located in the source is dropped — so the tool structurally cannot make an unsourced claim about a source.

Role-based access control

Access is scoped by organization and role. Every authenticated route resolves the caller's org membership before doing any work.

  • Four roles: owner, admin, editor, viewer, each with an explicit capability set.
  • Routes enforce a minimum required role and reject anything below it with a 403.
  • All tenant data is filtered by organization at the query level — no cross-tenant reads.

Tamper-evident audit trail

Every mutation is recorded so that a reviewer can reconstruct exactly what happened and detect any after-the-fact change.

  • Mutations write an audit record capturing the actor, action, entity, and metadata.
  • The audit ledger is append-only and hash-chained: each entry binds to the previous one.
  • Altering a past event breaks every subsequent hash, making tampering detectable.

Data handling

  • Sources fetched from PubMed and ClinicalTrials.gov are cached and never re-fetched on every request.
  • Secrets live in environment variables, never in source; required keys are checked at startup.
  • Claim text and API keys are kept out of application logs.
  • The public trust summary endpoint exposes only capability and build metadata — never tenant data.

Verify for yourself

The public trust summary — capability list and build info, no tenant data — is available at /api/trust/summary. The grounding invariant that enforces provenance is covered by tests that fail loudly if it is ever weakened.