Applications

sift

@bohutang5JavaScriptMITupdated 2026-09-19runnable

Chrome extension that labels every post on X (Substance · Humor · Chit-chat · Promo · Junk · AI-written) with TypeSafe Jev, and hides the ones you don't want.

bohutang/sift

Where it calls Jev

const API_URL = "https://api.typesafe.ai/v1/systemone";

background.js:4

The link points at the commit we read, so the line number still holds.

What it asks Jev

These question sets are lifted from this project's source exactly as written.

from defaults.js:73

  1. categorychoice

    Which single category best describes this post? The state may include the post text, a quoted post, a link card or article title, what media is attached, and — for replies — the post being replied to (in_reply_to). A photo or video with a short caption, an emoji reaction, or a quote-post with only an emoji is usually 'personal'. A screenshot of a chat conversation, a viral story about relationships / dating / family / celebrities, a rhetorical 'would you...?' prompt, or a meme is 'humor' or 'personal' — never 'insight' or 'news', no matter how many likes it has. For a reply, a short genuine reaction from a real person to the parent post is 'personal', not 'filler'.

    • insightoriginal analysis, first-hand experience, technical detail, specific data or numbers, a concrete lesson learned. Must actually teach or explain something.
    • newsreports a concrete event, release, paper, announcement or fact with specifics
    • discussiona genuine question or opinion with enough context that a thoughtful person could reply substantively
    • humora joke, meme caption, pun, funny screenshot, or witty observation whose point is to be funny
    • personalcasual personal update, a photo or video of daily life, plain reaction or emoji, thanks, agreement, congratulations, a short specific comment from a real person on the parent post ('效率也太高了', 'tried it, works great', 'nice, what model?')
    • promoselling or pushing a course, product, newsletter, waitlist, affiliate link, or 'check out my ...'
    • baitwritten to farm engagement: 'bookmark this', 'reply X and I'll DM', 'most people don't know', ragebait, vague promises of a secret system, contentless 'agree?' / 'thoughts?', follower farming
    • fillera text-only reply or post with literally nothing to it: 'gm', '.', 'W', 'this', 'first', 'so true', a single generic word, a copy-pasted comment that could be under any post — but NOT a short reaction that clearly refers to the parent post, and NOT an emoji reaction to a quoted post or a photo, those are personal
  2. techtrue/false

    Is this post about technology? For a reply, judge by the conversation it is in (in_reply_to): a reaction under a tech post counts as tech.

  3. ai_writtentrue/false

    Does this post read as written by an AI language model (ChatGPT-style) rather than typed by a person?

Run it on your own text

The code
import { experimental_evaluate as evaluate } from 'ai';

const { answers } = await evaluate({
  model: 'typesafe-ai/jev',
  state,
  questions: {
    category: { type: 'choice', instructions: 'Which single category best describes this post? The state may include the post text, a quoted post, a link card or article title, what media is attached, and — for replies — the post being replied to (in_reply_to). A photo or video with a short caption, an emoji reaction, or a quote-post with only an emoji is usually \'personal\'. A screenshot of a chat conversation, a viral story about relationships / dating / family / celebrities, a rhetorical \'would you...?\' prompt, or a meme is \'humor\' or \'personal\' — never \'insight\' or \'news\', no matter how many likes it has. For a reply, a short genuine reaction from a real person to the parent post is \'personal\', not \'filler\'.',
      criteria: { insight: 'original analysis, first-hand experience, technical detail, specific data or numbers, a concrete lesson learned. Must actually teach or explain something.', news: 'reports a concrete event, release, paper, announcement or fact with specifics', discussion: 'a genuine question or opinion with enough context that a thoughtful person could reply substantively', humor: 'a joke, meme caption, pun, funny screenshot, or witty observation whose point is to be funny', personal: 'casual personal update, a photo or video of daily life, plain reaction or emoji, thanks, agreement, congratulations, a short specific comment from a real person on the parent post (\'效率也太高了\', \'tried it, works great\', \'nice, what model?\')', promo: 'selling or pushing a course, product, newsletter, waitlist, affiliate link, or \'check out my ...\'', bait: 'written to farm engagement: \'bookmark this\', \'reply X and I\'ll DM\', \'most people don\'t know\', ragebait, vague promises of a secret system, contentless \'agree?\' / \'thoughts?\', follower farming', filler: 'a text-only reply or post with literally nothing to it: \'gm\', \'.\', \'W\', \'this\', \'first\', \'so true\', a single generic word, a copy-pasted comment that could be under any post — but NOT a short reaction that clearly refers to the parent post, and NOT an emoji reaction to a quoted post or a photo, those are personal' } },
    tech: { type: 'boolean', instructions: 'Is this post about technology? For a reply, judge by the conversation it is in (in_reply_to): a reaction under a tech post counts as tech.' },
    ai_written: { type: 'boolean', instructions: 'Does this post read as written by an AI language model (ChatGPT-style) rather than typed by a person?' },
  },
});

Other projects in this category