Write a reviewable Jev Score rubric for issue impact
A single-dimension rubric and a reviewable priority table.
Use caseReplace vague severity labels with observable anchors. Separate impact and evidence, retain fractional scores and human expectations, and produce reviewable priorities.
Replace vague severity labels with observable anchors. Separate impact and evidence, retain fractional scores and human expectations, and produce reviewable priorities.
Source · JevLog editorial · Original guide

Source cover · TypeSafe AI
Published 2026-10-02 from current official docs with original exercises. No live service calls; source publication dates not established.
Problem
Section titled “Problem”Importance is subjective. Rate only task obstruction, not a mixture of revenue, customer tier and emotion. Align reviewers on the rubric before adding a model.
Before you begin
Section titled “Before you begin”-
Download impact-rubric.csv and have two reviewers independently label its fictional reports.
-
The SDK example needs a key; rubric review needs no API call.
Original JevLog diagram, not a product screenshot or measured result.
1. Choose one dimension
Section titled “1. Choose one dimension”The dimension is obstruction of the current task. Explicitly exclude emotion, customer tier and payment amount. Missing task context gets an insufficient-evidence status.
2. Write ordered anchors
Section titled “2. Write ordered anchors”Use observable anchors: normal completion, stated workaround, no stated workaround. A separate Noul checks context so missing evidence is not mistaken for maximum impact.
from typesafe_sdk import TypeSafeClient, Score, Noulwith TypeSafeClient() as client: result = client.system_one("Export fails in Safari but succeeds in Chrome.", { "impact": Score(instructions="How much does this block completion of the stated task?", criteria=["Task works normally", "A stated workaround completes the task", "No stated workaround completes the task"]), "context": Noul(instructions="Does the report describe a concrete task and a failure?") }) answer = result.scores["impact"] print(answer.score, answer.probabilities, answer.confidence) print(result.nouls["context"].noul)3. Retain fractions and distributions
Section titled “3. Retain fractions and distributions”Three levels span 0 to 2 and can yield fractional scores. Store raw score, probabilities and confidence. Round only for display so formatting does not change routing boundaries.
4. Inspect reviewer disagreement first
Section titled “4. Inspect reviewer disagreement first”Classify disagreements as task definition, workaround interpretation or missing evidence. Fix the rubric before model settings. “Nothing works” requires concrete context rather than automatically receiving maximum severity.
5. Use scores for suggestions
Section titled “5. Use scores for suggestions”Record case ID, rubric version, raw score, evidence status and suggested priority. Monitoring, scope and an owner determine incident escalation. Reuse the same labeled cases after revisions.
Practice sample: download impact-rubric.csv for local use; not a live run here.
Result and cautions
Section titled “Result and cautions”A single-dimension rubric and a reviewable priority table.
- More ambiguous levels do not mean greater accuracy.
- Scores do not establish incidents, compensation or permissions.
- Each level is observable and missing evidence has a separate route.
- Keep distributions, fractional scores and disagreements.
Source boundary: compiled from the linked public sources; not reproduced here. Review classifications before acting; they do not run actions automatically.
Related guides
Section titled “Related guides”- Design atomic Jev questions for reviewable routing
- Choose Jev confidence thresholds with a labeled CSV
- Compare CSV classification results by ID: a worked example
Is Score automatically a percentage?
Section titled “Is Score automatically a percentage?”No. It uses ordered positions; three levels span 0 to 2. Any percentage mapping is application-defined.