Last updated: September 2026

Detect AI-written posts with Jev

One Noul question, a rubric that names the actual tells, and a threshold chosen from what happens next. It returns a float from 0 to 1, and TypeSafe's published input price makes it a rounding error per post.

This is the rubric behind the free scorer below. You can try it without writing any code at /tools/ai-slop-score.

Why this is a Noul

Reading as machine written is a property a post either has or does not, and it is independent of everything else you might ask. It is not a rung on a ladder, so it is not a Score. It is not one option among mutually exclusive categories, so it is not a Choice. It is a Noul, and a Noul returns exactly one float from 0 to 1.

A Noul has no confidence field

The float is the probability. Several published Jev write-ups show a Noul response with a separate confidence value. It does not exist in the API. Only Choice and Score return a confidence field.

The rubric

A Noul takes an optional pair of descriptions telling the model what true and false look like. This is where most of the quality of the answer comes from. A bare question like "is this AI written" gets you a vibe. Naming the tells gets you something you can threshold.

slop-rubric.ts
slop: noul('This reads like it was generated by an AI rather than written by a person.', {
  true: 'Em dashes, triadic lists, "it is not just X, it is Y", uniformly long sentences, words like delve or landscape.',
  false: 'Uneven rhythm, specific detail, an identifiable voice.',
}),

Both sides matter. Describing only the positive case pushes the model toward flagging anything tidy. Giving it a picture of human writing as well is what keeps a well edited post from scoring like a generated one.

What the rubric is looking for

Tell
Why it signals generated text
Em dashes
Rare in casual typing, common in generated prose. A strong signal on short social text, weaker on edited long-form.
Triadic lists
Three parallel items, over and over. Human writing varies the count.
"It is not just X, it is Y"
A construction models reach for constantly and people rarely use twice in a paragraph.
Uniformly long sentences
Human rhythm is uneven. Generated rhythm is flat.
Words like delve, landscape
Register markers that cluster in generated text.

And what pulls the score back down

Counter-signal
What it looks like
Uneven rhythm
A four-word sentence next to a thirty-word one.
Specific detail
Real numbers, real names, things a model would have to invent.
An identifiable voice
Opinions, asides and habits that persist across posts.

Calling it

Jev takes a state and a map of questions and answers them in one parallel pass. Asking for slop alone costs the same round trip as asking for six more things, so in practice you bundle.

detect.ts
import { TypeSafeClient, noul } from '@typesafe-ai/sdk';

const client = new TypeSafeClient({ timeout: 4000 });

const { answers } = await client.systemOne({
  state: { post: draft, platform: 'X (Twitter)' },
  questions: {
    slop: noul('This reads like it was generated by an AI rather than written by a person.', {
      true: 'Em dashes, triadic lists, "it is not just X, it is Y", uniformly long sentences, words like delve or landscape.',
      false: 'Uneven rhythm, specific detail, an identifiable voice.',
    }),
  },
});

// answers.slop.noul is a float from 0 to 1. There is no answers.slop.confidence.
if (answers.slop.noul > 0.5) {
  warnTheAuthor();
}

Set TYPESAFE_API_KEY in your environment and the SDK picks it up. Routes that do not have a direct key can reach the same model through Vercel AI Gateway or OpenRouter, covered in getting Jev API access.

Where this gets it wrong

Worth being blunt about, because the pages selling AI detection usually are not.

  • It scores register, not origin. A careful human writer who likes parallel structure and long sentences will score high. The rubric cannot tell discipline from generation.
  • Short text is thin evidence. A twelve word post does not contain enough rhythm to judge. Treat anything under a couple of sentences as unscoreable rather than clean.
  • Editing defeats it. A generated draft that a person has rewritten is, for stylistic purposes, human writing. That is arguably the correct answer, but it is not the one people expect from a detector.
  • Non-native English scores high. Simpler, more uniform sentence construction reads as generated to a rubric built on rhythm. This is the failure mode most likely to be unfair to a real person.

Do not use this as evidence against someone

A probability about writing style is a useful filter for your own drafts and a reasonable input to a moderation queue. It is not proof of authorship, and no threshold makes it proof. Route high scores to a human, never to an automatic penalty.

Frequently asked questions

Can Jev detect AI-written text?

Jev can score how strongly a piece of text reads as machine written, returned as a Noul float from 0 to 1. That is a probability about style, not a forensic determination of authorship. No detector, Jev included, can prove who or what wrote a passage.

What does a Noul return for this question?

A single float from 0 to 1. There is no separate confidence field on a Noul, because the float is already the probability. Only Choice and Score questions return a confidence value.

What threshold should I use for AI-slop detection?

It depends on what happens next. Surfacing a soft warning to the author is cheap to get wrong, so a bar around 0.5 is reasonable. Blocking or hiding someone else content is expensive to get wrong, so that needs a much higher bar plus human review.

Why do human writers get flagged as AI?

Because the rubric scores register, not origin. Plenty of people naturally write in tidy parallel structures with long uniform sentences. They will score high. That is the honest limitation of every stylistic detector and the reason this should never be used as evidence against a person.

Is there a free tool to check a post?

Yes. There are two free scorers: /tools/ai-slop-score, and /tools/will-it-go-viral which includes an AI-slop Noul among seven questions. Neither needs an account.

Check a post before it goes out

Both scorers are free and need no account. When you are ready to schedule and publish what survives, that is what the rest of OpenTweet does.

7-day free trial. Cancel anytime.