SPB Git

spb/llmindex Public

The discriminative, contamination-resistant, fully transparent LLM ranking — updated live.

TypeScript 77.9% TeX 15.2% Python 3.7% SQL 1.4% JavaScript 1.1% Shell 0.5%
1.5 KB

# Judge Protocol (pairwise duels)

Author: Simon-Pierre Boucher — contact@spboucher.ai

Open-ended domains (writing, safety_refusal_quality) are ranked by pairwise duels judged by LLMs, feeding a Bradley-Terry model.

# Rules

  1. ≥2 judge models from different providers per duel (configured via the JUDGE_MODELS env var — validated at runtime; never hardcoded).
  2. No self-judging: a model never judges a duel it participates in.
  3. Position swap: judges see the two responses in opposite orders; the swap is recorded on every verdict row.
  4. Style-length guard: the judge prompt explicitly forbids rewarding verbosity or style over substance. Length-bias correlation is computed on published runs.
  5. Transparency: judge agreement rate and position-bias rate are stored in the run's fit_diagnostics and published on the methodology dashboard.
  6. Verdicts are 1, 2, or TIE (unparseable verdicts count as ties, conservatively).

The exact comparison prompt lives in apps/worker/src/judges/config.ts (judgePrompt) and is public. Grading rubrics for scored items are never public — but duel judging is rubric-free by design, so nothing secret ships to judges.

# Aggregation

Ties are encoded as half-wins. Bradley-Terry strengths are fitted with an MM algorithm with light damping (apps/psychometrics/llmindex_psycho/bt.py), log-strengths standardized to a θ-like scale (btStrengthToTheta in packages/scoring), then rescaled like any other domain score.