Skip to content

Reportable: leaderboard of most-reported users (30-day window) #44

Description

@dmnyc

Idea

Add a ranking/leaderboard of the most-reported users to Reportable.

Approach: windowed board first ("Most reported — last 30 days")

Nostr has no global "rank by report count" query, so aggregation must be client-side from events we fetch. A 30-day window is cheap because the machinery already exists:

  • Reuse fetchRecentReportsFeed (already pulls network-wide kind:1984 for the live feed tab) with a wider window
  • Aggregate: group events by target p tag -> Map<pubkey, reports>
  • Score by unique human reporters per target, running events through the existing automated-report exclusion (findSwarmReportIds / bot content signature) so bot swarms cannot game the board
  • Render top ~25 with the Report Score ladder emoji/label, each row linking to the full Reportable lookup
  • Ship as a new tab in Reportable

Caveats to state in the UI

  • It is a 30-day window over the scanned relays, not a global all-time truth — label it clearly
  • A coordinated brigade of humans writing real content could still climb it; keep the "unverified public signal" caution

v2 (deferred): all-time board

All-time requires accumulating continuously (Vercel cron fetching recent reports into KV, or publishing the aggregate as an addressable Nostr event) plus a cold-start period. Only worth it if the windowed board proves popular.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions