Enter two atproto handles. Each gets turned into a fantasy character — a race, a class, a title, and a signature weapon — with stats pulled from their real public profile: Tweet Strength (post count), Follower Agility (follower/follow ratio), Bio Cunning (profile flair), and Clout Aura (follower count). A narrated, completely made-up battle decides the winner. Same two handles always get the same fight — it's a duel, not a coin flip.
Each handle's public profile (app.bsky.actor.getProfile)
feeds four stats: Tweet Strength from post count, Follower
Agility from the follower/follow ratio, Bio Cunning from
bio length and profile polish, Clout Aura from raw follower
count. Whichever stat is highest picks a class — a Berserker leads
with Strength, a Scout with Agility, a Hedge Wizard with Cunning, a
Paladin with Aura. Race, weapon, and title are picked from a seeded
roll on the account's own DID, so a character looks the same no
matter who they're matched against. The fight itself adds one more
seeded roll — Fortune — then narrates five rounds and lets total
power (weighted stats + Fortune) decide who wins. The whole thing is
seeded off a hash of both DIDs together, so a rematch between the
same two handles always plays out the same way.