How We Grade It

No accuracy number. Here is the method we use instead.

Beemy will not print a self-reported accuracy figure. This page names what it grades instead: four tasks, 75 hand-labelled examples, and scorers built to punish a confident wrong answer harder than an honest pause.

4 min read

The short version

Every model task Beemy runs is graded against a small, hand-labelled corpus, and every scorer punishes a confident wrong answer harder than an honest pause. No numeric bar is a promise yet, and the router does not filter on this grading today. Read on for exactly where that stands.

Four graded tasks, and a corpus for each

Every model task Beemy runs has a gold corpus behind it.

A small corpus stated beats a large one implied. Here is the real count for each task, taken straight from the corpus files themselves.

  • Triage decision

    18 hand-labelled examples.

    TriageDecisionTask · backend/src/eval/corpus/triage.json

  • Draft quality

    13 hand-labelled examples.

    DraftQualityTask · backend/src/eval/corpus/drafts.json

  • Digest faithfulness

    12 hand-labelled examples.

    DigestFaithfulnessTask · backend/src/eval/corpus/digests.json

  • Silo classification

    32 hand-labelled examples.

    ReferenceSiloClassifier · backend/src/eval/corpus/documents.json

75 examples in total, across four tasks. None of them is a live user's mail.

Hesitating costs points. Guessing costs everything.

Every scorer is built to punish a confident wrong answer.

This is the harness's spine. An honest pause earns partial or full credit. A wrong answer stated with confidence fails the example outright.

  • Triage decision

    Abstaining on a genuinely ambiguous message scores full marks. Recognising there is no right answer is a correct answer.

    scoreTriageDecision · backend/src/eval/tasks/triageDecision.ts, scoreTriageDecision

  • Triage decision

    Abstaining on a message that did have a right answer scores half marks. Safe, but not precise.

    scoreTriageDecision · backend/src/eval/tasks/triageDecision.ts, scoreTriageDecision

  • Triage decision

    A confident wrong category scores zero, and fails the example outright.

    scoreTriageDecision · backend/src/eval/tasks/triageDecision.ts, scoreTriageDecision

  • Draft quality

    If any forbidden fact appears in the draft, the example scores zero, however well the rest of it reads. This is a safety bar. It doesn't reward fluent prose on its own.

    scoreDraftQuality · backend/src/eval/tasks/draftQuality.ts, scoreDraftQuality

  • Digest faithfulness

    One ungrounded bullet fails the whole digest. Not a deduction. A zero.

    scoreDigestFaithfulness · backend/src/eval/tasks/digestFaithfulness.ts, scoreDigestFaithfulness

  • Silo classification

    A misfile counts twice against a model. It's a false positive in the silo it wrongly landed in, and a false negative in the one it belonged to. A quarantine counts once, as a false negative only.

    evaluateClassifier · backend/src/eval/classification.ts, evaluateClassifier

An ungraded model is never trusted

No score means no pass, by default.

The ledger that records every model's scores answers one question for each model and task pair: did it clear the bar. A model this ledger has never scored gets a fail by design.

See the next two sections for what that ledger cannot yet promise on its own.

No bar is published, because none is set

The numeric targets are a placeholder.

No bar is published, because no bar is set. The quality targets in the code are documented placeholder defaults. Nobody has tuned them yet.

QUALITY_TARGETS · backend/src/eval/tasks/targets.ts, QUALITY_TARGETS

The gate is not wired up yet

What a green build actually proves.

The ledger above is written and it fails closed. The router does not read it yet. Saying otherwise would be false today, so we don't say it.

  • The routing gate is not wired up yet. The router's default quality signal accepts every candidate, so nothing is filtered out today.

    NO_QUALITY_SIGNAL · backend/src/model/routingPolicy.ts, NO_QUALITY_SIGNAL

  • A green build proves the scorers. It says nothing about the shipping model. Every task grades a deterministic reference stub, and none of them calls a real model.

    ReferenceTriageModel · backend/src/eval/tasks/triageDecision.ts, ReferenceTriageModel

Still no accuracy number

What this page adds instead.

Still no accuracy number. This page adds a method. It does not add a number. A self-reported figure from a private beta would fail the sourcing bar The Numbers sets for every other statistic on this site.

Get your time back.

Beemy is in private beta. Join the waitlist and go from connect to a quiet, triaged inbox before you close your laptop tonight.

Private beta. No spam, ever.

Talk to us

Last updated