Dynamic time decay

When For You started I didn't have a way to tell which posts the user has seen. When the user refreshed the feed - they would get the same ranking of results.

To make it feel more dynamic I added an exponential time decay with a half-life of 6 hours.

It means that the score of an item gets reduced by 50% when the age of the item reaches 6 hours, -75% by 12 hours, -87.75% by 24 hours.

The idea was to get older items sink to the bottom and give space to newer items.

To make it even more dynamic I made the half-life depend on how long ago since you last opened or refreshed For You:

Last visit >6 hours ago => half-life is 6 hours

Last visit <1 hour ago => half-life is 1 hour

Otherwise half-life=

The idea was that the more recently you opened the feed the more likely you have seen an older post in your previous visit and the more heavily we should penalize older items.

Since then the Bluesky client app started telling the feed generator which feed items the user has seen:

This is thanks to the patch Dan sent:

Now that For You knows which posts the user has seen the heuristic to demote older posts is no longer serving its original purpose. Do we just rip it out?

Not completely. We do want some form of time-decay because otherwise posts that have been out there for longer are able to accumulate more likes. It makes it unfair.

One thing I want to remove is the dynamic part of time decay and replace it with a static half-life of 6 hours:

To measure the impact of such change I started an A/B test two days ago: 50% of the users get the old logic with the dynamic half-life and 50% get the new one with the fixed half-life.

The experiment has produced some remarkable in such a short time:

36.58% fewer "Show less like this" interactions: 14,885 -> 9,440

18.73% fewer users used "Show less like this": 2,829 -> 2,299 (statistically significant)

5.07% more likes: 876,103 -> 920,547 while the number of users who liked at least one post remained the same (-0.11%: 61,350 -> 61,285)

On the other hand, the age of posts seen in For You has increased ~2x: 149.3 -> 324.9 minutes (~2.5 -> 5.4 hours)

I do recognize that people do value the freshness of content in For You:

The question is whether the reduction in freshness is worth the 37% reduction in "show less like this" and 5% increase in likes. I lean toward "yes". What do you think?

I will keep running the experiment for another week or so to get more data and user feedback.