JevFilterForX
September 20, 2026 · View on GitHub
JevFilterForX is a browser extension for turning the X timeline into a higher-signal feed. It scores visible posts, explains the score with lightweight labels, and folds posts that match your filters.
Demo
Download or open the demo video

What it does
- Scores posts on a 0–100 scale.
- Uses information signal, actionability, and originality as the main scoring dimensions.
- Shows the score and topic/value labels directly in the X timeline.
- Folds low-value posts while keeping them available to expand.
- Lets you hide the same post again after expanding it.
- Hides attached images and videos together with a folded post.
- Provides an options page in its own tab for API key, Jev API address, language, topics, value preferences, category filters, and score thresholds.
- Includes English, Simplified Chinese, Japanese, Spanish, and German UI translations.
Why Jev for real-time filtering?
Timeline filtering is a high-frequency classification task. Jev is designed for fast, low-cost requests, which makes continuous filtering practical. Compared with routing every post through a general-purpose LLM, a lightweight Jev classification request is a better fit for low latency and predictable per-post cost.
Scoring model
Jev rates each dimension from 0 to 4 and converts the weighted result to 0–100:
$\text{text} (\text{signal} \times 40% + \text{actionability} \times 35% + \text{originality} \times 25%) ÷ 4 \times 100 $
- 0–29: Low
- 30–69: Medium
- 70–100: High
Topic, value, and noise categories are evaluated separately, so category filters and Focus Mode can still fold a post regardless of its score.
Install
Download a release
Open the latest JevFilterForX release and download the Chrome ZIP under Assets. Unzip it, then open chrome://extensions, enable Developer mode, and choose Load unpacked. Select the unzipped folder that contains manifest.json.
Download a packaged build
The GitHub Actions workflow builds a Chrome extension ZIP for every push to main and every pull request. To download the latest packaged build:
- Open the latest successful CI run.
- Open the run and download the
jevfilterforx-chrome-<commit>artifact. - Unzip the artifact, then open
chrome://extensions, enable Developer mode, and choose Load unpacked. - Select the unzipped folder that contains
manifest.json.
Releases are created automatically by CI when a v* tag is pushed. For example:
git tag v0.1.0
git push origin v0.1.0
Build locally
Use Node.js 22 or newer.
-
Install dependencies:
npm install -
Build the extension:
npm run build -
Open
dist/chrome-mv3as an unpacked extension in Chromium-based browsers. -
Open JevFilterForX settings, add a TypeSafe API key, and choose your filters.
Without an API key, the extension stays in local mock mode so the UI and filtering flow can still be explored.
Development
npm run dev
npm test
npm run typecheck
npm run build
Privacy and permissions
The API key is stored on the current device and is not synced to a Google account. Classification requests go to the Jev API address configured in settings, which defaults to https://api.typesafe.ai/v1/systemone; clearing the field restores that default. The extension asks for access to X/Twitter pages and the default TypeSafe host up front, and requests permission for any other host only when you save a custom address.
Project status
JevFilterForX is an early-stage project. Classification accuracy, retry behavior, and the timeline DOM integration are still being tuned as X changes.