USE WHEN
When to use this experiment
You want a consistent pre-publish wording check.
DRAFT / REVIEW · R02
Enter a draft to see scores for tone and clarity, then compare versions. The tool does not rewrite your text.
YOUR INPUT
Edit the example input
RESULT
Jev’s answers
Probability-weighted rubric position, not a percentage or confidence score.
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
Provider confidence: 43%
Probability-weighted rubric position, not a percentage or confidence score.
Explicitly dismissive
Cold or abrupt
Neutral
Considerate
Explicitly welcoming and considerate
Provider confidence: 36%
Probability-weighted rubric position, not a percentage or confidence score.
No aggressive wording
Slightly sharp wording
Repeated sharp or dismissive wording
Direct belittling or hostility
Sustained personal hostility
Provider confidence: 59%
Probability-weighted rubric position, not a percentage or confidence score.
No unexplained specialist terms
A small number with enough context
Several may need explanation
Many obstruct comprehension
The message is dominated by unexplained jargon
Provider confidence: 41%
Provider confidence: 52%
Text rubric judgments are not reach, virality, personality or audience-outcome predictions.
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.
APP RULES
Change how your app uses the answer
↯ Changing these rules updates the result in your browser without another model call.
{
"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
}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
You want a consistent pre-publish wording check.
LIMITS
You need audience outcome predictions or a judgment about the writer.
BUILT-IN CHECKS