Pipeline Control

Manually trigger data pipeline tasks. All jobs run asynchronously via Celery.

Re-seed Prop Lines

Fetches the latest odds from The Odds API and seeds any missing games + prop lines into the database. Runs automatically every 30 minutes — use this to trigger immediately.

Leave blank for today

Generate game context

Builds per-game win probability, projected pace/scores, and blowout risk into fact_game_context_daily. The Today’s Slate context strip (win-prob bar, blowout chip) reads this table — run after team profiles exist for the date, or if you rebuilt picks but the strip is missing. Typically faster than a full projection rebuild.

Leave blank for today

Rebuild Projections

Re-scores all 7 prop markets (PTS · REB · AST · 3PM · PRA · BLK · STL) for the selected date using the active ML model. Upserts into fact_picks_daily — safe to run after a fresh ingest or whenever picks look stale. Takes ~2–4 minutes while markets run sequentially. Does not refresh game context; use Generate game context for the Slate win-probability strip.

Leave blank for today

Scoring Gate Configuration

Read-only reference — values are set in run_model.py. These gates determine which picks reach the slate and with what confidence band.

Strength Bands norm_edge = |edge| ÷ σ

Normalised edge relative to market RMSE (σ). Consistent thresholds across all markets.

Strong Lean ≥ 0.70 × σ High-confidence edge — model and form agree strongly
Lean ≥ 0.44 × σ Moderate edge — solid signal across features
Marginal ≥ 0.18 × σ Weak edge — shown for context, not actionable alone
Pass < 0.18 × σ No meaningful edge — suppressed from slate display

Suppression Gates

Hard stops applied before band assignment. Each gate either drops the pick entirely or limits its grade.

GateTriggerEffect
Injury — Outinjury_risk = 2 (Out status)Pick suppressed entirely
Injury — Suspendedinjury_risk = 2 (Suspended status)Pick suppressed entirely
Thin samplehist_game_count < floor (see below)Band capped at Marginal
Absurd projectionProjection < 32 % of rolling L5 for starsPick suppressed entirely
Z-cap (|z| > 3.5)|edge| > 3.5 × σ (outlier zone)Graded as Pass — not shown
No primary bookNo line from Bovada / DraftKings / FanDuelRisk warning shown, pick kept
Single bookExactly 1 book has posted a lineContext note shown, pick kept

Min Sample Floors hist_game_count

Players below this threshold have their band capped at Marginal — never Strong Lean or Lean.

MarketsMin Games Required
PTS · REB · AST · PRA8
3PM · BLK · STL12

Z-cap: picks where |z| > 3.5 are graded Pass regardless of edge size.

Feature Flag Rollout

Phased release of context layers. Each flag enriches the scoring signal when enabled.

ON
ENABLE_AVAILABILITY_FACTOR Day 1 Injury risk (questionable/out) weights player projections
OFF
ENABLE_DEFENSE_GRADE_CONTEXT Day 2 Perimeter & rim defensive grades from team profiles
OFF
ENABLE_STYLE_SIGNATURE_CONTEXT Day 3 Pace / style matchup context from team style signatures