Bluesky Custom Feeds represent one of the key approaches to decentralization in the AT Protocol. A marketplace of algorithms was an option missing from the current social media landscape.
Platforms usually offer either opaque algorithms that users can’t control, or purely chronological feeds that reject algorithms altogether. In this context, enabling people to choose or build their own algorithms is not just exciting—it’s necessary for digital sovereignty.
This project began as an experiment: exploring what makes an algorithm useful, how to define topics for feeds, and how to build regional feeds. Later, the focus expanded into gathering data from these feeds and presenting simple analytics to better understand activity patterns and growth.
The system is structured as a modular Node.js backend running in Docker, connected to a MongoDB database Each feed is powered by an algorithm module that retrieves and filters posts from Bluesky (via Jetstream), then stores processed metadata in MongoDB. This setup makes it possible to serve feeds efficiently while also generating analytics in real time.
Code and deployments follow a streamlined pipeline: source code lives in GitHub, automated builds and tests run via GitHub Actions, and deployments are delivered directly to a DigitalOcean App.
As of now I have two big categories of feeds, Regional feeds including Uruguay, Argertina and the combination of both called Rio de la Plata. And Brasil (which is actually a Brasilian Portuguese feed)
Then I made some Tech feeds, one about the Fediverse, another about Salesforce and a genarilistic one about AI
To better understand how feeds were performing, I built dashboards showing:
This project highlighted how decentralized protocols like AT Protocol open new ways to interact with social data, filtering, managing, and experimenting with it. Along the way, I deepened my understanding of AT Protocol, TypeScript, MongoDB, DigitalOcean and the AT Protocol in general.
With today’s social platforms caught between black-box algorithms and the rejection of algorithms altogether, this project was a valuable exercise in designing transparent, user-driven filtering of large-scale social data streams.