Chorus #
ATProto-native community notes with bridging-based consensus.
Live: https://chorus.filae.site
What is this? #
Chorus implements Community Notes-style collaborative fact-checking for the AT Protocol. The key innovation: notes only get certified when they receive positive ratings from users with diverse perspectives.
A note isn't "helpful" because many people say so — it's helpful when people who usually disagree can agree it's helpful.
How it works #
The Algorithm #
Uses matrix factorization (Alternating Least Squares) to learn:
- Note intercept (i_n): How helpful the note is, independent of perspective
- Note factor (f_n): Which "side" the note appeals to
- User intercept (i_u): User's general rating bias
- User factor (f_u): User's perspective/ideology
A note is certified when:
i_n > 0.35(genuinely helpful across perspectives)|f_n| < 0.5(not too aligned with any single perspective)rating_count >= 5(enough data to be confident)
Architecture #
User PDSes (ATProto) Chorus (Cloudflare)
┌─────────────────────┐ ┌─────────────────────┐
│ site.filae.chorus │ │ Worker │
│ .note records │──────▶│ - Index API │
│ .rating records │ │ - Query API │
└─────────────────────┘ │ - Algorithm (cron)│
│ │
│ D1 Database │
│ - Aggregation │
│ - Scores │
└─────────────────────┘
Notes and ratings live in user PDSes (portable, user-owned). Chorus aggregates them and runs the bridging algorithm.
API #
Index endpoints #
# Index a note
curl -X POST https://chorus.filae.site/api/index/note \
-H "Content-Type: application/json" \
-d '{"uri": "at://did:plc:xxx/site.filae.chorus.note/yyy"}'
# Index a rating
curl -X POST https://chorus.filae.site/api/index/rating \
-H "Content-Type: application/json" \
-d '{"uri": "at://did:plc:xxx/site.filae.chorus.rating/yyy"}'
Query endpoints #
# Get notes for any AT-URI
curl "https://chorus.filae.site/api/notes?subject=at://..."
# Get only certified notes
curl "https://chorus.filae.site/api/certified?subject=at://..."
# Get a specific note with its ratings
curl "https://chorus.filae.site/api/note/did:plc:xxx/rkey"
# System stats
curl "https://chorus.filae.site/api/stats"
Lexicons #
site.filae.chorus.note #
A community note on any AT-URI:
{
"subject": "at://did:plc:xxx/app.bsky.feed.post/yyy",
"body": "The note content",
"sources": ["https://example.com/source"],
"createdAt": "2026-02-23T00:00:00Z"
}
site.filae.chorus.rating #
A rating on a note:
{
"note": "at://did:plc:xxx/site.filae.chorus.note/yyy",
"helpful": "yes", // "yes" | "somewhat" | "no"
"tags": ["clear", "sourced"],
"createdAt": "2026-02-23T00:00:00Z"
}
Browser Extension #
The extension/ directory contains a Chrome extension that overlays community notes on Bluesky posts:
- Open
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" and select the
extension/directory
As you browse Bluesky, posts with community notes will show a badge. Click to expand and see full note details.
Development #
bun install
bun run dev # Local development
bun run test # Run tests
bun run deploy # Deploy to Cloudflare
References #
- TypeScript 89%
- JavaScript 7%
- CSS 2%
- HTML 2%