All demosJudge Sheets

Judge Sheets

A spreadsheet where typing a column header — "Urgency", "Refund risk?" — reads what you meant and fills 300 rows with judgments in a few calls.

/classify/yes-no/rate

How it works

The original Jev experiment asked one question per cell: 300 reviews meant 300 requests, each one carrying every question for that row. Here the batching is turned around. One request carries one question and up to 32 texts, so a 300-row column is 10 calls.

Reading the header

120 ms after you stop typing a header, one /classify call goes out with the header on its own first line plus three sample rows from the text column next to it, and 14 described labels: Sentiment, Urgency, Topic, Intent, Buying intent, Tone, Priority, Star rating, Defect?, Recommends?, Refund risk?, Spam?, Yes / no, Low / high. The winning label picks the schema; its probability is the percentage in the chip. The next keystroke aborts the call in flight. A header that already names a schema — Tone, Priority, or an alias like Stars or Severity — skips the call entirely and the chip says “exact match”: a classifier asked to choose between fourteen one-line descriptions used to hand Tone to Spam? at 47%, and a wrong schema at 47% reads exactly like a right one.

Filling the column

Pressing Enter writes =JUDGE, =PICK or =RATE into every data row. The engine recalculates, collects the judgments it is missing, groups them by question and slices each group into chunks of 32 texts. Each chunk is one call:

  • Yes / no schemas (Defect?, Recommends?, Refund risk?, Spam?) go to /yes-no as {texts, statement, when_true, when_false}. Defect? sends the statement “The product itself is broken, damaged or does not work.” with the hints “The writer names a part that broke, cracked, leaks, stopped working, shuts off or arrived damaged.” and “The writer names no broken part: the complaint is about delivery, price, support, colour or size.” Naming the product in the statement and the writer in both hints took this from 46 of 64 fixture rows to 59: “reports a defect” alone scored a ten-day-late delivery as Yes at 99%. Spam? asks the same question by direction — “The sender is selling a service to us, rather than asking about our product.” — which separates a cold backlink pitch from a real price question, 64 of 64. A free-form header becomes a statement too: “Mentions a competitor?” is sent as “The text mentions a competitor.”, and the card lets you edit that statement before you keep the column.
  • Category schemas (Topic, Intent, Tone) go to /classify as {texts, labels} with a description per label — Topic sends shipping as “delivery speed, tracking, packaging or damage in transit”, quality as “build quality, materials, durability or defects”, and so on through price, support and other.
  • Ordinal schemas (Sentiment, Urgency, Buying intent, Priority, Star rating, Low / high) go to /rate as {texts, scale}, low to high. Sentiment sends “very negative, furious or telling others to avoid it” → “negative, disappointed or would not buy again” → “neutral, mixed or indifferent” → “positive, happy and would recommend” → “very positive, delighted and enthusiastic”. The returned score is the expected level, 0 to 4, which is the number the summary block averages and counts against.

The header call is a single text, so its model time is one judgment: about 30 ms. A column call carries 32 texts, and the x-inference-ms it reports is the model time for all of them together — a few hundred milliseconds to a few seconds per call, which is why 300 rows land in well under ten seconds.

Budget

Every visitor shares one key, so the page fetches nothing until you press Run, a sheet only queues its judgments once you open it (Reviews is 300 judgments and 10 calls; opening Leads adds 150 more), the column you just asked for goes to the front of that queue, and a run stops by itself after 14 calls or 60 seconds. Calls are paced at two a second page-wide. Cells that come back from cache cost nothing: re-reading the same header with another schema you already ran is free.

Ported from the judge-sheets Jev experiment. Every request here is live; the shared demo key allows about 2 requests per second across all visitors.