PROTOCOL · HOW IT WORKS

METHODOLOGY

Every day at 3:00 PM US/Eastern, the system pulls live NBA data from ESPN, computes each available player’s real last-10-game averages in points, rebounds, and assists, then ranks them by stability and locks a three-leg parlay whose lines are intentionally shaded under each player’s recent floor.

01

Daily auto-fire at 3:00 PM ET

A scheduled Heartbeat cron fires the generator at exactly 15:00 America/New_York. The fresh slate is published to the dashboard immediately.

02

Pull tonight's slate from ESPN

The generator hits ESPN's public NBA scoreboard for the target date, then fetches the active roster of every team playing that night.

03

Real last-10 game logs

For every rostered player, the generator pulls their full season game log from ESPN, drops DNPs (0 minutes), and computes the true average / floor / ceiling for points, rebounds, and assists across their 10 most recent played games.

04

Rank by stability, then shade the line

In each of the three categories, the player with the highest stability score (avg ÷ stdev) is chosen — the most consistent, lowest-variance performer. Then the conservative line-shading rule below is applied to set the OVER number well below his last-10 floor.

// CONSERVATIVE LINE-SHADING RULE
avg     = mean( last_10_games )
min     = min(  last_10_games )

buffer  = max( round(avg * 0.25), 2 (points) or 1 (rebounds/assists) )

raw_line   = avg - buffer
safe_cap   = min - 0.5            // never above any of the L10 games
line       = min( raw_line, safe_cap )

// snap to FanDuel-style .5 line, floor at 0.5
suggested  = floor(line) + 0.5
side       = OVER

Worked example from the user’s spec: a player who averages 20 points across his last 10 gets a buffer of 5 (25% of 20), producing a raw line of 15. Snapped to the .5 format that FanDuel uses, the suggested bet becomes OVER 14.5 PTS — a line below every one of his last 10 games.

// DATA SOURCES (ACTUAL)
COMPONENTSOURCE
Tonight’s NBA scheduleGET site.api.espn.com/.../nba/scoreboard
Team rosters (both sides of each game)GET site.api.espn.com/.../nba/teams/{teamId}/roster
Per-player full game log (PTS / REB / AST per game)GET site.web.api.espn.com/.../athletes/{id}/gamelog
Daily 3 PM ET triggerManus Heartbeat scheduled task
Slate persistence (date + picks + raw L10)Project MySQL/TiDB database (Drizzle ORM)
One-line parlay summaryLLM (Manus built-in Gemini) — cosmetic only, all numbers come from ESPN
// FANDUEL · IMPORTANT NOTE
FanDuel does not publish a public sportsbook API. Their live odds are only available through paid third-party aggregators (e.g. The Odds API, OddsJam) or scraping their site. This dashboard therefore does not pull live FanDuel lines. What it does instead is generate every pick in the FanDuel convention — OVER X.5 PTS / REB / AST shaded below the player’s real last-10-game floor, so you can copy the recommendation directly into the FanDuel app and place it against whatever line FanDuel happens to be offering tonight. If FanDuel’s posted line is at or below our suggested line, the bet is consistent with the conservative methodology; if it’s higher, treat it with extra caution.

Disclaimer. ESPN’s game-log feed is a near-real-time feed of completed games, not a live injury report. Always cross-check tonight’s active list and lineup news on FanDuel or the team’s official sources before placing any bet. All content is for entertainment only. 21+. If you or someone you know has a gambling problem, call 1-800-GAMBLER.