Guides · 2026-07-08
Setting up your league on _.gm
Setup is a one-time, few-minute flow: connect your platform, link the salary spreadsheet, confirm a handful of player matches. This guide walks through each step — including how to format your sheet so the AI reads it perfectly the first time.
1 · Connect your platform
_.gm pulls rosters, team names, player identities, and draft picks straight from your platform — nothing about your league is typed in by hand.
Fantrax connects with your secret ID, which stays encrypted on our servers and never reaches a browser or any AI service. Sleeper connects with your league directly. Either way, you’ll see a list of your leagues — pick the one to set up and tell us which team is yours.
2 · Link the salary sheet
Paste the link to your commissioner’s Google Sheet. Two sharing setups work:
“Anyone with the link — Viewer” is the simplest: set it once in Google’s Share dialog and paste the URL.
Private sheets work too — share the sheet with our service-account email (shown during setup) as a Viewer. Access is read-only by design; _.gm never requests permission to write to your spreadsheet.
On link, AI reads the sheet once to learn its layout — where contracts, years, adjustments, and totals live. The reading is accepted only when it reproduces the sheet’s own cap totals, so a misread can’t slip through silently. After that, every sync is deterministic: no AI, just your numbers.
3 · Formatting the sheet so it reads perfectly
There is no required template — the AI learns your league’s own layout. These conventions are what make that reading (and every sync after it) rock-solid:
One tab per team, same layout on every tab. Copy a template tab when adding teams; a tab with its own creative structure is the most common source of link problems.
Real year headers. Contract columns should be labeled with actual years (2026, 2027, …) in the header row. The years are read from those cells — leagues differ in how far out they run, and that’s fine.
A totals block per tab, computed by formulas. Total expenses / cap / available per year is your sheet’s own bookkeeping — and it’s what _.gm reconciles against. Keep those cells as SUM formulas, not typed numbers, and re-check the ranges after inserting rows: a SUM that didn’t stretch is the classic silent error.
Contract end tags in the year after the last paid year. Marking UFA / RFA / TEAM in the first unpaid column tells everyone — and _.gm — exactly when a deal expires and what happens next.
Adjustments as labeled rows. Dead cap, retained salary, penalties: one row each, named for where it came from (the player, the trade), with a sign. Signed rows keep the tab’s math a plain sum.
Off-cap sections clearly separated. Practice squad, taxi, D-League rosters — give them their own labeled section below the main roster and leave them out of the totals.
Player names close to their real names. Nicknames still work — they just land in the manual-match step for a one-time confirmation. Platform-style spellings match automatically.
Sheet built differently? If the link step can’t map your layout, it says so and offers a one-click way to share the sheet with us — nothing is stored unless you choose to share. Send it over and we’ll work on supporting your format and get back to you; you can also reach us directly at contact@underscoregm.com.
4 · Matching the last few players
Every name in the sheet is matched to a real platform player. In live onboarding runs, over 99% match automatically; the setup flow then shows the stragglers — usually nicknames, misspellings, or players who changed teams — each with suggested candidates.
Two things worth knowing about your choices here. Manual matches are permanent: once you link a sheet name to a player, no automatic pass will ever overwrite your decision. And rows that aren’t platform players at all — a “TOTALS” line, a retired player kept for history — can be dismissed, which tells future syncs to stop asking. If a dismissed or unmatched name later shows up on a roster with an exact name-and-position match, it heals itself.
After setup
That’s it — from here the league runs itself. Sheet edits flow in automatically (within seconds for connected sheets, on a regular sweep otherwise), rosters re-sync from the platform, and your leaguemates join with an invite link — no accounts needed. If the commissioner ever restructures the sheet, _.gm notices the drift and re-learns the layout the same way it did on day one.