Your projections. Your lineup. One private workspace.
These tools retain your previous saved workspace and history. The session above stays private until you explicitly save it. Load that same workspace here to use the existing solver.
Projection. Salary. Popularity. Put your lineup decisions in perspective. Every dot is a lineup you can inspect.
Synthetic players. Real calculations. No entries.
Up is more projected points; left is less salary or lower summed ownership. The dashed segments are a visual guide, not additional feasible lineups. The boundary joins candidates for which no displayed lineup has both a higher projection and a lower horizontal value. It is only a boundary within this sample, not proof of an optimal lineup. Summed ownership is the sum of player ownership percentages, measured in percentage points (pp), and can exceed 100. It is a construction descriptor, not a probability, duplication estimate or measure of profit. Captain scoring uses the supplied captain projection, or 1.5× FLEX projection when absent; ownership is summed without a captain multiplier. Roster bars start at zero and share one scale within the selected lineup. Projections do not describe the full range of possible outcomes.
Preparing invented players.
One guide for you and your AI: load your data, build for each contest, and check the final entries.
Give your AI your workspace name and contest screenshots with this starter.
Updated October 12, 2026. Operating instructions for DraftKings NFL Classic and Showdown, for people and personal AIs. This guide describes the implemented workflow; simulation outputs remain model estimates. Read the live dd_dfs_schema for current fields and limits. The older DFS Labs Bible is a research archive, not proof of calibration or a list of shipped features.
Upload your DFS CSV in the main builder. Known DraftKings Classic and Showdown exports load automatically; answer only any unresolved format or ownership-unit question. The success receipt retains the filename, player count and source-time status. An unknown slate date or source time does not prevent exploratory building. Tap Add, drag a player, or use Move then Place with the keyboard. Charts and checks are below the roster.
The upload stays in isolated session memory. Under Saved work & tools, sign in on the main page, name a workspace and choose Save privately. Your existing personal AI connection can then read that same pool and draft. Load saved / AI changes brings its edits back explicitly. A save does not submit an entry. Reloading an unsaved session discards it. Previous workspaces, solver and reference tools remain in a separate collapsed historical area; no new upload is copied there automatically.
For manual drafts, call dd_dfs_schema, then dd_dfs_get. Edit the returned draft object and call dd_dfs_draft with the exact returned expected_revision. A revision of zero creates a new named workspace only; never replace an existing workspace by guessing its revision. The draft contains one pool, nullable roster indexes in official slot order, preset (unset/cash/small/large) and conditional-model settings. The account comes from the authenticated caller, never a supplied UID. Partial and over-budget drafts can be saved for exploration; uniqueness and position eligibility are enforced. Replacing player inputs invalidates computed candidates; changing only the manual roster preserves compatible saved candidates. Old pool-replacement APIs invalidate the manual draft metadata rather than maintaining a second pool.
Cash / Small field / Large field are illustrative presets, not verified lobby settings or strategy recommendations. Fine-tune exposes assumed field size, paid fraction, ownership source, score variance, correlation, salary floor and seed. Small-field, large-field and cash ownership stay separate. Missing ownership is unknown; a zero is known. Showdown general ownership has no contest-type label, so choose it explicitly when applicable. Conditional cash/top-1% rates require a complete legal roster and an acknowledged score/opponent model. They are uncalibrated estimates conditional on one generated full field; intervals cover score-world Monte Carlo error only. EV/ROI remain unavailable without a fee and full payout ladder. The conditional draft model runs locally in the browser. dd_dfs_simulate remains the existing workspace engine and must not be described as running this draft model. An AI may edit the draft settings, but must not claim the browser simulation ran without its receipt.
Each person uses their own account and authorized projection files. A public guide gives an AI instructions, not access to someone else's private workspace. Never paste the personal connector URL into a chat, report or public page. A connected tool is not the same as a link the AI can only read.
Read https://datadawgs216.com/docs/dfs-playbook.md, discover my Data Dawgs tools, and call dd_dfs_schema. Use my saved DFS workspace and contest screenshots to build and compare lineups for each actual contest. Check the data before solving, use the actual field and payout settings, and give me a short menu of defensible game-script choices. Show the cost of weaker choices. I choose how many entries to play. Audit my combined exposure, refresh availability before lock, and provide a contest-to-lineup table. Ask only for missing inputs. Rank evidence by section 0 of the playbook and label anything else as a hypothesis. Do not claim a simulation ran unless it did, invent unavailable EV, or submit paid entries.
Users can drive the workflow with one word plus their files. Ask for anything a command needs that is missing.
| Word | What the AI does |
|---|---|
screen | Screens the listed contests (section 1): rake, payout shape, entry cap against the user's entry count, total buy-in against bankroll |
classic or showdown | Runs sections 1–7 for that format. Showdown starts with a menu of captains and game scripts for the user to choose from |
sim | Simulates the actual contests and ranks candidates without overclaiming (section 6) |
swap | Late swap from the live state: unlocked slots only, with the remaining field in mind; says whether it protects position or chases |
results | Builds the post-slate audit (section 8) |
review | Summarizes the ledger by format, contest type and construction, with sample sizes |
Rank evidence before acting on it. First, the user's own logged results (section 8). Second, the user's private research notes, whose confidence labels are binding. Third, published studies with a stated method and sample. Everything else, including podcasts, videos, social posts and your general knowledge, is a hypothesis: label it as one when it shapes a recommendation. Logged results outrank published research only once their interval excludes the published figure; until then, show the two side by side.
| Label | Meaning | How to use it |
|---|---|---|
| verified | Checked against its source; not contradicted by independent evidence | Default rule |
| challenged | Direction holds; size or currency disputed | Use the direction, never the exact number |
| vendor-only | One vendor's data, not reproduced elsewhere | Working rule or tiebreaker; retest in season |
| measured | A Data Dawgs estimate from public data, such as dd_dfs_correlations | League-average structure, not a forecast for a specific game |
| social | A number from a social post | Log it and test it; never change a rule because of one |
| hypothesis | Anything outside the ranks above | Test it before relying on it |
| own-data | The user's logged results | Top rank once the sample supports it; always state n |
Private notes may use their own names for these labels; map each to the closest row.
Record the sport, date, timezone, site, format, slate or draft-group ID and lock time. Do not combine games, formats or vendor files just because the names look similar. For every contest, capture its ID/name, buy-in, field capacity and current entrants, maximum entries per person, the user's entry count, prize pool and full payout table when available. Record where and when these came from.
Ask for missing screenshots or exports once; prepare candidates while waiting. Never infer field size from a contest name, buy-in or prize pool alone. Distinguish projected final fill from current entrants. A default profile is a scenario, not the user's actual lobby. The user sets budget and entry count; a 150-entry cap is not a recommendation to buy 150 entries.
Screen each contest before building for it. Rake is 1 − prize pool ÷ (entries × entry fee). Lower rake, flatter payouts, smaller fields and an entry cap near the user's own entry count are friendlier. Contests full of max-entry players are a structural disadvantage for someone entering a few lineups. If the user asks for a bankroll rule, the house default is total weekly buy-ins at or under 1/40 of bankroll, with more cushion for larger, more top-heavy fields.
| Job | In the app | Personal AI tools and checks |
|---|---|---|
| Find the correct data | Private workspace: Find saved / Load saved | dd_dfs_schema, dd_dfs_list, dd_dfs_get; verify account, format, source, revision and pool |
| Import and save | Upload or replace your CSV; Save privately | dd_dfs_create if needed; dd_dfs_upload with commit=false, inspect diagnostics, then commit=true; keep returned revision |
| Set constraints | Slate and Solver sheets | dd_dfs_players, dd_dfs_settings; preserve user locks/exclusions and use live schema units |
| Generate candidates | Solver and Lineup lab | dd_dfs_solve, dd_dfs_explore; record objective, filters, timeout/cap and best projection found |
| Evaluate the actual contest | Simulator | dd_dfs_settings for simulation, then dd_dfs_simulate; inspect full results using dd_dfs_get with include_results=true |
| Explore broad contest types | Contest comparisons | dd_dfs_compare supports cash/3x/5x/GPP profiles; these do not replace an arbitrary lobby's full payout table |
| Choose the entries | Exposure and selected lineups | dd_dfs_exposure, dd_dfs_select; selection retains chosen indexes and invalidates the old simulation |
| Finish | Export; Save privately / Load saved | Revalidate selected rosters and use dd_dfs_export; exported rosters do not submit or automatically assign entries to contest IDs |
Every mutation that requires expected_revision must use the latest returned revision. On conflict, re-read and reconcile. Input/settings changes can clear candidates or results; another solve/explore replaces the stored pool. Preserve chosen roster contents and a run receipt before changing settings or selecting. Lineup indexes can change; never carry an index into a different pool. Use separate named workspaces when retaining alternatives, and paginate get when needed. Browser and remote changes are explicit save/load, not automatic synchronization. Browser loading refuses unsupported MCP-only player groups rather than silently dropping them.
If tools are not callable, say so and use the browser workflow when available. Public docs cannot grant private access. The older dd_solve_dfs_lineup is transient; it does not replace the persistent workspace suite. Do not claim remote work was done from a local calculation.
| Contest situation | Candidate construction | Evaluation and selection |
|---|---|---|
| Cash / double-up / head-to-head | Strong projection and reliable opportunity; benchmark unrestricted mean projection | Cash probability against the appropriate field when supported. Do not sacrifice points simply to lower ownership |
| Small-field single-entry GPP | Strong projection with credible ceiling; compare modest differentiation and alternate stacks | Actual payout-aware evaluation when credible; disclose the projection cost of uniqueness. Small field does not imply weak opponents |
| Large or very top-heavy GPP | Generate several captain/stack families, popular-core alternatives and plausible ceiling outcomes | Modelled tail performance, correlation and prize splitting. If first-place EV is unresolved, report supported proxies and sensitivity, not invented precision |
| Several entries / 3-max / 20-max / 150-max | Start with the best individual candidates, then inspect shared players, stacks and failure modes | Respect the user's actual entry count. Exposure caps and min-uniques are constraints, not proof of an optimal portfolio; measure their cost |
| Same lineup considered for several lobbies | Reuse it as a candidate rather than automatically forcing a new roster | Compare against each lobby's field and payout. Repetition may be justified; disclose total dollar exposure and correlated losses |
Single-entry describes entry limits, not field size. Expensive contests are not automatically small or soft. Cash and tournaments do not share one universal sorting objective. Top-10 and top-1% are different thresholds and neither automatically maximizes payout EV. Use explicit actual payout rows when available; if approximating, label the assumed curve. Rake and payout concentration inform contest choice, but do not by themselves prove a profitable entry.
First compute a raw-projection benchmark with discretionary construction restrictions removed; preserve legality and user requirements and state those conditions. Then generate baseline, alternative game-script and popular-core-fade candidates. Classic QB stacks and Showdown receiver-CPT/QB pairings are useful hypotheses, not universal locks. Evaluate rushing-QB and salary exceptions. Leaving salary unused, two same-team tight ends, kickers or D/ST should be judged on the slate and contest rather than prohibited by folklore.
Do not force every suggested three-player stack if its best completion loses too much projection. A punt's playing time does not ensure targets. Vary cheap-player roles and ownership, and compare alternative field strength/salary assumptions. Use common score worlds for candidate comparisons where supported, then report held-out results. Repeatedly optimizing against the holdout turns it into training; fresh evaluation is preferable after final selection.
Give the user a small menu of the strongest defensible scripts. Quantify weaker options. Different captain names with the same five FLEX players do not provide much diversification. Portfolio diversification can reduce shared downside, but it does not automatically increase expected profit; increasing the chance of one high finish is a different objective.
Return one row per purchased or intended entry: contest ID/name, entry fee, roster and captain where applicable, salary used/left, projected points, game script, reason for this contest, main failure condition and metrics actually computed. Include the source time, workspace/revision, simulation settings and seed. If candidate ranking uses proxies, label them. Keep private projections and account credentials out of public reports.
Before export, recheck official inactives, slate, eligibility, salary cap, unique players, team/game constraints, slot IDs, existing locked players, entry count and current exposures. Never re-optimize a locked entry as if every slot were open. Re-run affected comparisons after fresh news. Preserve the selected rosters and their evaluation receipt before selection invalidates prior results. The user reviews and submits entries.
node tools/dfs-ledger.mjs. Reference: https://datadawgs216.com/docs/dfs-results-ledger.mdThis is the reusable operating guide; current-slate research belongs in the user's private workspace or dated report. Technical reference: https://datadawgs216.com/docs/dfs-mcp-workspace.md. Historical research: https://datadawgs216.com/docs/DFS_LABS_BIBLE.md. Live schema and deployed behavior take precedence for capabilities. Historical findings do not establish this tool's calibration.
When a tool, workflow or material model limit changes, update this guide, its app rendering, the schema guidance and discovery links in the same release. Source: docs/dfs-playbook.md; render with node tools/sync-dfs-playbook.mjs. Public instructions must never embed subscriber projections, subscriber research figures, user lineups or connector credentials. Evidence rules here stay generic; numbers from subscriber research belong in each user's private notes.
Hockey now lives at dfs-nhl.html with its own site-navigation entry, not inside the football DFS desk. Its first version is DraftKings only: one slate CSV, player pool, status checks, lineup builder and salary/position/slate validation. Projection explanations and provenance are in details. No ownership, contest, portfolio, simulation or market-import controls appear. Current official DraftKings scoring/roster verification is still a release gate; no contest-ready claim is made.
Cloud save/load, history refresh and AI workspace access are disabled. CSV imports and lineup building run locally; player-specific multi-season DK partial averages, game-to-game SD and sample counts load automatically, with matched-player coverage and missing components shown. Reload clears all work. Download JSON is for records and cannot be re-imported. See docs/nhl-preview.md for instructions.
Save this slate so your connected AI can use the same players, settings and lineups. Load brings AI changes back here. Sign in · Connect your AI
Uploads stay on this device until you choose Save privately. Load replaces the local slate and keeps a device backup.
Choose your ETR projections or DraftKings salary file. A complete CSV replaces the current player pool; a projections-only file updates matching players. Your upload stays loaded until you replace it or load another slate.
Home win probability and modelled margin from data/survivor.json (market or model). No totals.
Load a DraftKings slate to see AWAY @ HOME with kickoff and modelled home win odds.
Score contests on the Screener sheet (or wait for the lobby pull). Top Play-band shows up here.
Week N not graded — ingest standings on the Standings sheet.
Upload one data sheet or load live DraftKings salaries through toto. Build lineups to create the simulator and exposure results. Player data stays on this device until you choose Save privately; saved workspaces are shared with your personal AI connection.
Uses toto → DraftKings draftables (salaries + OUT/Q). No Export CSV required. Opens on the next-locking Classic/Showdown when online.
Actions stay outside the gear. Use Refresh / Load / Read / Match below.
Edit any projection or ownership number directly. Lock forces a player into every lineup, Out removes them entirely, and Max% caps how many of your lineups may contain them. A player with no projection is left out of the pool — a blank is not a zero.
Upload your data sheet above, or load the demo slate to see the whole rig work end to end.
Contest-aware presets (Bible §4.1) set lineups / uniques / randomness / stacks. An integer search maximizes the selected objective under hard constraints. A time-limited result is not proof of optimality. There is no lineup-count paywall.
Classic GPP objective = projection × weight + ceiling × weight + Large Field ownership × weight. ACO is summed ownership in percentage points. Caps are never relaxed. Max per team includes DST; choose 5 explicitly for a full game stack. Showdown keeps its existing objective.
Correlation is the only free lunch in a tournament: a quarterback and his receiver score the same touchdown twice. The estimated size of that effect is on the Method sheet.
Bible §4.2 — pass/warn only (never hard-block). E[dupes] uses §3.2 priors until ≥3 weeks of standings (I5).
The solver asks what scores most. This asks what beats the room — and in a top-heavy tournament those are rarely the same lineup.
Opponent lineups are generated to hit the ownership you supplied, spending close to the cap the way real entries do. The field is a sample — your finishing rank is measured against it and then scaled to the real contest size.
Read this before you read the ROI column. If the simulated room is weaker than the room you are actually in, every ROI on this page is too high.
Cash rate is the share of simulated contests that pay a prize. It is not profit or ROI. These bars use the current inputs and payout assumptions; model error is not included. Compare with field diagnostics before relying on differences.
Default sort is EV (dupe-adj) with Top-10 tiebreak (I4 / Bible §3.4). Top-10 is literal places 1–10 (B5), not a cut of the field. EV (dupe-adj) divides each cashed prize by 1+E[dupes] — prior until ≥3 weeks standings (I5). ROI stays visible but is not the selection key. Proj is the sum of your projections. Mean differs from Proj because scoring is skewed. Dupes (field sample) is the expected number of other entries holding exactly this lineup.
Sample-winner % is how often a player appears in the highest-scoring sampled opponent. The difference from imported ownership is a model diagnostic, not an exact optimal-lineup rate or proven leverage.
Start with the best projected lineup. Then compare how much projection you give up for a different path to winning. Tap a candidate card or any dot to inspect the roster.
Set the entry count and paid places for each goal, using your actual contests. Presets are examples. The goal controls the axis and color; the comparison evaluates all four contests. Cash, 3× and 5× use flat prizes of 2×, 3× and 5× the entry fee.
Generate the pool first, then compare contests. The benchmark respects the salary floor, locks, exclusions and team limit. The comparison keeps candidates below the projection frontier so correlated upside remains eligible.
A 150-lineup pool is only worth building if it is a portfolio rather than 150 copies of one opinion. The grey mark on each bar is projected ownership, so a bar past the mark is where you are overweight the field.
The old cumulative-ownership frontier sweep has been retired from the Exposure sheet. Selection uses modelled payout EV when available, otherwise the literal Top-10 proxy. The Lineup lab above explores contest fit; it is not that hull.
Build lineups in Solver to see how often each player appears across your lineup pool.
Open the same saved audit on another signed-in device. Saving creates an unchanged historical copy; it never replaces your current draft. Importing a CSV alone does not upload it.
Sign in to list private history. No history is loaded automatically.
Copies the selected server revision, including predictions, inputs and portfolio. Later workspace edits cannot change this archive. An archive saved after lock does not backdate its predictions.
Every contest you have entered, and what it actually returned. Imports stay on this device. Save log to my account explicitly creates a private historical copy you can open on another device.
DraftKings → My Contests → History → Export. The columns it writes are detected automatically; each row is one entry.
Entry_Key identifies each entry, including tied entries. Cash and ticket winnings stay separate. Missing amounts remain unknown. Legacy imports are never silently rewritten.
Rank contests by rake / payout shape (Bible §5) and map each to a generation preset (§4.1). Pull from lobby loads top contests for the slate draft group via toto; type by hand anytime. Nothing leaves this device.
Higher rank = better on rake / 10th÷1st / min-cash bands. Preset from mapPresetFull. Cells are hand-editable; Apply pushes the preset into Solver.
| Verdict | Rank | Contest | % filled | Preset | Rake | 10th÷1st | Min-cash |
|---|
Use Apply to push that contest's §4.1 preset into the Solver sheet. Edit buy-in / prizes inline or via the form above.
No contests scored yet.
Join DraftKings contest-standings CSVs to the workspace you saved before lock. Predictions are read from that snapshot as saved; nothing is re-simulated. CSVs are parsed in this browser and never uploaded; only your entries, field ownership and duplicate counts are kept.
Cash rate does not grade first-place upside. Top-1% share is a ranking proxy, not first-place probability. Legacy snapshot timestamps stay unverified; rebuild from original evidence without overwriting the archive.
Week 1+ receipts (Bible §9.1). Paste a GameCenter standings CSV; it stays in IndexedDB on this device only (I3). Entry names are hashed on ingest. Grades (§9.3) run below on whatever exists.
| Week | Key | Name | Entries | Imported |
|---|
Nothing stored yet.
Bible §9.1–9.3. Grades run on whatever exists; empty sections stay labelled prior (I5) until data lands.
For the operating workflow and contest-specific lineup decisions, open the DFS Labs Playbook above. This sheet explains the model.
The simulator does not assume how a quarterback and his receiver move together — it measures it. Every cell below is estimated from nflverse weekly stats, regular season only, scored under DraftKings rules including the 100/300-yard bonuses and the defence points-allowed tiers.
Weekly scores are converted to z-scores inside each player-season before correlating. Without that step the number would mostly measure which player is better, not how their outcomes move together in a game. Roles are assigned by season usage — targets for pass catchers, carries plus targets for backs — never by fantasy points, because ranking by the outcome would let the outcome pick the role and inflate the very correlation being measured.
Read the pairs that matter: a quarterback with his top receiver, a quarterback with the opposing quarterback (the shootout), and a defence with the quarterback it is facing.
Coefficient of variation — one week's standard deviation as a share of the average — by position and scoring level, from the same sample. Cheap players are wildly more volatile than expensive ones, which is most of why punt plays win tournaments and lose cash games.
Outside the estimated range the nearest band is reused rather than extrapolated. Skill positions are drawn lognormal so the mean is preserved and the tail is on the right side; defences are drawn normal, because a DraftKings defence can finish below zero and a lognormal cannot.
These are projections, not promises — and they are your projections. This tool has no opinion about how good a player is; feed it a bad number and it will optimise that bad number perfectly. The correlation structure is measured, but it is the league-average structure across seven seasons, not this specific game. Nothing here knows about news after you pasted your file, weather at kickoff, or a late inactive.
The simulated field is the weakest link. It is generated from your ownership estimate, and ownership is itself a guess; the room is also modelled as a sample of a few thousand lineups and extrapolated, so finishing positions deep in a large field are approximate. If the modelled field is softer than the real one — and a field built from ownership alone usually is — the ROI column reads high. The field-strength card on the Simulator sheet exists so you can check that rather than take it on faith.
There are no receipts here yet. This tool has not been run forward against a declared benchmark for a single week, so it sits in Labs and it stays in Labs until it has. Paid incumbents run $25–$200 a month and gate the simulator behind lineup-count caps; this being free is not evidence that it is better.