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.
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:
fetchRecentReportsFeed(already pulls network-wide kind:1984 for the live feed tab) with a wider windowptag ->Map<pubkey, reports>findSwarmReportIds/ bot content signature) so bot swarms cannot game the boardCaveats to state in the UI
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.