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.
Extraction
Post text, author, hashtags, alt text, OCR on images when present. This is plumbing, not judgment, and it costs nothing.
Hard rules
Your keywords, banned domains, muted authors. Deterministic, instant, and completely predictable: you can always see why a rule fired.
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.
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.
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.
Stays up. Most content lands here: cooking, sports, your friends' dogs.
Uncertain. On Free these stay visible with a soft flag. Pro users can let the cloud LLM break ties.
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.
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.