perathos
docs/verdict-thresholds

configuration

Verdict Thresholds

Perathos aggregates seven verifier scores into a single confidence score, then maps that score to a verdict using configurable thresholds. Deterministic verifier failures bypass thresholds entirely — they always BLOCK.

How aggregation works

The confidence score is a weighted average of all non-SKIP verifier scores. Verifiers that have no applicable claims (e.g., no mathematical expressions for the Symbolic Solver) return SKIP and are excluded from the weighted average. Weights are normalised to sum to 1.0 across non-SKIP verifiers at aggregation time — the per-verifier defaults below are raw priors, not absolute contributions.

# Weights are renormalised across non-SKIP verifiers at aggregation time.
confidence = sum(verifier.score * verifier.weight for verifier in non_skip_verifiers)
            / sum(verifier.weight for verifier in non_skip_verifiers)

# Then:
if any deterministic verifier returned BLOCK:
    verdict = "BLOCK"  # bypasses threshold — no confidence score override
elif confidence >= flag_threshold:
    verdict = "PASS"
elif confidence >= block_threshold:
    verdict = "FLAG"
else:
    verdict = "BLOCK"

Default thresholds

VerdictConditionConfig key
PASSconfidence ≥ 0.80flag_below: 0.80
FLAG0.50 ≤ confidence < 0.80block_below: 0.50
BLOCKconfidence < 0.50, or any deterministic BLOCK

Industry guidance

Recommended threshold ranges by industry. Tighter thresholds increase blocks and flags; looser thresholds allow more responses through with lower confidence.

Industryflag_belowblock_belowRationale
Healthcare / Clinical0.950.85Clinical decisions require high confidence. Err toward FLAG for human review.
Financial Services0.900.70Regulatory citations and numerical claims carry high liability.
Legal0.900.70Case law and statutory references must be current and accurate.
Enterprise General0.800.50Default settings. Balanced for general AI-assisted workflows.
Internal Tools / Low-stakes0.700.40Higher tolerance acceptable for non-customer-facing, low-risk queries.

Configuration

Global (dashboard or API)

Set default thresholds for your entire account via the dashboard or the configuration API. These apply to all requests that do not include per-request overrides.

PUT https://api.perathos.com/v1/config/thresholds
Authorization: Bearer pk_live_...
Content-Type: application/json

{
  "flag_below": 0.90,
  "block_below": 0.70
}

Per-request (headers)

POST /v1/chat/completions
X-VRL-Flag-Below: 0.90
X-VRL-Block-Below: 0.70
# Per-request values override account defaults for this call only

Per-request (body extension)

{
  "model": "gpt-4o",
  "messages": [...],
  "perathos": {
    "flag_below": 0.90,
    "block_below": 0.70
  }
}

Zero-tolerance overrides

Certain verifiers can be configured to always BLOCK regardless of the confidence score. The Symbolic Solver is zero-tolerance by default — any mathematical error is always a BLOCK. You can apply zero-tolerance to other verifiers.

PUT https://api.perathos.com/v1/config/verifiers
Authorization: Bearer pk_live_...

{
  "verifiers": {
    "symbolic_solver":     { "zero_tolerance": true },   // default: true
    "knowledge_graph":     { "zero_tolerance": true },   // strict regulatory mode
    "schema_validator":    { "zero_tolerance": false },
    "hallucination_detector": { "zero_tolerance": false }
  }
}

Per-verifier weights

Default raw priors. Weights are renormalised to sum to 1.0 across non-SKIP verifiers at aggregation time, so individual values represent relative priority rather than absolute contribution. Adjust weights to prioritise the verifiers most relevant to your domain — you can specify any relative values.

VerifierDefault weightType
model_fingerprinter0.10Deterministic
cross_examiner0.20LLM
hallucination_detector0.18LLM
symbolic_solver0.50 (zero-tolerance)Deterministic
knowledge_graph0.22Deterministic
temporal_consistency0.12Hybrid
schema_validator0.18Hybrid
PUT https://api.perathos.com/v1/config/verifiers
{
  "verifiers": {
    "knowledge_graph":        { "weight": 0.35 },  // increase for regulatory domains
    "hallucination_detector": { "weight": 0.10 },  // reduce if domain is narrow/factual
    "temporal_consistency":   { "weight": 0.20 }   // increase for fast-moving regulations
    // unspecified verifiers keep defaults; weights are renormalised
  }
}