Preparing for BlatBlat’s first off-season
Our Yahoo Fantasy API access stopped working during the off-season. Getting it back meant reapplying for access and completing a DocuSign form. We had built around an API we could use, then found ourselves having to explain the project and ask to use it again.
Yahoo access now comes with paperwork
That extra step was frustrating while we were trying to build. We also think it is necessary. AI slop is cheap to produce, and rapid prototyping makes it easy to put together something that calls an API before anyone has thought through how often it should call, what it should keep, or who will maintain it. We would rather spend time explaining our use of the data than assume access should be automatic.
That is our reading of the trade-off, not a claim about why Yahoo changed its process. For us, the reapplication and DocuSign form became part of getting the integration working again. If you are building against the same API, start with Yahoo’s developer access page and allow time for the application, not just the code.
The site still expected a game every night
Access was only one problem. BlatBlat was still asking for game data through the summer, then showing “No games for Thu, Aug 27”. Correct, and useless. Naming the date made it look as though we expected a game that night.
We now treat the off-season as a state the site can recognise. A decided NBA Finals triggers the change, so we do not have to guess which day the season will end. We slow the crawl, keep news and transactions moving, and label completed standings and leaders accordingly.
Check for the next schedule without hammering the source
The return date is harder. When the Finals finish, the next season’s schedule may not be published. We check weekly and show “schedule pending” until we have a date. A weekly check can be up to seven days behind publication; that is an acceptable delay for a season still months away.
We try the league’s static schedule first, then a second source if that fails. Once we have an opening date, a failed refresh cannot erase it. We keep the last known date until a successful check gives us something newer.
The off-season exposed two mistakes
Our season identifier rolled over in July, before the new season had any statistics. The leaders panel asked for numbers that did not exist and came back blank. It now uses the completed season while we wait for games to resume.
We also found transactions labelled as debuts. Joining a roster does not mean a player has taken the floor, and re-signing with the same club is not a debut. The correction checks transaction history and the schedule after parsing. It can remove a mistaken badge; missing history cannot create one.
A schedule you can read in two dimensions, then raise
Looking at the coming season led us to LayerChart, a Svelte chart library with an orthographic view. The schedule’s Charts tab starts flat, with one cell per team and week. Choose Graphic and those cells rise into columns: more games, more height. Hover for the count, or select a cell and open that week’s schedule.
Height helps us spot busy and light weeks across the season. The flat view and the original table are better for reading exact numbers, so both remain available. Fantasy counts use today’s rosters and the games that fit the starting lineup; they are not predictions of who will be healthy months from now.
You can try it on the 2026–27 schedule. The two undated NBA Cup games per team are still missing from week 7’s counts.