Jessjessbot
Tooling for a competitive League of Legends and Teamfight Tactics community. It pulls match data from the Riot API and surfaces it in Discord, which covers the part of running a league that otherwise gets done by hand: aggregating per-player statistics across games, resolving who actually played in what, and keeping standings current without anyone maintaining a spreadsheet by hand.
Alongside the bot I run the operations for an eighteen-player league, including the bracket logic and the leaderboard formulas that sit behind it. Running the league is what generates the requirements: most of what the bot does exists because doing it manually became tedious partway through a season.
It is self-hosted on a Hetzner box and deployed through Dokploy in Docker. Getting there meant working through Turborepo and Dokploy build issues and a Docker Compose version mismatch, which is the part I would point to rather than the feature list. It is a small system, but it is one I deploy, break, and fix myself rather than hand in.
Python · Discord · Riot API · Docker · Dokploy · Hetzner · Turborepo