Feeds began as simple chronological things. Over time, as the volume of content increased, they became non-linear. They began observing how you used them and attempting to predict what you’d want to see next.
This was done to keep you on the feed. Fundamentally, why show people things they don’t want to see? Despite this, platforms serve us content that irritates or upsets us. It’s antagonistic rage-baiting. In a sense, you do want to see it as evidence by your engagement. But it’s a poor indicator of quality of interest.
Don’t get me wrong, I’m all for rage-bait in doses, in the same way I enjoy occasional fast food. But by indexing strictly on attention metrics and augmented by best guesses, you quickly end up deep in the filter bubbles.
Platforms have played with opening up control over the feed to users, but it’s a real challenge. Exposing fine-grained control requires cascading levers and a sense overwhelm. These systems are simply too complex for deterministic interfaces to have meaningful utility at scale.
How can we better align feeds not only with users’ emergent behaviors, but also their genuine intentions? We all experience degrees of difference between the two.
I think LLMs and prompt engineering could provide unique new affordances here. Specifically, introducing a new pattern enabling users to prompt engineer feeds assembled with LLMs.
Prompt engineering enables you to prime an LLM towards a desired output with a simple plain language instruction set. “Respond in the style of Shakespeare.” “Give me a list but use Gen Z slang.”
Or in this case, “show me photographers who I haven’t checked in on for a while, and maybe show less music stuff.”
Natural language is loose and lossy. Non-deterministic and subjective. More human somehow? It can be specific or poetic. A good prompt can have style. There needs to be more room for expression like this. Less rigidness. More real.
Prompts can also be easily stored and transferred. It’s just some text.

I’m working to center CycleMarks on this pattern. You add things you want to remember—some more or less frequently than others. Similar to a follow, but mapped to a rhythm of your choice. CycleMarks will resurface things to you as time passes. And you can rest assured things won’t be lost forever, alleviating the slot machine vibe of most feeds.
Your CycleMarks feed is populated with a default prompt. Something along the lines of:
Today is January 1st, 2025. Filter all of the users’ marks to only include those with no dismissed dates, or dismissed dates which come at or before today. Try to have a good balance of cycle rates between frequently and occasionally. Limit it to 20 marks. Thanks!
You can modify and adjust the prompt at any point. For example, only show me things that I’ve seen once or twice. Or perhaps show me only things I added more than a month ago.
You can have multiple feeds saved, each with a unique prompt.
CycleMarks appears a great initial application for this. A real-time social platform would likely incur latency and be financially apocalyptic deployed at scale. Your CycleMarks feed updates only when you add new content to it. I have around 1,300 marks in my feed. For a few tens-of-thousands of users it’s a reasonable amount for a simple pgvector deployment. I’m interested in how this could be run on-device with a local LLM.
While chatting with an LLM about this it summarized the idea as:
Instead of setting specific time intervals for when something resurfaces, CycleMarks now works on an “attention index.” You simply choose how often you want to be reminded of something—ranging from frequently to occasionally—and the app takes care of the rest. CycleMarks intuitively resurfaces marks based on your engagement and patterns, making the experience feel more natural and less like a rigid schedule. It’s not about strict cycles; it’s about keeping the things you care about in your orbit at the right moments.
It sounds about right.
Algorithmic feeds today are complex systems. In many ways, people are complex systems too. But there is something beautiful in language as a means of interfacing between complex things. It’s imprecise and open to interpretation. Accidental meaning unfolds.
Perfect for discovery and introducing a fresh splash of chance, luck, and serendipity to life.
Stay in the loop and recieve an invitation to the CycleMarks beta.