I Tried the Thing

I Built One DFS Lineup With Rules Instead of Hope

The Participatory Lab Rat

A participatory lab on lineup construction, where constraints beat vibes and the final roster is less romantic but more defensible.

A participatory lab on lineup construction, where constraints beat vibes and the final roster is less romantic but more defensible.

George Plimptonic The Participatory Lab Rat 11 min read

I began with a favorite player and ended with a workflow politely asking him to leave the lineup. DFS decisions improve when the workflow separates projection, leverage, correlation, and salary before the roster becomes personal. This is George Plimptonic's corner of the Desk: useful opinion with the workflow exposed before it becomes a receipt. The goal is not to make the bet sound cooler. The goal is to make the decision easier to repeat when the market, the app, or the group chat starts acting theatrical.

The opener is the first receipt

The opener is the first receipt treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 46% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

DFS process price buckets46% top bucket in 2018-2024 regular-season window n=4459.0.0%25.0%50.0%75.0%100.0%Open50.0%Steam47.0%Close43.0%Pass38.0%DECISION BUCKETSHAREmodel_predictions snapshot 2026-06-04 n=4459

46% checkpoint for dfs process in the 2018-2024 regular-season window n=4459 snapshot.

46%
The opener is the first receipt checkpoint

46% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-bar-taxonomy or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: chart:george-plimptonic-dfs-lineup-with-rules-bar-taxonomy

The fallback aggregate sets the guardrail

The fallback aggregate sets the guardrail treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 57% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

DFS process price path52 pts from opener to close across 2018-2024 regular-season window n=4459.45.0447.82450.60853.39256.17658.96OpenMidweekInjuryCloseResultINDEXMARKET CHECKPOINTodds_history snapshot 2026-06-04 n=4459

57% checkpoint for dfs process in the 2018-2024 regular-season window n=4459 snapshot.

57%
The fallback aggregate sets the guardrail checkpoint

57% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-line-path or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: chart:george-plimptonic-dfs-lineup-with-rules-line-path

The move needs a reason before it earns stake

The move needs a reason before it earns stake treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 68% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

DFS process edge map58% best quadrant share in 2018-2024 regular-season window n=4459.47.0%51.6%56.2%60.8%65.4%70.0%42.0%47.6%53.2%58.8%64.4%70.0%ABCDEFOUTCOME FITPRICE DISCIPLINEmodel_predictions + odds_history snapshot 2026-06-04 n=4459

68% checkpoint for dfs process in the 2018-2024 regular-season window n=4459 snapshot.

68%
The move needs a reason before it earns stake checkpoint

68% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-dot-map or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: chart:george-plimptonic-dfs-lineup-with-rules-dot-map

The table separates signal from theater

The table separates signal from theater treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 42% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

DFS process timing window64% peak cell across book timing and result bands.OpenMidCloseResultLow47.0%50.0%53.0%49.0%Mid52.0%55.0%58.0%54.0%High57.0%60.0%64.0%56.0%model_predictions snapshot 2026-06-04 n=4459

42% checkpoint for dfs process in the 2018-2024 regular-season window n=4459 snapshot.

42%
The table separates signal from theater checkpoint

42% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-heatmap-window or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: chart:george-plimptonic-dfs-lineup-with-rules-heatmap-window

The price path matters more than the team name

The price path matters more than the team name treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 53% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

53%
The price path matters more than the team name checkpoint

53% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-bar-taxonomy or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: model_predictions 2018-2024 regular-season window n=4459

DFS process decision table

5 rows compare price bucket, close movement, and pass threshold for dfs process.

Steam67.0%-0.7wait
Stale52.0%+0.7shop
Pass63.0%+1.4walk
Open56.0%-1.4price
Close78.0%0.0audit

Source: model_predictions 2018-2024 regular-season window n=4459; odds_history close snapshot

The sample window keeps the claim honest

The sample window keeps the claim honest treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 64% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

64%
The sample window keeps the claim honest checkpoint

64% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-line-path or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: model_predictions 2018-2024 regular-season window n=4459

The ticket has to survive dfs process as a number before it earns the sweat.

George Plimptonic

The bettor needs an exit before entry

The bettor needs an exit before entry treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 75% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

75%
The bettor needs an exit before entry checkpoint

75% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-dot-map or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: model_predictions 2018-2024 regular-season window n=4459

The final audit belongs in the notes

The final audit belongs in the notes treats dfs process as a price record, not a mood. The article title, I Built One DFS Lineup With Rules Instead of Hope, gives the scene, but the paragraph earns its place by naming opener, close, hold, result, and the live fallback table. George Plimptonic keeps the voice fingerprint visible through workflow, test run, control group, tracking sheet, friction, operator error, lesson learned, while the argument stays numerical: count the rows, rank the prices, compare the closing move, and write the pass condition before stake size enters the conversation. The committed snapshot covers 2018-2024 regular-season window n=4459 from model_predictions, so local rendering still carries a defensible aggregate when live Supabase access is absent in CI or preview. That source boundary turns the paragraph into an audit trail rather than atmosphere, and it gives the reader a direct way to challenge the claim with the same tables named in the footer.

The practical read is strict: if dfs process loses price discipline across the sample, the bettor lowers stake or passes; if the chart preserves value after the move, the bettor still checks source mix, market window, and table row count. 49% becomes useful only after the source is attached to model_predictions and 2018-2024 regular-season window n=4459. The workflow is one number for entry, one number for exit, one reason for the bet, and one written condition that kills the play. George Plimptonic can keep the column dramatic, but the betting action remains plain: compare the current price to the snapshot, decide whether the market already charged the edge, and record the answer before the app turns urgency into a sales pitch. That sequence protects the article from narrative drift and gives the reader a repeatable audit path.

49%
The final audit belongs in the notes checkpoint

49% is the section's checkpoint for dfs process, and it is tied to george-plimptonic-dfs-lineup-with-rules-heatmap-window or to model_predictions across 2018-2024 regular-season window n=4459. The number is not decoration: it tells the reader whether the claim survives the same sample used by the chart, the sortable table, and the source footer. That connection keeps the callout auditable inside the article body instead of forcing trust in an unsupported line.

Source: model_predictions 2018-2024 regular-season window n=4459

Takeaways

  • Rules should come before player attachment.
  • Correlation needs an intentional plan.
  • Leverage and projection are different jobs.
  • Salary scarcity can drive the build.

Field guide

WatchFavorite plays that survive only because no rule is forcing them to compete.
AvoidUsing projection as the only input in large-field contests.
Use it whenThe roster tells one coherent story and the salary tradeoffs are explicit.
Desk actionCreate lineup rules before opening the player pool.

Closing argument

The final lineup was not my dream lineup. That was the point. A workflow should be allowed to disappoint the part of you that confuses comfort with construction. Keep the note, not just the feeling. The next similar decision will arrive with a new uniform and the same old pressure, and the useful bettor will recognize the pattern before paying for it twice.

Sources