Overview

Feed Feedback and Personalization

Graze's Feed Feedback system uses Bluesky's "See More/See Less" buttons to create intelligent, personalized feed experiences that adapt to individual preferences while giving feed operators real-time insights into content performance.

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.

Overview

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.

Verifying Graze Feeds

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: did:web:api.graze.social - This confirms the feed is hosted on Graze
  • acceptsInteractions: true - This confirms the feed accepts user feedback

All Graze feeds have both of these properties, ensuring consistent feedback capabilities across our platform.

How It Works

For Readers

When you interact with the "See Less" button on a post:

  1. Immediate Personalization: That specific post won't appear again in your feed
  2. Author Filtering: After multiple "See Less" signals on an author's content within a specific feed, their posts will be filtered from that feed for you
  3. Cross-Feed Protection: If you consistently request less content from an author across multiple feeds, their posts may be filtered globally across all your Graze feeds
  4. Time-Aware: Your preferences are time-bounded and naturally expire, allowing for changing interests and giving authors another chance

This personalization is:

  • Private: Your preferences are never shared with other users or the post authors
  • Feed-Specific: Filtering an author in one feed doesn't automatically affect other feeds (unless you reach the global threshold)
  • Reversible: Preferences naturally expire over time, and future improvements will allow manual preference management

Intelligent Author Filtering

Our personalization system recognizes patterns in your feedback to provide smarter filtering:

Feed-Specific Author Blocking

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.

Global Author Filtering

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.

Smart Rehydration

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.

Temporal Awareness

All personalization preferences include temporal data, allowing the system to:

  • Maintain recent preferences while letting older ones naturally fade
  • Potentially implement "cooling off" periods for filtered authors
  • Adapt to your changing interests over time

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.

For Feed Operators

Feed operators gain powerful tools to understand and improve their feeds:

Real-Time Engagement Analytics

The Engagement dashboard shows:

  • Feedback Metrics: Live counts of "See More" and "See Less" actions on posts in your feed
  • Traditional Engagement: Likes, reposts, and replies tracked alongside feedback signals
  • Trend Analysis: Understand which types of content resonate with your audience
  • Author Performance: See how different creators perform within your feed's context

Dynamic Thresholds

Feed operators can use reader feedback as a threshold criterion. This means you can create rules like:

  • "Only show posts that have received at least 3 'See More' signals from my feed's readers"
  • "Hide posts that have a 'See Less' to 'See More' ratio greater than 2:1"
  • "Boost posts from authors who consistently receive positive feedback"

These thresholds can be combined with traditional metrics using AND/OR logic:

  • "Show posts with 10+ likes OR 2+ 'See More' signals from verified users"
  • "Require 5+ reposts AND no more than 1 'See Less' signal"

Privacy and Trust

We've designed this system with privacy at its core:

  • Anonymous Aggregation: Feed operators see aggregate metrics, not individual user actions
  • No Author Visibility: Content creators cannot see who requested less of their content
  • User Control: Personalization only affects your own experience, not others'
  • Transparent Filtering: Posts are filtered based on clear, consistent rules
  • No Permanent Blocks: All filtering is time-bounded and can expire, ensuring no permanent censorship

Technical Integration

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.

Best Practices for Feed Operators

  1. Start Conservative: Begin with loose thresholds and tighten based on observed patterns
  2. Monitor Regularly: Check your Engagement dashboard to understand reader preferences
  3. Iterate Thoughtfully: Adjust thresholds based on feedback patterns, not individual posts
  4. Communicate Changes: Let your community know when you're adjusting feed logic based on their feedback
  5. Balance Perspectives: Remember that "See Less" doesn't mean bad content—it might just be the wrong audience

Future Enhancements

We're continuously improving the feedback system:

  • Enhanced preference management tools for users
  • More sophisticated threshold options for operators
  • Advanced analytics and insights
  • Community-driven feedback patterns
  • Cross-feed intelligence sharing (with user consent)
  • User-controlled preference persistence settings
  • Author feedback dashboards (anonymized and aggregated)

Conclusion

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.