Preset evaluation

September 17, 2026 ยท View on GitHub

How well each preset question separates sentences that should score yes from sentences that should score no.

  • Held-out test set (test_set.json): 200 sentences, 5 yes and 5 no per question. Written independently of the presets, and at least 3 of every 5 "no" items are hard near-misses. Never used for tuning.
  • Tuning set (dev_set.json): 135 sentences used to write the criteria.
  • Model jev-latest (jev-1.13.0), one request per item, measured 2026-09-17. jev-preview scored the same within 0.001 AUC.
accuracy at 0.5mean score on "no" itemsAUC
original presets94.5%0.160.998
shipped presets99.0%0.081.000

What changed, following the TypeSafe docs:

  1. Every question names the field it judges, like `sentence` or `moderator_question`.
  2. Every question has structured criteria for yes and no, each with a short definition and examples.
  3. The "no" side spells out the near-misses: a courtesy before a real answer, a promise that contains a number, hedged quantifiers, rebutting someone else's claim.
  4. "Factual claim" means past or present facts only, so promises and targets no longer count.

Per question (held-out test set)

preset/questionacc beforeacc after"no" mean before"no" mean after"yes" mean before"yes" mean after
debate/contradicts_earlier100%100%0.100.050.960.96
debate/dodged_question100%100%0.150.050.940.95
debate/emotional_appeal100%100%0.160.080.960.97
debate/evasive100%100%0.070.040.920.96
debate/factual_claim80%100%0.290.110.980.97
earnings_call/blame_external100%100%0.110.030.940.97
earnings_call/dodged_question100%100%0.070.030.960.96
earnings_call/hype_language100%100%0.050.050.960.97
earnings_call/specific_number90%100%0.020.050.880.99
earnings_call/vague_guidance100%100%0.040.020.930.96
podcast/emotional_appeal100%100%0.120.050.950.93
podcast/factual_claim100%100%0.170.060.950.96
podcast/overgeneralization70%90%0.590.190.980.98
podcast/self_promotion100%100%0.050.020.970.98
podcast/unsupported80%100%0.370.130.950.97
sales_pitch/buzzwords100%100%0.090.070.940.95
sales_pitch/concrete_metric90%100%0.160.070.990.99
sales_pitch/overpromise90%90%0.310.180.970.98
sales_pitch/urgency_pressure90%100%0.180.140.970.96
sales_pitch/vague_benefit100%100%0.160.090.870.95

Reproduce

export TYPESAFE_API_KEY=...
python eval/run_eval.py --set eval/test_set.json                          # shipped presets
python eval/run_eval.py --set eval/test_set.json --presets my_presets/    # your own presets

A small labelled set can't prove the presets are right on every video. These numbers show the questions are unambiguous on clear-cut and near-miss sentences; real speech is messier.