gaganb.pageResume
Sisyphus. Push the boulder together.

SISYPHUS

A ranked-game chronicle for a Discord squad

Status
Shipped
Year
2026
Role
Design and code, solo
Built with
Pythondiscord.pyReactTypeScriptECharts

OVERVIEW

A Discord bot for a League of Legends squad. It tracks ranked Solo/Duo games and records the climb.

WHAT I OWNED

  • Built ranked-match tracking and the Discord recaps.
  • Built the private dashboard and its five-minute export.
  • Added squad goals, rivalries and fake-points markets.
  • Built Rewind with an account-specific year-end recap.

OBJECTIVES

Keep the climb

How might ranked games become a shared record instead of disappearing into match history?

Reconcile the result

How might late data become one recap, without duplicates or stale results?

Make it social

How might the reaction around a result become part of the game?

HOW THEY BECAME FEATURES

WHY?

Riot and OP.GG expose different parts of the result at different times.

DESIGN DECISIONS

  • Detect the result, then reconcile the LP.
  • Limit stale recaps and protect against duplicate events.
  • Lock processing per game.

TRADEOFF

A result can arrive before its LP update. The recap has to allow for that.

WHY?

The useful part is the reaction around the result.

DESIGN DECISIONS

  • Keep betting to fictional points. No real money.
  • Treat remakes under two minutes as draws.
  • Void related markets and refund their stakes.

TRADEOFF

A remake has no winning side. The market is voided instead of paying out a win.

WHY?

I built this for one small, private Discord squad.

DESIGN DECISIONS

  • Keep JSON as the bot’s source of truth.
  • Split the growing monolith into modules so I could add features without breaking unrelated behaviour.

TRADEOFF

More users, guilds, history or concurrency would make a database migration worthwhile.

AFTER EVERY GAME

Solo Recap
One player’s rank, LP change and match performance, with team and full scoreboard views.
Duo Recap
The recap brings the squad’s rank, LP changes and combined performance into one message.
Player details / Teams
Player pages show KDA, CS, damage, gold and vision; team scoreboards show every champion’s kills, deaths, assists and damage.
Queue Beacon
While they play, see the squad’s champions, streams and watcher intent: backing WIN, backing LOSE or just watching.
EXAMPLE
SisyphusAPPToday at 9:41 PM
Pebble
✅ Victory · Leona (SUPPORT) · 32-25
Ranked Solo/Duo · 31m 06s
🟡 GOLD II — 48 LP +13 LP
Leona champion portrait
Core Line
2/5/21 KDA · 4.60 ratio
42 CS · 1.4/min
Level 14
Output
Damage 7,800 · 7% share
Gold 9,500 · 14% share
Kill participation 72%
Map Work
Vision score 76
Wards 32
Cleared 9
Control 7
Story
Clean win: Pebble gained +13 LP on Leona with 2/5/21.
Spotlight
• Pebble moved the boulder +13 LP.
• Pebble joined 72% of team kills.
• Pebble lit the map with 76 vision score.
Context
Team kills 32 · Enemy kills 25
Damage share 7% · Gold share 14%
Objectives
First Blood: 🔴 Red · First Tower: 🔵 Blue
Dragons: 🔵 2 vs 3 🔴 · Barons: 🔵 1 vs 0 🔴
Remember
SisyphusAPPToday at 9:41 PM
Juno & Kairo
✅ Victory · Duo Recap
Ranked Solo/Duo · 28m 40s · Team score 30–19
Ahri and Renekton champion portraits
Juno · Ahri · Mid
platinum PLATINUM IV · 62 LP · +22 LP
10/4/6 · 4.00 KDA
CS 207 · 7.2/min
Damage 26,000 · 29% of team
Gold 13,300 · Kill participation 53%
Vision score 24
​
​
Kairo · Renekton · Top
platinum PLATINUM IV · 38 LP · +20 LP
8/3/12 · 6.67 KDA
CS 215 · 7.5/min
Damage 23,000 · 26% of team
Gold 12,700 · Kill participation 67%
Vision score 19
Duo Contribution
18/7/18 combined K/D/A · 5.14 KDA
Damage 49,000 · 54% of team
Gold 26,000 · 46% of team
CS 422 · Combined vision score 43
Team Context
Team kills 30–19 · Dragons 3–1 · Barons 1–0
Remember
SisyphusAPPToday at 9:41 PM
Queue Beacon
Juno & Kairo is pushing the boulder on Ahri / Renekton.
Queue
Ranked Solo/Duo
Stream
No stream yet
Watching
0 watching
Watcher Intent
No watchers yet

HOW IT WORKS

  1. Game happens
  2. Sisyphus detects the result
  3. LP and recap
  4. Squad reacts, fictional bets settle
  5. History accumulates
  6. Dashboard explores it

Remakes under two minutes count as draws; other result codes become wins, losses or draws, with LP movement resolving draw codes.

THE POINTS MARKET

Markets
A linked player or an admin can open a market on that player’s next ranked game for the server to bet on.
Bet
Back WIN or LOSE with 10–500 points at the market’s odds.
Wallet
Start with 5,000 points; a winning bet pays the stake multiplied by its odds, rounded to whole points.
These are fake points, not money.
EXAMPLE

PUSHING TOGETHER

Squad Goals
Work towards weekly targets for wins, games, unique champions, positive LP days or a winning streak.
Friendly Rivalries
Compare two linked players’ LP, wins and games for the week.
Boulder Archive
Keep the squad’s records, from highest damage to fastest win.
EXAMPLE
SisyphusAPPToday at 9:41 PM
Boulder Archive
• Highest damage — 42680 by Kairo on Renekton
• Best KDA — 12.5 by Juno on Ahri
• Best vision — 86 by Pebble on Leona
• Best CS/min — 9.2 by Wren on Jhin
• Biggest LP gain — 28 by Rook on Vi
• Fastest win — 19m 44s by Juno on Ahri
• Longest win — 42m 51s by Kairo on Renekton
SisyphusAPPToday at 9:41 PM
Squad Goals
• Ranked wins 9/10 ■■■■■■■■■□
• Unique champions 5/8 ■■■■■■□□□□
SisyphusAPPToday at 9:41 PM
Friendly Rivalries
• @Juno +62 LP 5W/7G vs @Kairo +38 LP 4W/6G

THE BOULDER CHRONICLE

Squad LP trajectories
The squad’s LP record and recent match form, together.
Players
The Players view shows rank, LP history, and recent results for one tracked player.
EXAMPLE

WHERE IT STANDS

Used by
9 people in one Discord squad.
Games watched
1,507 ranked games, as of Nov 13, 2026.
Live since
May 19, 2026.
Operations
I administer the bot and dashboard, including process locking, health checks and backup validation.
AI boundary
Mistral can summarize Git commits into changelog text. It does not drive tracking, LP, betting or odds.
Limits
JSON still holds the bot’s state. More users, guilds, history or concurrency would make a database worthwhile.

Sisyphus was created under Riot Games' "Legal Jibber Jabber" policy using assets owned by Riot Games. Riot Games does not endorse or sponsor this project.