Run your first build
After GameScript is enabled, pick a slate and say how you want to play it. The guided prompt walks the whole path, pausing for Checkout if you still need it and for each decision before it builds or creates an export.
1. Active slateChoose one of the automatically refreshed NFL Classic or Showdown slates; keep DKSalaries.csv available only as a fallback.
2. ProjectionsGameScript projects every slate itself, so nothing is required here. Bring a CSV with player names and projected fantasy points if you would rather use your own; ownership is optional.
3. Export sourceNothing for new entries. Bring the current Upload Lineups template if you want every player checked against the DraftKings pool, or DKEntries.csv from Edit Entries for entries you already hold.
Open the guided setup prompt
Guide my first GameScript build:
1. If I have no active trial or subscription, start my trial with dfs_start_trial, send me the secure Checkout link, and wait while I finish in the browser. If I already have one, or you cannot tell, go straight to step 2: a build tool answers entitlement_required when I still need the trial, and that is the time to call dfs_start_trial. If a tool says payment needs attention, use dfs_manage_subscription instead.
2. Find the slate. Call dfs_list_slates with query set to my own words ("sunday main", "the bills showdown") and confirm the match with me. You can also skip this call and pass slate with my phrasing straight to dfs_optimize, which resolves it the same way and returns resolvedSlate with the id. If nothing matches, list without a query; if no NFL Classic or Showdown slate is active at all, ask for my current DraftKings DKSalaries.csv and import it with dfs_import_slate_csv.
3. Before choosing anything, read the slate briefing resource slate://{id}/briefing with the slate's id (resolve it with dfs_list_slates if you only have my words): games by total, top players per team, injuries. Give me a short read of it.
4. Ask which play style fits my contest and send it as dfs_optimize's style: cash (double-ups and 50/50s: the highest median lineup, chalk welcome); single-entry-gpp (single-entry and three-max tournaments: one sharp, correlated lineup); mass-multi-gpp (20 to 150 entries in large-field tournaments: many distinct, leveraged lineups). It sets the objective, ownership penalty, jitter, uniqueness and a stack preset for that call only; anything I name myself outranks it.
5. Projections come from the GameScript house model, so do not ask me for a file. Only if I say I have my own, import it with dfs_set_projections, show the match report, and stop for important unmatched, duplicate, or fuzzy rows.
6. Ask for and apply my strategy: locks, fades, excludes, stacks, bring-back, and uniqueness. A Classic build runs no stack rules unless I ask for one or pick a style; set the stack I describe with dfs_set_stack_rules. If I describe an approach rather than players ('contrarian', 'safe cash'), read the playbook with dfs_list_strategies first.
7. Ask which export path I want and how many entries it is for:
- New entries, no file: use mode=standalone. It needs nothing from me, but it cannot check the players against the DraftKings pool for my contest, so tell me that before I upload. Plan 3 lineups unless I name another count.
- New entries, pool-checked: if I would rather download the DraftKings Upload Lineups template for this slate's start time, use mode=template. It fills that file and checks every player against the pool embedded in it. Plan 3 lineups unless I name another count.
- Existing entries: ask for DKEntries.csv from DraftKings Lineups > Edit Entries for this slate, import it once with dfs_import_entries_csv, then read and state its exact entry-row count before optimization. Export later with mode=fill_entries and entry_set=true, so the file is never pasted a second time.
8. Size the build to the entry count. One dfs_optimize call builds at most 20 lineups.
- For 1-20 entries: build that exact count in one run and leave repeat_lineups=false.
- For 21-400 entries: build labelled runs of up to 20 lineups each. Pass every earlier run in exposure_run_ids (up to 19) so my exposure caps hold across the whole set, and the latest up to 3 run ids in avoid_run_ids so each new run differs from them. Export all of them together with run_ids (up to 20). Identical rosters across runs are written once, so if the merged count comes up short of my entries, build one more run and export again.
- For 401-500 entries, or when I want fewer distinct lineups than entries: explain that one upload carries at most 400 distinct lineups, and get my explicit approval before setting repeat_lineups=true to cycle them across the remaining entries.
- Never repeat lineups silently, and never promise more distinct lineups than these limits allow.
9. Build the confirmed lineup count with dfs_optimize. Show each roster with salary, projection, ownership and stacks, plus the strategy verdict and any non-default constraints; offer detail full on one lineup if I ask why.
10. Export with dfs_export in the mode from step 7. Send me the signed 24-hour link and remind me to review and upload it myself.