3 minute read

I play in multiple dynasty fantasy football leagues. And for as much time as I spend thinking about them, I was spending a surprising amount of that time just trying to get a basic read on where things stood.

Who’s winning? How old is my roster relative to the rest of the league? Did that trade I’ve been thinking about actually happen? Where did I even save that roster export?

None of that lives in one place. The Sleeper app is great for managing moves and checking scores, but it’s not built for the kind of standing-back, big-picture view that dynasty managers actually need. So I started building tools to fill the gap.

Tool 1: Sleeper Dynasty Roster Sync

The first problem I hit was practical: I wanted my roster data in a spreadsheet so I could sort, filter, and think about it without fighting a mobile UI.

Sleeper Dynasty Roster Sync is a Google Apps Script that pulls your Sleeper roster into Google Sheets automatically. Point it at your league, run it, and your full roster — player names, positions, ages, and ownership details — populates a clean sheet you can work with however you want.

It’s a small script, but it solved a real workflow problem. I was manually copying roster data before big decisions. Now I don’t.

Built with: Google Apps Script, Sleeper API

Tool 2: Sleeper League Health Dashboard

Once I had roster data flowing into Sheets, the next question became bigger: what does my whole league look like?

The Sleeper League Health Dashboard is a single-page web app that pulls live data from the Sleeper API and surfaces it in one view. Enter your Sleeper username and it loads all your leagues for the season. Pick one and you get:

  • Standings and playoff picture with win/loss record, points for/against, current streak, and clinch/bubble/elimination indicators
  • Roster age and dynasty health with per-team average age bars color-coded by contention window, plus a league-wide age distribution chart
  • Trade and waiver activity with a recent transaction feed, week-by-week volume chart, and a per-manager activity score
  • Manager spotlight — click any team to see their full roster, age breakdown, and recent transaction history

No login, no backend, no install. It runs entirely in the browser off the public Sleeper API.

Built with: Vanilla JavaScript, HTML/CSS, Chart.js, Sleeper API

What I’ve learned building these

Both tools came from the same starting point: a specific thing I wanted to know that I couldn’t easily find out. That constraint turned out to be a good forcing function. It kept the scope tight and made it easy to know when something was done.

On the technical side, the dashboard pushed me to think carefully about data architecture before touching the UI. The Sleeper API is well-documented but you’re pulling from several endpoints — league info, rosters, users, matchups, transactions, and a player database — and stitching them together client-side. Getting the fetch strategy right (parallel where possible, cached where expensive) made a real difference in how the app feels to use.

The roster sync taught me something different: sometimes the right tool is a ten-minute script, not a full application. Not everything needs a UI.

What’s next

Both tools are actively used and I’m planning to extend them. On the dashboard side, I want to add dynasty value integration (KeepTradeCut or similar) so the roster age view has market context, and shareable per-manager links so you can send someone a direct view of their team. On the roster sync side, I want to add automatic scheduling so it refreshes on its own without needing to be run manually.

If you play in a Sleeper dynasty league, both tools are open source and free to use. Links below.


Sleeper League Health DashboardGitHub

Sleeper Dynasty Roster Sync — Google Apps Script


I’ll be posting twice a month. If you’re into product management, software, or just figuring out your career as you go, stick around.

Updated: