Skip to content
JB
AboutProjectsResumeGitHubLinkedIn
Back to projects

Project · 2026

Fantasy FAAB

Weekly waiver and start/sit reports for a Yahoo keeper fantasy football league. Projections come from public NFL usage data, each claim is priced as an add/drop swap with a conservative FAAB bid, and cron pushes the sheet to my phone.

  • Python
  • nflverse
  • OAuth2
  • cron
  • ntfy
View code

Problem

Yahoo’s free-agent page ranks players, but it doesn’t say who to drop to make room, how much of a fixed season budget a claim is worth, or which rivals can outbid you. Yahoo also removed write access from its Fantasy API in 2026, so any tool can only recommend. I wanted a claim sheet on my phone every Tuesday night and a lineup check every Sunday morning.

Approach

A standard-library Python pipeline, run by cron, whose only dependency is requests:

  • Collect weekly stats, snap counts and player IDs from nflverse’s public CSV releases, plus injury status and trending adds from Sleeper.
  • Project next week’s points from volume: attempts, carries and targets. Each player’s per-opportunity rates are pulled toward the league rate, hardest for touchdowns, because touchdowns are the noisiest term in a short sample.
  • Assign lineup slots exactly with the Hungarian algorithm. A greedy fill can leave an eligible player on the bench, so the tests check every answer against brute force.
  • Price each waiver claim as the add/drop swap it really is. The value is the gain in the best lineup after the swap, taken on the lower of this model’s and Yahoo’s projection, and the bid is sized by how much the claim beats the next-best alternative.
  • Deliver a plain-text report over ntfy, trimmed to fit one notification. Cron fires hourly and the tool checks Eastern time itself, so daylight saving can’t shift the schedule.

Highlights

  • Pricing swaps against a real roster found every candidate choosing to drop the only team defense, which projected zero. A swap that empties a required slot is now refused.
  • A cross-model review caught later weeks leaking into an earlier week’s league rates. A projection now calibrates only on games before its cutoff, so a past week can be scored honestly.
  • Yahoo’s developer console can show Fantasy read permission while every endpoint returns 403. The research doc records how that was traced to Yahoo enabling each app by hand.
  • Every dollar figure is computed deterministically, so a recommendation can be re-derived from its snapshot months later.

Jordan Bui

GitHubLinkedInEmail