For a given fantasy week (Monday-Sunday), identifies every starting pitcher scheduled to start twice, validates both probable starts, grades each matchup against the league's Quality Starts (QS) scoring rules, and ranks the list by streamability_score. Flags bullpen-game and opener risks that nearly never produce QS. Use when user mentions "two-start pitchers", "weekly streaming", "Monday-Sunday pitcher plan", "double start", "2-start SP", or preparing the weekly streaming plan on Sunday nights.
Scenario: Fantasy week of Monday 2026-04-20 through Sunday 2026-04-26. League scores Quality Starts (QS = 6+IP and <=3ER), not Wins. User needs to decide which two-start SPs to stream from free agency.
Step 1 outputs (from web search) -- FantasyPros two-start-pitchers.php plus FanGraphs probables-grid cross-check:
| SP | Team | Start 1 | Start 2 | Notes |
|---|---|---|---|---|
| Logan Webb | SFG | Mon 4/20 @ COL | Sat 4/25 vs WSH | confirmed on both sources |
| Seth Lugo | KCR | Tue 4/21 @ DET | Sun 4/26 vs NYY | confirmed |
| Bryan Woo | SEA | Mon 4/20 vs HOU | Sun 4/26 @ OAK | confirmed |
| Ranger Suarez | PHI | Tue 4/21 vs NYM | Sun 4/26 @ ATL | confirmed |
| (Team TBD) | MIA | Wed 4/23 vs STL | Mon (next wk)?? | OPENER RISK -- drop |
Step 2 outputs -- matchup signals per start:
Logan Webb: Start 1 at Coors (park_pitcher_factor 25, brutal) but weak COL lineup; Start 2 vs WSH at home (park 55). qs_probability 58, k_ceiling 62, era_whip_risk 55, streamability_score 62.
Seth Lugo: Start 1 at DET (avg), Start 2 vs NYY (top-3 wOBA). qs_probability 45, era_whip_risk 68, streamability_score 48.
Bryan Woo: Start 1 vs HOU (tough), Start 2 at OAK (weakest AL lineup, pitcher park 60). qs_probability 66, k_ceiling 70, streamability_score 71.
Ranger Suarez: Start 1 vs NYM (tough), Start 2 at ATL (top-2 wOBA, hitter park). qs_probability 40, era_whip_risk 72, streamability_score 42.
Step 3 output -- ranked two-start board (only free agents shown to user):
| Rank | SP | FA status | Streamability | QS prob | K ceiling | Risk | Verdict |
|---|---|---|---|---|---|---|---|
| 1 | Bryan Woo | FA in your league | 71 | 66 | 70 | 45 | ADD + START both |
| 2 | Logan Webb | Rostered | 62 | 58 | 62 | 55 | - (not available) |
| 3 | Seth Lugo | FA | 48 | 45 | 58 | 68 | SKIP -- risky vs NYY |
| 4 | Ranger Suarez | FA | 42 | 40 | 55 | 72 | SKIP -- both matchups bad |
| -- | MIA opener | FA | -- | -- | -- | -- | IGNORE -- bullpen game |
User-facing recommendation (delivered by streaming-strategist via communication-storytelling skill):
"This week has one strong two-start streamer: Bryan Woo of Seattle. He pitches twice (Monday vs Houston, Sunday at Oakland) and Oakland has the weakest hitting lineup in the American League. ADD Bryan Woo if he is a free agent. Bid $3-5 FAAB. Two starts means double the strikeouts and double the chance at a Quality Start -- even if Monday's matchup vs Houston goes poorly, the Oakland start is likely to salvage the week."
Copy this checklist and track progress:
Two-Start Scout Progress:
- [ ] Step 1: Define the fantasy week (Mon-Sun dates) and pull the two-start list
- [ ] Step 2: Cross-reference two lists and validate both probable starts per SP
- [ ] Step 3: Flag bullpen-game and opener risks -- remove from board
- [ ] Step 4: Compute per-start matchup signals (qs_probability, k_ceiling, era_whip_risk)
- [ ] Step 5: Aggregate to per-SP streamability_score
- [ ] Step 6: Cross-reference with Yahoo free-agent pool, rank, and emit signal file
Step 1: Define the week and pull the two-start list
Confirm the Monday-Sunday dates in ISO format (e.g., 2026-04-20 through 2026-04-26). Yahoo fantasy weeks lock at 9am ET Monday. See resources/methodology.md for week-boundary handling.
computed_at timestamp for the signal frontmatterStep 2: Cross-reference and validate both starts
FantasyPros is primary but lags short-notice rotation changes. Cross-check FanGraphs probables-grid to verify both starts are still scheduled and neither has been pushed or bumped. See resources/methodology.md.
source_urlsStep 3: Flag bullpen-game and opener risks
Teams that deploy openers (e.g., rebuilding clubs using a 1-inning reliever to start the game) rarely produce QS for the "nominal starter". These hurt ERA/WHIP and give zero QS. De-prioritize or drop entirely. See resources/methodology.md.
opener_risk: true)Step 4: Compute per-start matchup signals
For EACH of the two starts, compute matchup signals individually. A two-start SP with one great matchup and one terrible matchup is materially different from one with two average matchups. See resources/methodology.md.
qs_probability, k_ceiling, era_whip_risk per the signal-framework definitionsStep 5: Aggregate to per-SP streamability_score
Average the two starts, weighted toward QS probability because our league is QS-scoring (not W-scoring). See Quick Reference for the exact weighting formula.
streamability_score using the QS-weighted formulastreamability_scoreStep 6: Cross-reference free agents, rank, and emit signal
The user can only stream SPs who are free agents (FA). Filter the board to rostered vs available, and annotate the Yahoo FA status. Emit the signal file following resources/template.md.
mlb-league-state-reader or handoff)roster_status: fa | rostered-other | rostered-usersignals/YYYY-MM-DD-two-start.md using the templatemlb-signal-emitter (all scores in range, confidence >= 0.4, sources cited)mlb-streaming-strategist (which runs advocate + critic variants)Minimum standard: average rubric score of 3.5 or above. Validate using resources/evaluators/rubric_mlb_two_start_scout.json.
Pattern 1: Two good matchups (rare, high-value stream)
mlb-faab-sizer). Start both games.mlb-waiver-analyst will size the bid.Pattern 2: One good, one disaster (split decision)
Pattern 3: Two bad matchups (avoid)
Pattern 4: Opener / bullpen-game risk
Two starts does not mean good streamer. The volume multiplier only pays off when the per-start matchup quality is at or above league average. Two starts vs top-5 offenses can produce negative QS value. Always evaluate matchup quality, not just the start count.
Our league is QS, not W. Weighting must reflect this. 6+IP <=3ER matters more than wins. A pitcher on a bad team with good matchups can still produce QS. A pitcher on a great team with bad matchups cannot reliably. The formula in Quick Reference codifies this.
Validate BOTH starts on FanGraphs. FantasyPros publishes Sunday night; rotation changes happen Monday-Wednesday. If the second start shifts to a different pitcher, the SP is no longer a two-start SP -- remove from the board. Never use the FantasyPros list as the only source.
Opener teams are traps. MIA, OAK, CHW, PIT, WAS and a rotating cast of rebuilders use openers or short starts. The nominal "starter" listed may throw 3 innings. Zero QS upside. Always cross-check recent game logs.
Weather matters more for two-start weeks. A rain-out of one of the two starts converts a two-start SP to a one-start SP, and the value drops by roughly half. Flag any start with >30% rain probability as a downgrade on confidence.
Coors Field is a cliff. Any start in Coors (COL home) automatically caps streamability_score at ~60 no matter the matchup. The park factor is extreme enough that even an ace gives up 5+ runs some nights. Two-start SPs with a Coors game should rank below SPs with two neutral-park starts.
Cross-reference Yahoo FA status before ranking. A top-ranked two-start SP who is already rostered is irrelevant to the streaming decision. Always annotate roster_status and present the user only with actionable (FA) options at the top, with rostered SPs as context below.
Signal file is authoritative. Downstream agents (streaming-strategist, waiver-analyst) read the emitted signal file and do not re-derive. If the signal file is missing a field or has confidence < 0.4, downstream agents must flag it, not fill it in.
Key formulas:
qs_probability (per start) = rolling_QS_rate * matchup_multiplier
where matchup_multiplier =
0.35 * (100 - opp_wOBA_normalized) # worse offense = higher QS
+ 0.25 * park_pitcher_factor # pitcher park = higher QS
+ 0.25 * (100 - weather_risk) # dry = higher QS
+ 0.15 * bullpen_state_of_own_team # bullpen backs up 6+IP
k_ceiling (per start) = projected_Ks * 100 / 12
# 12 Ks in a start = 100 ceiling
era_whip_risk (per start) = 0.5 * opp_wOBA_normalized
+ 0.3 * park_hitter_factor
+ 0.2 * pitcher_blowup_history
streamability_score (per start) =
0.55 * qs_probability # QS-league weight -- DOMINANT
+ 0.25 * k_ceiling
+ 0.20 * (100 - era_whip_risk)
streamability_score (per SP, two-start week) =
mean(start_1_score, start_2_score)
- opener_risk_penalty # -30 if either start has opener risk
- coors_penalty # -10 if either start is at Coors
- weather_penalty # -5 per start with rain risk > 30%
Recommendation thresholds:
| streamability_score | Recommendation (if FA) |
|---|---|
| >= 70 | ADD + START both. Bid $3-8 FAAB. |
| 55-69 | ADD + START both if SP slot open. Bid $1-3 FAAB. |
| 40-54 | Only add if you have daily flexibility to bench the bad start. |
| < 40 | SKIP. Two starts does not salvage two bad matchups. |
Opener-risk teams (as of 2026-04-17, verify each week):
| Team | Opener frequency | Typical starter IP |
|---|---|---|
| MIA | High | 3-4 IP |
| OAK | High | 3-5 IP |
| CHW | Moderate | 4-5 IP |
| PIT | Moderate | 4-5 IP |
| WAS | Occasional | 5-6 IP |
Park-factor extremes (pitcher-friendly = high, hitter-friendly = low in pitcher_factor terms):
| Park | Pitcher factor | Notes |
|---|---|---|
| Coors (COL) | ~20 | Disaster for any pitcher |
| GABP (CIN) | ~35 | Hitter-friendly, especially for LHB |
| Fenway (BOS) | ~45 | Lefty matters a lot |
| Petco (SDP) | ~65 | Pitcher-friendly |
| Oracle (SFG) | ~68 | Pitcher-friendly |
| T-Mobile (SEA) | ~70 | Most pitcher-friendly |
Key resources:
Inputs required:
mlb-league-state-reader)Outputs produced:
streamability_score (QS-weighted)signals/YYYY-MM-DD-two-start.md for downstream agents