Savicore (now sabu.gg) · Jul 2025 – May 2026 · Partially built, not launched
Tournament Platform
Turning community tournaments run in Discord into a place where players find teams, compete, and see how they played.
Savicore (now sabu.gg) ran weekly community tournaments for its League of Legends students, organised by hand: teams formed in Discord, and results arrived as screenshots.
I designed the platform to replace that, covering team finding, team and player pages, and the full tournament lifecycle. It was the largest and most ambiguous system I worked on.

01 / Context
Tournaments were working. The tooling wasn't.
Solo players struggled to find teams, organisers relayed results by hand, and custom games left no stats beyond a screenshot.
The problem spanned the social side (finding teammates, recruiting, scrims) and the competitive side (events, brackets, matches, stats). It was bounded by Riot's API and by legal limits on player-to-player chat, and key rules, like how results would be verified, were still open.
02 / The result
One lifecycle, from upcoming to completed.
Every tournament view is built around the event's state: upcoming events lead with registration, ongoing ones with matches and the bracket, and completed matches open into summaries and player stats.



03 / Decision · Structure
Separating finding people from competing.
My first version was a single hub mixing recruitment and tournaments. They're different jobs that happen at different times: "I need people to play with" and "I want to compete".
I split them. Nexus handles players, teams, and scrims, with two clear entry points: find a team or recruit teammates. Both run through short five-step forms, with roles as icons and tags that later power the filters.



04 / Decision · Data
Dense stats that still scan.
Players wanted the depth of sites like OP.gg, but ten players across several games quickly becomes a wall of numbers. I built one table component with fixed column priorities: identity first, then the stats players compare most, with secondary columns dropping first on smaller screens. Match, team, and player pages all reuse it.


05 / Impact
Where it landed.
Development started before the design was finished, and work stopped when the company shifted its focus to sabu.gg. The platform never launched.
It set the product's direction.
The tournament layout and sidebar became the v3 app shell that carried into sabu.gg.
It reached development.
The hub, team, and tournament pages were partially built, with profiles linked to Riot accounts.
A QA trail for what was built.
In March 2026, I reviewed the dev build and documented the gaps: missing error states when creating or editing tournaments, broken links between team and player pages, filters, and icon issues.
06 / Reflection
Protect focus on complex work.
The platform was interrupted several times by other priorities and moved into development before its flows were settled. Rules like team communication and result reporting were still being decided during the build. In my current role, I make sure each task is clearly defined up front, and I finish it before moving to the next.
Next case study
Coach Booking All work