{% extends "base.html" %} {% block title %}Quality{% endblock %} {% block body %}

Quality

Each correction of yours is a confirmed error of the system. Golden questions guard against regression when changing prompts, models or schema.

Value: what it costs and what reaches the LLMs

Honest cost, from the measurement method (docs/measuring-value.md). Maintain = having the knowledge (ingestion, synthesis, sweep); serve = delivering it (the push); measure = golden questions. Database queries only, no LLM.

{% for mo in val.months %}{% if mo.total > 0 %}
{{ mo.start.strftime('%m/%Y') }} US${{ '%.2f'|format(mo.total) }} {% for b in ('maintain', 'serve', 'measure') %}{{ b }} US${{ '%.2f'|format(mo.buckets[b]) }} ({{ '%.0f'|format(100 * mo.buckets[b] / mo.total) }}%){% endfor %} · {{ mo.deliveries.pushes }} pushes · {{ mo.deliveries.mcp }} MCP calls · US${{ '%.2f'|format(mo.batch) }} in batch (50% cheaper)
{% for s in mo.sources %} {% if s.shared %} {% else %}{% endif %}{% endfor %}
SourceCost to maintainCurrent claimsReached an LLMCost per claim that reached
{{ s.label }}US${{ '%.2f'|format(s.usd) }}serves all sources; not divided by claim{{ s.living }}{{ s.delivered }}{% if s.living %} ({{ '%.0f'|format(100 * s.delivered / s.living) }}%){% endif %} push {{ s.by_push }} · MCP {{ s.by_mcp }} {{ ('US$%.3f'|format(s.usd_per_delivered)) if s.usd_per_delivered is not none else '—' }}
By role {% for r in mo.roles %}{% endfor %}
{{ r.role }}{{ r.bucket }}US${{ '%.2f'|format(r.usd) }}{{ r.calls }} calls
What these numbers do not count
    {% for c in mo.coverage %}
  • {{ c }}
  • {% endfor %}
{% endif %}{% endfor %}
Was what was delivered used? (step 0.2; read from the Claude Code transcripts, cached for 30 min) {% if usage %}{% for u in usage.months %}{% if u.delivered %}
{{ u.start[:7] }}: {{ u.used_explicitly }} of {{ u.delivered }} pushed references were used explicitly ({{ '%.1f'|format(100 * u.floor) }}%) in {{ u.sessions }} sessions{% if u.missing_transcripts %} ({{ u.missing_transcripts }} without a transcript){% endif %} · MCP used in {{ u.sessions_with_mcp }} session(s){% if u.tools %}: {% for t, n in u.tools.items() %}{{ t }} {{ n }}× {% endfor %}{% endif %} {% if u.open_levels %} · open by level: {% for l, n in u.open_levels.items() %}{{ l }}: {{ n }} {% endfor %}{% endif %}
{% endif %}{% endfor %}

This is a floor: it counts only when the assistant cites the ID (of the page or of a claim it cited) or opens the reference through the MCP after the push. When it uses the content without citing it, it does not show up here; that is measured by the judge of step 0.4.

{% else %}

Could not read the Claude Code transcripts.

{% endif %}
Avoidable re-explanation (step 0.4; north-star metric: how many times you explained to an LLM something Pythia already knew) {% set t = rx.totals %} {% if t.sessions %}
{{ t.sessions }} sessions · {{ t.msgs }} messages from you · {{ t.asserts }} assert something · {{ t.delivered + t.not_delivered }} repeated what Pythia knew ({{ t.delivered }} was in the push {{ t.not_delivered }} was not delivered) · {{ t.new }} were new context. {% if t.med_tokens_until_edit %}Median until the first edit: {{ '%.0f'|format(t.med_tokens_until_edit / 1000) }}k tokens, {{ '%.0f'|format(t.med_explore_until_edit or 0) }} exploration calls.{% endif %}

Judge: {% if rx.agreement.n %}agrees with you on {{ '%.0f'|format(100 * rx.agreement.agree) }}% of {{ rx.agreement.n }} messages{% if rx.agreement.kappa is not none %} (kappa {{ '%.2f'|format(rx.agreement.kappa) }}){% endif %}{% else %}not validated yet{% endif %} · validate (label ~30 messages). Until it is validated, treat the numbers as provisional.

By session {% for s in rx.sessions %}{% endfor %}
StartChatMessagesAssertIn the pushNot deliveredNewTokens until editExploration until edit
{{ s.started_at|dt }}{{ s.chat_title or '—' }}{{ s.user_messages }}{{ s.asserts }}{{ s.avoidable_delivered }}{{ s.avoidable_not_delivered }}{{ s.new_context }} {{ ('%.0fk'|format(s.tokens_until_edit / 1000)) if s.tokens_until_edit else '—' }}{{ s.explore_until_edit if s.explore_until_edit is not none else '—' }}
{% else %}

Not measured yet.

{% endif %}
Spend per day (last 14 days; no projection, because backfills are one-off spends) {% for d in val.daily|reverse %}{% endfor %}
DayMaintainServeMeasureTotal
{{ d.day.strftime('%m/%d') }}US${{ '%.2f'|format(d.maintain) }}US${{ '%.2f'|format(d.serve) }}US${{ '%.2f'|format(d.measure) }}US${{ '%.2f'|format(d.total) }}
{{ m.total }} corrections · {{ '%.1f'|format(m.rate * 100) }}% of the {{ m.machine_claims }} machine-generated claims
{{ m.verdicts_reverted }} of {{ m.verdicts_total }} automatic verdicts reverted or overridden
{% for title, rows in [('By error kind', m.by_type), ('By blamed role', m.by_role), ('By source', m.by_source)] %}
{{ title }} {% for r in rows %}
{{ r.k }}{{ r.n }}
{% else %}
None.
{% endfor %}
{% endfor %}

Conflict and drift detectors

Whoever accuses is not whoever judges: of each suspicion raised, how many the adjudicator confirmed.

{% for d in detectors %} {% else %}{% endfor %}
DetectorSuspicionsJudgedConfirmedPrecisionVerdicts reverted by you
{{ d.label }}{{ d.total }}{{ d.judged }}{{ d.confirmed }} {% if d.precision is not none %}{{ '%.0f%%'|format(d.precision * 100) }} (95% CI: {{ '%.0f'|format(d.low * 100) }}–{{ '%.0f'|format(d.high * 100) }}%{% if d.few %}; few cases, n={{ d.judged }}{% endif %}){% else %}—{% endif %}{{ d.reverted }}
No suspicion yet.

Sweep: latest reviews

{% for r in sweeps %} {% else %}{% endfor %}
WhenEntitySuspicionsInvestigatedConclusionCost
{{ r.reviewed_at|dt }}{{ r.name }} ({{ r.type }}) {{ r.suspicions }}{{ r.investigated }}{% if r.inconclusive %}Inconclusive: {{ r.failed|length }} read(s) failed ({{ r.failed[0].failed }}); back in the rotation tomorrow. {% endif %}{{ r.summary or '—' }}{{ r.cost_usd|money }}
The sweep has not run yet.

Golden questions

Written from the text of the sources (never from what Pythia extracted), by kind, with half sealed (it only decides; nothing is tuned by looking at it). The battery runs Pythia {{ repeats }} times (mean and range), a baseline without Pythia (an LLM with text search over the sources) and checks that the judge fails plausible wrong answers. Prompt or model changes run Pythia only once.

{% if battery %}{% set b = battery %}

Latest battery · {{ b.runs[0].started_at|dt }} {% if not b.done %}in progress{% endif %}

{% for k in b.kinds %}{% endfor %}
KindQuestionsPythia (mean, range)Without PythiaEvidence recall
{{ k.label }}{{ k.n }} {% if k.pythia %}{{ '%.0f'|format(100 * k.pythia.mean) }}% ({{ '%.0f'|format(100 * k.pythia.min) }}–{{ '%.0f'|format(100 * k.pythia.max) }}%, {{ k.pythia.n }} run(s)){% else %}—{% endif %} {% if k.baseline %}{{ '%.0f'|format(100 * k.baseline.mean) }}%{% else %}—{% endif %} {% if k.recall %}{{ '%.0f'|format(100 * k.recall.mean) }}%{% else %}—{% endif %}

Judge: {% if b.judge.n %}approved {{ b.judge.fooled }} of {{ b.judge.n }} plausible wrong answers{% if b.judge.fooled %} (each one is a judge error){% endif %}{% else %}no check yet{% endif %}. Cost: Pythia US${{ '%.2f'|format(b.costs.pythia) }}{% if b.cost_per_correct %} (US${{ '%.3f'|format(b.cost_per_correct) }} per correct answer){% endif %} · baseline US${{ '%.2f'|format(b.costs.baseline) }}.

{% if b.regressions %}
Regression on the sealed questions (they passed in all runs of the previous battery): {% for q in b.regressions %}
· {{ q.question }} ({{ q.kind }})
{% endfor %}
{% endif %} {% endif %} {% if runs %}{% set r = runs[0] %}
Latest run {{ r.started_at|dt }} ({{ r.arm }}, {{ r.config.reason or 'manual' }}) — {{ r.passed }}/{{ r.total }} {{ '(in progress)' if r.status == 'running' }} {% for x in results %}{% endfor %}
{{ 'passed' if x.passed else 'failed' }} {{ x.question }} {{ x.kind or '' }}{% if x.sealed %} · sealed{% endif %}
expected: {{ x.expected }}
{{ x.answer }}
{{ x.rationale }}
{% endif %}
Registered ({{ questions|length }} active) {% for q in questions %}{% endfor %}
{{ q.question }} {{ q.kind or '' }}{% if q.sealed %} · sealed{% endif %}{{ q.expected }}

Recent corrections

{% for c in corrections %}
{{ c.status }} {{ c.text }}{{ c.created_at|dt }} · {{ c.via }}
target {{ c.target_id or '—' }} · error {{ c.error_type or '?' }} · role {{ c.blamed_role or '?' }}{% if c.result %} · {{ c.result }}{% endif %}
Turn into a golden question
{% else %}
No correction yet.
{% endfor %}
{% endblock %}