A Private Recommendation System
One night I was lying in bed scrolling X’s For You feed. Half an hour in. When I put the phone down I felt a low-grade irritation I couldn’t quite name.
Trying to recall what I’d just seen, only three things came back: two strangers arguing, breaking news about a coup somewhere, a cat meme. Not one was something I’d actively sought out, but every one had hit me. The algorithm knows exactly what keeps me watching for another three seconds.
For You really is showing me things I’m “interested in,” but it’s doing something else at the same time: probing my emotional and cognitive edges, using novelty to keep me around. This isn’t a bug, it’s the design. The system serves platform dwell time, not my brain.
What about going back to RSS? I seriously tried.
The upside of RSS is that every source is one I chose, with no algorithm in between making decisions for me. The downside is just as obvious. First, it sorts purely by time: a dozen feeds works fine, but after subscribing to Hacker News, a few dozen blogs, and a handful of YouTube channels, I open the reader to 800 unread items and just want to close it. Second, my feeds are a mix of Chinese and English, and long English pieces carry an extra reading barrier.
RSS hands control back to me, but it doesn’t solve the efficiency problem. It assumes I’m willing to go through everything one by one — but I only want to see the slice I actually care about.
So I built FeedSense. It isn’t the opposite of a recommendation system — it flips the direction: recommend only from sources I chose, learn only from what I’ve actually read, and don’t try to push my interests outward.
Three concrete rules:
- Sources only come from what I add. RSS, websites, YouTube channels — the system never pushes a “you might like this” new account out of thin air.
- Ranking is based on what I’ve read, not on extrapolation. It doesn’t guess what new territory I “might also be interested in,” and it doesn’t use emotional content to probe my reactions.
- AI does two things only: translate and summarize. English blogs, long articles, and YouTube videos should feel as smooth to consume inside the feed as an FYP.
The ranking is a small algorithm I wrote myself: a rolling window infers my recent interests, and every click, bookmark, and read updates that window; a clustering step extracts a current interest vector from it, time decay and a few other factors are layered on, and together they decide the rank of each item. Because the window rolls forward, a topic I haven’t touched for a few weeks naturally fades out of the feed, rather than being kept alive by the platform pushing “let’s try one more and see if you bite.”
Most importantly, I don’t need to optimize for metrics like “user dwell time.” If you’re tired, just close the app. Using sex, politics, or conflict to force people to stay may have commercial value, but it’s not the kind of thing I want to build.
A cleaner analogy. An FYP is like eating at a restaurant: the dish is tasty, but you don’t know what went into it or why you got this one today — because it suits you, or because the kitchen wants to clear inventory. RSS is like buying groceries and cooking for yourself: every ingredient is visible, but the process is exhausting and you rarely have the time. FeedSense is more like a home cook: I pick the ingredients; how to cook them and in what order they’re served is their job.
After using it for a while, I’ve lost a lot of the fun. The memes and jokes on X are gone from my view. But the emotional swings have shrunk too, and I see the things I actually care about in time. FeedSense cuts out the noise, and it also breaks the language barrier for me (my English reading is considerably slower than my Chinese).
If you’re curious, you can try it on the App Store: https://apps.apple.com/app/id6760609052