Graze's Feed Feedback system empowers both readers and feed operators with unprecedented control over their Bluesky experience. By leveraging Bluesky's native interaction signals, we create a dynamic ecosystem where feeds learn and adapt based on user preferences.
When you browse a Graze-powered feed on Bluesky, you'll notice "See More" and "See Less" buttons on posts. These aren't just suggestions—they're powerful signals that shape your personal feed experience and provide valuable insights to feed operators. Every Graze feed has this capability enabled through the acceptsInteractions
flag, making all our feeds responsive to user feedback.
You can verify that a feed is powered by Graze and supports interactions by checking its feed generator record. Using tools like pdsls.dev, look for:
did:web:api.graze.social
- This confirms the feed is hosted on Grazetrue
- This confirms the feed accepts user feedbackAll Graze feeds have both of these properties, ensuring consistent feedback capabilities across our platform.
When you interact with the "See Less" button on a post:
This personalization is:
Our personalization system recognizes patterns in your feedback to provide smarter filtering:
When you click "See Less" on posts from the same author 5 times within a specific feed, our system interprets this as a clear signal that this author's content doesn't match what you want from that particular feed. That author's posts will be automatically filtered from that feed for you going forward.
If you've clicked "See Less" on an author's posts 25 times across all Graze feeds combined, the system recognizes this as a strong preference against that author's content in general. Their posts will be filtered from all Graze-powered feeds you view. This higher threshold ensures that authors aren't globally filtered based on limited interactions, while still protecting you from content you've consistently indicated you don't want to see.
When you return to Graze after being away, our personalization system intelligently reconstructs your preferences from the past 24 hours of activity. This means your feed preferences persist across sessions while still allowing for natural evolution of your interests over time. Posts and authors you've filtered remain filtered even if you close and reopen the app, providing a consistent experience.
All personalization preferences include temporal data, allowing the system to:
The system maintains your personalization state for active sessions, with automatic expiration ensuring that your feeds don't become overly restricted and that authors have opportunities to re-engage with evolved content strategies.
Feed operators gain powerful tools to understand and improve their feeds:
The Engagement dashboard shows:
Feed operators can use reader feedback as a threshold criterion. This means you can create rules like:
These thresholds can be combined with traditional metrics using AND/OR logic:
We've designed this system with privacy at its core:
For developers building on Graze, the feedback system is automatically enabled. The acceptsInteractions: true
flag is set on all feed generators, and Bluesky handles the UI components. Feedback data flows through Bluesky's standard interaction endpoints, ensuring compatibility with the broader AT Protocol ecosystem.
The personalization engine processes these signals in real-time, maintaining user preference states that affect feed generation dynamically. Each user's personalization profile is isolated and secure, with automatic cleanup of stale preferences to ensure optimal performance.
We're continuously improving the feedback system:
The Feed Feedback system represents a fundamental shift in how social media algorithms work. Instead of opaque, platform-controlled algorithms, Graze enables transparent, user-driven, and operator-tuned feeds that evolve with their communities. This creates a more satisfying experience for readers and more valuable insights for feed creators, all while respecting user privacy and maintaining the open values of the AT Protocol.