Skip to content

Reddit Discovery Adapter (Phase 1) #6

@bradygaster

Description

@bradygaster

Overview

Implement Reddit JSON API adapter to discover community discussions about Aspire from key .NET/C# subreddits. Provides real-time signals for confusion, adoption stories, pain patterns, and community sentiment — critical blind spot in current ACCES coverage.

Background

Per gap analysis:

  • Current blind spot: Real pain/confusion signals at 15% completeness
  • Reddit value: High-yield source (40-80 posts/week) with zero authentication required
  • Community priority: Bunk's Architecture Refactor: SourceAdapter Pattern + SourceRegistry #1 recommendation for Phase 1 (quick win)
  • Signal types: Adoption friction, confusion patterns, developer questions, praise/complaints

Requirements

  • Implement RedditSourceAdapter extending SourceAdapter interface
  • Use Reddit JSON API (public, no auth): \https://www.reddit.com/r/{subreddit}/new.json\
  • Target subreddits: r/dotnet, r/csharp, r/programming, r/aspnetcore
  • Filter posts by keyword: "aspire", "dotnet aspire", ".net aspire"
  • Extract: title, author, subreddit, post URL, score, comment count, timestamp, body text
  • Map to ContentItem type with channel=subreddit name, source="reddit"
  • Respect Reddit rate limits: max 60 requests/minute (add 1-second delay between subreddit calls)
  • Handle deleted posts, removed content, and API errors gracefully

Squad SDK Integration

  • Adapter registration: Auto-discovered by SourceRegistry via SourceAdapter interface
  • Validation logic: RedditSourceAdapter.validate() returns true (no env vars needed)
  • Error handling: Follows Squad SDK error boundary pattern (isolated failures, continue on error)

Acceptance Criteria

  • AC1: Adapter discovers 10+ Aspire-related posts per run from target subreddits
  • AC2: Each Reddit post maps to ContentItem with valid: id (sha256), title, url, author, publishedAt, content (post body)
  • AC3: Duplicate posts detected via canonical ID (same URL = same sha256 hash)
  • AC4: Adapter handles rate limits without crashing (1-second delay between subreddit requests)
  • AC5: If Reddit API is unreachable, adapter logs warning and returns empty result (does not crash engine)
  • AC6: Reddit posts appear in final reports with channel="r/dotnet" (or other subreddit name)

Dependencies

Depends on: Issue #1 (Architecture Refactor) — Must complete SourceAdapter pattern first

Assigned To

  • Bunk (Community scout, implementation)

Estimated Effort

1 session

  • Implement RedditSourceAdapter class
  • Test against live Reddit API
  • Validate signal quality with Beth

Metadata

Metadata

Assignees

No one assigned

    Labels

    go:needs-researchNeeds investigationsquadSquad triage inbox — Lead will assign to a membersquad:freamonAssigned to Freamon (Lead / Editor-in-Chief)

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions