I'm growing a Bluesky account to distribute content for three AI directory sites — aiappdex.com, findindiegame.com, ossfind.com. The follow growth ramp I built in July adds 20–30 targeted accounts per day. The problem: not everyone follows back, and a list of 2,000 followed accounts where 1,400 are non-mutual is noisy — and, more concretely, resembles what spam accounts do.
AT Protocol does track follow-unfollow patterns. Rapid follow-then-unfollow churn is the primary signal low-quality growth tools produce, and Bluesky moderation flags accounts for it. So when I built the pruner, I wrote the safety rules in first and the core logic second.
Rule 1: A 14-day grace period before any account is eligible for unfollowing
Non-mutual doesn't mean never-will-follow. A newly followed account might not have seen the notification yet, or might check Bluesky infrequently. I settled on 14 days as the minimum grace period because most active users check notifications at least weekly, and I'm not following accounts with millions of followers — my targets are developers and tech-adjacent people who post irregularly.
const cutoff = now.getTime() - graceDays * 24 * 3600 * 1000;






