DRAFT / REVIEW · R02

Check a Draft's Tone and Clarity

Enter a draft to see scores for tone and clarity, then compare versions. The tool does not rewrite your text.

Sample preview availableLive runs available

Quality status: Recipe-level semantic benchmark not completed.
Live availability does not certify result quality.

Recipe 1.0.0
Sources S40
Content checked 20 Sep 2026

JEV EVALUATIONEXPERIMENT R02 · V1.0.0
01

YOUR INPUT

Edit the example input

1 credit per 5,000 billed input tokens. We’ll ask before any multi-credit run.

02

RESULT

Jev’s answers

Illustrative sample · Not a live run
Clarityscore
3.10 / 4

Probability-weighted rubric position, not a percentage or confidence score.

  1. 0

    No interpretable main point

  2. 1

    The main point is hard to identify

  3. 2

    The main point is identifiable but important details are unclear

  4. 3

    Mostly clear with a minor ambiguity

  5. 4

    Clear main point and relevant next step or context

Provider confidence: 43%

Warmthscore
2.40 / 4

Probability-weighted rubric position, not a percentage or confidence score.

  1. 0

    Explicitly dismissive

  2. 1

    Cold or abrupt

  3. 2

    Neutral

  4. 3

    Considerate

  5. 4

    Explicitly welcoming and considerate

Provider confidence: 36%

Aggressionscore
0.80 / 4

Probability-weighted rubric position, not a percentage or confidence score.

  1. 0

    No aggressive wording

  2. 1

    Slightly sharp wording

  3. 2

    Repeated sharp or dismissive wording

  4. 3

    Direct belittling or hostility

  5. 4

    Sustained personal hostility

Provider confidence: 59%

Jargonscore
1.60 / 4

Probability-weighted rubric position, not a percentage or confidence score.

  1. 0

    No unexplained specialist terms

  2. 1

    A small number with enough context

  3. 2

    Several may need explanation

  4. 3

    Many obstruct comprehension

  5. 4

    The message is dominated by unexplained jargon

Provider confidence: 41%

Intentchoice
inform
Inform68%
Request14%
Pitch8%
Joke3%
Mixed7%

Provider confidence: 52%

YOUR APP’S NEXT STEPPasses the current checkscurrent-rubric-cleared

Text rubric judgments are not reach, virality, personality or audience-outcome predictions.

03

QUESTIONS FOR JEV

Edit the questions

Editing a question requires a new model run. Each experiment keeps its answer types, options, and scoring scale fixed.

04

APP RULES

Change how your app uses the answer

↯ Changing these rules updates the result in your browser without another model call.

Inspect result +
{
  "origin": "fixture",
  "answers": {
    "clarity": {
      "type": "score",
      "score": 3.1,
      "probabilities": {
        "0": 0,
        "1": 0,
        "2": 0,
        "3": 0.8999999999999999,
        "4": 0.10000000000000009
      }
    },
    "warmth": {
      "type": "score",
      "score": 2.4,
      "probabilities": {
        "0": 0,
        "1": 0,
        "2": 0.6000000000000001,
        "3": 0.3999999999999999,
        "4": 0
      }
    },
    "aggression": {
      "type": "score",
      "score": 0.8,
      "probabilities": {
        "0": 0.19999999999999996,
        "1": 0.8,
        "2": 0,
        "3": 0,
        "4": 0
      }
    },
    "jargon": {
      "type": "score",
      "score": 1.6,
      "probabilities": {
        "0": 0,
        "1": 0.3999999999999999,
        "2": 0.6000000000000001,
        "3": 0,
        "4": 0
      }
    },
    "intent": {
      "type": "choice",
      "choice": "inform",
      "probabilities": {
        "inform": 0.68,
        "request": 0.14,
        "pitch": 0.08,
        "joke": 0.03,
        "mixed": 0.07
      }
    }
  },
  "providerConfidence": {
    "clarity": 0.43,
    "warmth": 0.36,
    "aggression": 0.59,
    "jargon": 0.41,
    "intent": 0.52
  },
  "policyDecision": {
    "action": "passes-current-checks",
    "label": "Passes the current checks",
    "reasonCodes": [
      "current-rubric-cleared"
    ]
  },
  "run": null
}
TypeScript export +
import { experimental_evaluate as evaluate } from 'ai';

const state = {
  "draft": "We added CSV export today. Open your dashboard, choose Export, and select a date range. Please tell us if a field is missing.",
  "audience": "Existing customers",
  "context": "A product update"
};
const questions = {
  "clarity": {
    "type": "score",
    "instructions": "How clearly does the draft convey its main message to the stated audience?",
    "criteria": [
      "No interpretable main point",
      "The main point is hard to identify",
      "The main point is identifiable but important details are unclear",
      "Mostly clear with a minor ambiguity",
      "Clear main point and relevant next step or context"
    ]
  },
  "warmth": {
    "type": "score",
    "instructions": "How warm or welcoming is the wording? Rate textual tone, not the writer.",
    "criteria": [
      "Explicitly dismissive",
      "Cold or abrupt",
      "Neutral",
      "Considerate",
      "Explicitly welcoming and considerate"
    ]
  },
  "aggression": {
    "type": "score",
    "instructions": "How aggressive is the wording toward its reader or another person?",
    "criteria": [
      "No aggressive wording",
      "Slightly sharp wording",
      "Repeated sharp or dismissive wording",
      "Direct belittling or hostility",
      "Sustained personal hostility"
    ]
  },
  "jargon": {
    "type": "score",
    "instructions": "How dense is unexplained specialist language for this audience?",
    "criteria": [
      "No unexplained specialist terms",
      "A small number with enough context",
      "Several may need explanation",
      "Many obstruct comprehension",
      "The message is dominated by unexplained jargon"
    ]
  },
  "intent": {
    "type": "choice",
    "instructions": "What is the main communicative purpose of this draft?",
    "criteria": {
      "inform": "Provide information",
      "request": "Ask for an action or answer",
      "pitch": "Promote an offer or product",
      "joke": "Primarily entertain",
      "mixed": "Mixed or insufficiently clear"
    }
  }
};
const policy = {
  "aggressionReviewAt": 3,
  "clarityReviewAtOrBelow": 1
};

const result = await evaluate({
  model: 'typesafe-ai/jev',
  state,
  questions,
  maxRetries: 0,
  providerOptions: { gateway: { zeroDataRetention: true } },
});

// Validate result.answers before applying your deterministic policy.
console.log({ answers: result.answers, policy });

USE WHEN

When to use this experiment

You want a consistent pre-publish wording check.

LIMITS

What this experiment cannot do

You need audience outcome predictions or a judgment about the writer.

BUILT-IN CHECKS

How this experiment handles edge cases

  • Negative dimensions never silently invert their meaning.
  • No claim that Jev rewrites or predicts virality.
  • A/B versions retain separate inputs and run receipts.