Fantasy Sumo Draft.
A webapp for running private fantasy sumo leagues.
Fantasy Sumo Draft is a webapp for running private fantasy leagues around the six official sumo tournaments each year, with live drafts, daily scoring, head-to-head fixtures, keepers, and special prizes.

What it is
For each basho, managers draft a stable of real rikishi, set a daily lineup, and compete against each other as the tournament unfolds. Leagues support up to 12 managers, with optional Juryo players, bench slots, keepers, and bot teams for empty places.
Starting rikishi score one point for each real win. A kinboshi adds a bonus point. Daily scores decide head-to-head fixtures, with wins worth two ladder points and draws worth one. At the end of the 15-day tournament, the manager at the top wins the yusho.
There is also a mid-basho waiver draft, where managers can drop one rikishi and submit an ordered list of replacements. Leagues can continue into the next basho, carrying over managers, ranks, and optional keepers.
Managers earn special prizes for achievements such as yusho wins, kinboshi, strong comebacks, perfect days, and winning all six bashos in a calendar year. A separate sumo-style rank system tracks long-term performance, from Juryo through Yokozuna.
The thinking behind it
I visit Japan regularly and love to watch sumo. I’m also a big fan of draft-style fantasy games, and was already running one in a Google Spreadsheet with some mates. Sumo happens to be a good fit for fantasy sports: the top two elite divisions have a manageable number of rikishi (wrestlers), most fans recognise the main names, and the 15-day tournament with six drafts a year gives each league a natural rhythm.
The existing options for fantasy sumo were mostly spreadsheets, forum posts, and manual scoring. I built Fantasy Sumo Draft to give fans a proper place to run leagues, while keeping the live draft at the centre of the experience.
The small player pool makes every pick matter. A snake draft, timed picks, auto-draft lists, bot teams, and skip votes keep the draft moving even when someone cannot be there.
How it’s built
The frontend is a React and TypeScript single-page app built with Vite and Tailwind CSS. It provides the landing pages, league setup, live draft room, lineup management, standings, scoring views, chat, and admin tools.
The backend is a TypeScript API built with Fastify. It handles authentication, league rules, draft turns, auto-picks, daily lineups, scoring, fixtures, achievements, ranks, chat, notifications, and rollover between bashos.
PostgreSQL stores the banzuke, draft picks, rosters, daily lineups, fixtures, scores, achievements, rank history, and chat messages. Basho data is cached locally so scoring does not depend on a live request while a tournament is in progress.
The app pulls banzuke and torikumi data from sumo data sources, with support for Japan Sumo Association data and a fallback API. Scheduled backend jobs keep tournament data, auto-drafts, mid-basho claims, and live scoring up to date.
The frontend and backend run as separate Docker services, with PostgreSQL as a third service. League chat uses WebSockets, and the app also supports browser push notifications. The project has automated tests covering draft order, scoring, rankings, mid-basho drafts, data parsing, and other core rules.
Links
- Fantasy Sumo Draft — the live site.
About the author
Dr Justin Pyvis
Economist based in Perth. Former Principal Economist at the WA Treasury. Now independent.More →