"> ">
Commissioner Reference

The Runbook

Everything you need to run a smooth Fantasy Refresh season. Weekly workflow, emergency fixes, and quick reference all in one place.

Tue
Scores lock 9am ET
Auto
Review standings
Manual
Wed
Generate salaries
Manual
Open draft
Manual
Thu
TNF locks at kickoff
Auto
Fri
Intl games may kick
Auto
Sat
Intl games may kick
Auto
Sun
Games + live scoring
Auto
SNF locks 8:20pm
Auto
Mon
MNF locks ~8:15pm
Auto
📅 Weekly Workflow
Tuesday
1
Scores Lock Automatically ⚡ Auto
GitHub Actions locks all final scores at 9am ET. Nothing to do — just verify standings look correct in the app.
💡 If a score looks wrong, you have until Tuesday 9am to manually correct it in the commissioner panel before it locks.
2
Review Standings 👤 Manual
Open the app and verify weekly scores look right. Check for any players who scored 0 but submitted a lineup — this usually means a Tank01 stat issue. If found, use manual score entry in the commissioner panel.
Wednesday
3
Refresh Player Pool 👤 Manual
In the commissioner panel, click ⚡ Refresh under Player Pool. This syncs the latest roster moves from Sleeper — trades, signings, IR designations. Takes about 30 seconds.
Commissioner Panel → 🏈 Player Pool → ⚡ Refresh
4
Generate Salaries 👤 Manual
Select the upcoming week number, then click ⚡ Generate Salaries. This pulls Tank01 projections and calculates player salaries. Review the top and bottom salaries to make sure nothing looks wildly off.
Commissioner Panel → 💰 Weekly Salaries → Select week → ⚡ Generate
⚠️ Don't unlock the week yet — wait until Thursday so TNF players aren't available for Sunday drafters to exploit.
Thursday
5
Unlock the Week 👤 Manual
Around noon ET Thursday, unlock the week so players can start drafting. Players will see the salaries and games bar immediately.
Commissioner Panel → 💰 Weekly Salaries → Week N → 🔓 Unlock
6
TNF Players Lock at Kickoff ⚡ Auto
GitHub Actions monitors game statuses every 5 minutes. When the Thursday game goes live, both TNF teams lock automatically. Players who haven't drafted those players yet cannot add them.
Sunday – Monday
7
Games Play, Scores Update Live ⚡ Auto
Everything is automatic. GitHub Actions polls Tank01 box scores every 5 minutes and writes fantasy scores to Firebase. Standings update in real time. Player locks fire at individual game kickoffs throughout the day.
8
Monitor for Issues 👤 Optional
Check the app around halftime of SNF to make sure scores are updating. If standings are frozen, check GitHub Actions → auto-scoring for errors. Most common cause: Tank01 API rate limit — check your usage at rapidapi.com.
🏕️ Preseason Setup July–August
1
Upgrade Tank01 to Pro
The free Basic plan (1,000 calls/month) is enough for testing but won't cover a full season. Upgrade to Pro ($10/month) by September 1 at rapidapi.com.
rapidapi.com → Tank01 NFL API → Subscribe → Pro Plan
2
Refresh Player Pool
Run a fresh player pool sync in late July/early August after the draft. This captures rookie additions, free agent signings, and depth chart changes.
Commissioner Panel → 🏈 Player Pool → ⚡ Refresh
3
Run Preseason Test Weeks
Use the Preseason section (PS'26 in the season switcher) to run 3 test weeks with real NFL preseason games. This gets players familiar with the draft interface before the real season starts.
Season switcher → PS'26 → Commissioner Panel → Generate Salaries
4
Wipe Preseason Data Before Week 1
After the preseason, wipe all test data so the real season starts clean. This removes preseason lineups and scores — it does NOT affect player pool or real season data.
Preseason → Commissioner Panel → 🗑 Wipe All
🚨 Do this BEFORE generating Week 1 salaries. Can't be undone.
🏈 Week 1 Setup First Week of September
1
Confirm All Players Are Registered
Check the Registered Players section in the commissioner panel. Every player should have a team name set. Anyone missing a team name hasn't finished onboarding — send them the link to set it.
Commissioner Panel → 👥 Registered Players
2
Refresh Player Pool (Final Pre-Season Sync)
Run one final player pool refresh the Tuesday before Week 1 kicks off to capture all final roster cuts and injuries from the preseason finale.
3
Generate Week 1 Salaries
Tank01 will have real projections by Week 1. Generate salaries Wednesday morning — these will use actual projected fantasy points rather than flat values. Review the salary distribution before unlocking.
💡 Week 1 salary tip: Check that QB salaries range from ~$7,500–$11,300 and DEF salaries from ~$3,700–$6,000. If everything is flat, Tank01 projections may not be loaded yet — try again Thursday morning.
4
Send "Draft Is Open" Message to Players
Once salaries are generated and the week is unlocked Thursday, notify your players. Include: the draft link, the salary cap reminder ($60,000), and the deadline (before first game kickoff).
💰 Salary Generation Guide
How Salaries Are Calculated
Salaries = Tank01 projected fantasy points × $1,800 multiplier, rounded to nearest $100, clamped between $3,700 (min) and $11,300 (max). If Tank01 returns no projections (offseason), flat salaries are used: QB $8,500 · RB $6,500 · WR $6,000 · TE $5,500 · DEF $5,000.
What to Check After Generating
1. Count — should be 800–1,000 players. Less than 500 means projections didn't load.
2. Top QB salary — should be $10,000–$11,300 for top starters.
3. Injury flags — OUT/IR players are excluded automatically. Q players are included but flagged.
4. DEF salaries — should vary, not all flat. Top defenses ~$5,500–$7,000.
Locking Salaries
Lock the salary week once you're happy with it. This prevents accidental regeneration. Players can still draft after it's locked — locking just freezes the salary values.
⚠️ Don't regenerate after players have submitted lineups — their $60k cap math is based on the salaries at submission time.
📊 Scoring Reference
ActionPointsNotes
Passing yard+0.0425 yds = 1 pt
Passing TD+4
Interception (thrown)-1
300+ passing yards bonus+3One-time bonus
Rush/Rec yard+0.110 yds = 1 pt
Rush/Rec TD+6
Reception+1PPR format
100+ rush/rec yards bonus+3One-time bonus
Fumble lost-1
2-point conversion+2
Defense / Special Teams
Sack+1
Interception (defensive)+2
Fumble recovery+2
Defensive TD+6
Safety+2
Blocked kick+2
Points allowed: 0+10
Points allowed: 1–6+7
Points allowed: 7–13+4
Points allowed: 14–20+1
Points allowed: 21–270
Points allowed: 28–34-1
Points allowed: 35+-4
🚨 Emergency Fixes
Scores aren't updating during games
1. Go to GitHub → Actions → auto-scoring → check the latest run for errors.
2. Most common cause: Tank01 API rate limit. Check your monthly usage at rapidapi.com — if near 1,000 on Basic plan, upgrade to Pro immediately.
3. Manual trigger: Actions → auto-scoring → Run workflow → enter the week number.
4. If Tank01 is down (rare): scores will resume automatically when it recovers. Final scores can be manually entered in the commissioner panel after the games.
A player's score looks wrong
Before Tuesday 9am: Go to Commissioner Panel → Import Week Scores → use manual score entry to override the individual team's score.
After Tuesday 9am (locked): Scores are locked by GitHub Actions. To override, go to Commissioner Panel → the week entry → unlock the score manually, edit, re-lock.
Root cause check: Compare Tank01's box score for the player's game against the expected fantasy total. Common issues: DEF points-allowed calculation or 100-yard bonuses not triggering.
A player wasn't locked when their game started
Check: GitHub → Actions → kickoff-locks → latest run. If it errored, trigger it manually.
Manual lock: The lock data lives in Firebase at /leagues/fr_refresh26/locks/2026/week{N}/{TEAM}. You can add the team abbreviation manually in the Firebase console.
Policy: If a player slipped in after kickoff due to a lock failure, commissioner discretion. Generally: if the game had started and they picked someone in the active game, the lineup should be voided for that slot and scored 0 for that player.
A player submitted no lineup
Policy: No lineup = 0 points for the week. This is by design — the deadline is first kickoff.
Exception rule (optional): Some commissioners allow one "emergency" late submission per season for documented technical issues. If you allow this, set the policy before the season and document it.
What not to do: Don't submit a lineup on a player's behalf — it creates disputes about who chose what.
Salary generation returned flat/zero salaries
Cause: Tank01 projections not yet available for the week (common early in the week or during bye weeks).
Fix: Try regenerating Thursday morning — projections are usually updated by then. If still flat on Thursday, the flat salary fallback (QB $8,500, etc.) is fair to use and announce to players.
Tank01 check: Test the projections endpoint directly: fantasy-refresh-news.mtriedel.workers.dev/projections?week=N&season=2026
GitHub Actions isn't running
Check 1: GitHub → Settings → Actions → General → make sure Actions are enabled for the repo.
Check 2: GitHub free plan gives 2,000 Action minutes/month. At 5-min intervals, the season uses ~1,200 minutes. Should be fine on free plan.
Check 3: Verify both secrets are still set: FIREBASE_DB_URL and TANK01_KEY. Go to Settings → Secrets → Actions.
Manual trigger: Any workflow can be manually triggered from the Actions tab → Run workflow button.
📋 Quick Reference
ItemValue / Location
Salary Cap$60,000 per week
Max player salary$11,300
Min player salary$3,700
RosterQB · RB · RB · WR · WR · WR · TE · FLEX · DEF
FLEX eligibleWR / RB / TE
Score lock dayTuesday 9am ET (auto)
Join code (2026)REFRESH26
League IDfr_refresh26
Firebase DBfantasy-refresh-default-rtdb.firebaseio.com
Cloudflare Workerfantasy-refresh-news.mtriedel.workers.dev
Tank01 planBasic (free) → upgrade to Pro Sept 1
GitHub repogithub.com/mtriedel-fr/fantasy-refresh
Live sitefantasyrefresh.com
Season Checklist
Pre-Season
Upgrade Tank01 to Pro plan ($10/month) by September 1
All players signed up and have team names set
Run preseason test weeks (HOF + PS Weeks 1-3)
Verify auto-scoring works with live preseason data
Verify kickoff locks fire correctly
Wipe preseason data before Week 1
Final player pool refresh after final preseason cuts
Week 1
Generate Week 1 salaries (Wednesday morning)
Verify salary distribution looks reasonable (not all flat)
Unlock Week 1 (Thursday noon ET)
Notify players draft is open
Monitor scores Sunday — verify live updates working
Every Week
Tuesday: Review locked scores for anomalies
Wednesday: Refresh player pool + generate salaries
Thursday: Unlock the week