How it works

A cascade, not a crystal ball.

Sift doesn't ask a large model to read everything you scroll past. It asks a series of cheaper questions first, then escalates only the rare post that genuinely needs judgment.

The pipeline

Four layers, cheapest first.

Each layer either decides or passes the post down. Most decisions happen in the top two.

1

Extraction

Post text, author, hashtags, alt text, OCR on images when present. This is plumbing, not judgment, and it costs nothing.

~0 ms
free
2

Hard rules

Your keywords, banned domains, muted authors. Deterministic, instant, and completely predictable: you can always see why a rule fired.

~1 ms
free
obvious?show or hide right here
3

Small models

An on-device classifier and an embedding model compare each post against your preferences as meanings, not strings. "A man was brutally attacked…" matches your violence filter even though the word never appears.

~20 ms
local
confident?decided without leaving your machine
4

LLM fallback

Genuinely ambiguous content escalates to a language model: rarely, and only if you've allowed cloud checks. The same LLM does its most valuable work up front: turning "I hate that ragebait stuff" into a precise, reusable filter.

rare
Pro
The LLM is the teacher, not the classifier. It defines filters once; scrolling never pays for tokens.

Confidence bands

Every decision carries a number.

No classifier is always right, so Sift never pretends to be. Each match gets a similarity score, and the score decides what happens, not bravado.

0.0showreviewhide1.0
0.00 – 0.40

Stays up. Most content lands here: cooking, sports, your friends' dogs.

0.40 – 0.70

Uncertain. On Free these stay visible with a soft flag. Pro users can let the cloud LLM break ties.

0.70 – 1.00

Hidden, with the reason one click away and an undo that teaches the system.

Balanced

Hide strong matches. Uncertain calls stay visible until you say otherwise.

Relaxed

Only extremely obvious matches get hidden. Best for feeds where false positives would ruin your day: work accounts, breaking news.

Balanced

Hide strong matches, keep uncertain ones visible with a soft flag. The default, and what we run ourselves.

Strict

Hide anything reasonably similar. For hard days, detox weeks, or topics you never want to see again.

Sift this

From highlight to filter in one gesture.

Select any text (a post, a caption, a comment) and chooseSift this. Sift asks what you actually mean, then builds a structured preference instead of a brittle keyword.

Block "violence" and you'll be asked: graphic violence, real-world violence, fighting, weapons, all of the above? Your answer becomes a scope, not a string.

New preference
ConceptViolent content
ScopeReal-world onlyFiction, film trailers and games stay visible.
Strength0.9, hide strong matches
DurationPermanent · all sites
ModalitiesText · image · video

Learning

Corrections are the best training data.

Every time you override Sift, your preference map gets sharper, and no data leaves your device to make that happen.

Show anyway

You peek at a hidden post and reveal it. Sift records that this slice of the concept (movie trailers inside "violence", say) belongs in your exceptions.

Always allow this type

One click carves a permanent exception out of a broad preference. Your filters become a semantic map, not a blunt blocklist.

Weekly re-tuning

Exceptions and overrides fold back into your embeddings locally. The Sift Report shows what changed and why.

See it decide on your own feed.

The free plan runs this exact cascade locally. Ten filters, no account, no card.