Personal, locally-run draft assistant for one Yahoo fantasy football league. Read-only, single user, unreleased.
  • HTML 64.8%
  • Python 33.3%
  • PowerShell 1.6%
  • JavaScript 0.3%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Phil Brateng 26bd57f442 Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC
Laptop session work synced through the tree: D32 (the API taken up for one display use,
consultant untouched), the Week 1 data snapshot as overwritten by the broken live-page
ingest, session log, CLAUDE.md caution, the executed API agreement in reference/.
Housecleaning Batch A: plans/next_session.md rewritten for 09-13 (ingest fixes first,
Week 2 calendar, D32 stated), SPEC scope line updated.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
2026-09-13 21:17:05 -05:00
agent Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
archive 2026 closeout (Phase A): post-mortem, engine bench-valuation fix, seat-file reset, opener duplicate-tab close, picker pure functions + harness (t), SPEC, README as the 2027 primer, runbook restructured, 2026 corpus archived 2026-09-06 15:35:24 -05:00
data Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
design Initial commit: fantasy draft agent as of rehearsal #3 (2026-08-29 PASSED) 2026-08-30 13:31:10 -05:00
logs Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
plans Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
reference Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
.gitignore D30: the weekly consultant -- agent/season (ingest, projections, lineup, waivers, plan, selftest), fantasy-week skill, Sunday 08:40 plan email; Week 1 plan 2026-09-06 16:10:29 -05:00
board_v4.csv Live draft 2026-09-06: all 15 picks by the operator (14/15 first choice); off-screen-row scroll fix, roster-check case fix, opener enters via the hub's authenticated link; D28 live addendum, STATUS, SOTU 2026-09-06 12:16:38 -05:00
CLAUDE.md Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
DECISIONS.md Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
install_draft_task.ps1 D26 unattended mode + night-before verification on the home PC 2026-09-05 18:55:21 -05:00
install_weekly_task.ps1 D30: the weekly consultant -- agent/season (ingest, projections, lineup, waivers, plan, selftest), fantasy-week skill, Sunday 08:40 plan email; Week 1 plan 2026-09-06 16:10:29 -05:00
league_config.yaml Settings re-read (D24: Week 1 scored), full Yahoo capture incl. K/DEF, overrides, K/DEF console fallback 2026-09-03 22:59:21 -05:00
README.md D30: the weekly consultant -- agent/season (ingest, projections, lineup, waivers, plan, selftest), fantasy-week skill, Sunday 08:40 plan email; Week 1 plan 2026-09-06 16:10:29 -05:00
requirements.txt runner: survive python stderr under PS 5.1 (exit code is the verdict); requirements: bs4, tzdata 2026-09-06 16:12:40 -05:00
run_weekly_plan.ps1 runner: survive python stderr under PS 5.1 (exit code is the verdict); requirements: bs4, tzdata 2026-09-06 16:12:40 -05:00
runbook.md 2026 closeout (Phase A): post-mortem, engine bench-valuation fix, seat-file reset, opener duplicate-tab close, picker pure functions + harness (t), SPEC, README as the 2027 primer, runbook restructured, 2026 corpus archived 2026-09-06 15:35:24 -05:00
SPEC.md Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00
start_draft.ps1 D26 unattended mode + night-before verification on the home PC 2026-09-05 18:55:21 -05:00
STATUS.md Week 1 session (09-13): D32 Yahoo API for the Frame only, w01 snapshot, ingest defect noted; 09-13 housecleaning fixes to the pick-up brief and SPEC 2026-09-13 21:17:05 -05:00

Fantasy Football — the draft package, and the season that follows

Status → next lives in STATUS.md. Settled design: SPEC.md. Why: DECISIONS.md (append-only; D26D28 are the 2026 draft-day decisions). What happened in 2026 and what to fix first in 2027: archive/draft_2026_postmortem.md.

What this is

A live-draft co-pilot for Phil's Yahoo league (750741; 12 teams, 15 rounds, snake, standard scoring with the league's own modifiers). It builds a draft board from this league's exact scoring, watches the live draft room through a dedicated Chrome, models what every other seat still needs, recommends the pick — and, since the 2026 draft, makes the pick on Phil's standing authorization (D28). On 2026-09-06 it drafted all 15 picks from seat 4, 24 seconds per turn, 14 of them its own first choice, and graded the result first of twelve by the league's projections.

The in-season weekly consultant (D30) is built: python -m agent.season.plan --refresh snapshots the league through the signed-in Chrome, blends three weekly projection sources, and renders the Set-your-team plan (lineup with lock times and pivots, conservative waiver advice, notes, matchup). Ask for it in casual language (the fantasy-week skill) or let the Sunday 08:40 task email it. Plan and gates: plans/season_plan.md.

Read order for a cold start

  1. This file.
  2. SPEC.md — the four parts (board, reader, console, hands), the browser contract, the invariants. Ten minutes.
  3. runbook.md — how to run a draft day, assisted mode first. The one-page checklist is at the top.
  4. DECISIONS.md D26D28 and the post-mortem — only if you need to know why something is the way it is.

The 2026 planning corpus (archive/2026/: the structural and strategic plans, the opponent model spec and review, the research files) is the evidence base. It is not required reading to operate the package; it is required reading before changing the engine.

The 2027 draft-day checklist (short form; the runbook has the long one)

Weeks before

  • league_config.yaml: re-read every setting from the league page. Scoring, roster, clock, waiver type, draft time. It changed twice in 2026 between the first read and draft day.
  • python -m agent.boardboard_v4.csv; python -m agent.prerank → paste data/prerank_export.txt into Yahoo's pre-draft rankings (the machine-dies-anyway floor).
  • python -m agent.replay (24 synthetic drafts, roster legality and composition) and python -m agent.replay_views (the seam harness) must be clean.

The night before, on the home PC

  • .\start_draft.ps1 once: the debug Chrome (%LOCALAPPDATA%\fantasy_draft_chrome) must be signed in to Yahoo. A fresh profile triggers a 2FA challenge — never on draft morning.
  • Two mocks in draft-day configuration (unattended console + agent.operator), 12-team rooms only. Yahoo rewrites the client each August: every selector fact is a hypothesis until a mock proves it.
  • data/seats.json must end with my_slot: null. install_draft_task.ps1 for the T28 launch.
  • Arm the session wake-ups (a one-shot cron before the task, a persistent watcher on the room tab) and a phone alarm as the human backup.

Draft morning

  • The task opens the room and starts the console. Verify: exactly one /draftclient/ tab, the console attached, my_slot set from the header, Autodraft off.
  • python -m agent.pick "<top player>" --dry-run against the real room before pick 1.
  • python -m agent.operator in the background, a Monitor on its log. Report every pick.
  • Phil can override any turn by naming a player.

Layout

agent/            the package: board → reader → console/engine → hands (see SPEC §1)
agent/season/     the weekly consultant: ingest → projections → lineup/waivers → plan (D30)
data/             board inputs, captures, seats.json, shots/ (git-ignored), the live logs
archive/          the post-mortem, superseded scripts, the 2026 planning corpus (archive/2026/)
plans/            season_plan.md (the weekly consultant); next_session.md (pick-up brief)
start_draft.ps1   the launcher (attended / -Unattended / -SelfTest)
install_draft_task.ps1   the T28 scheduled task (one-shot; remove after the draft)
run_weekly_plan.ps1 / install_weekly_task.ps1   the Sunday 08:40 plan email (the floor)
league_config.yaml       the league, as read from Yahoo -- the single source of scoring truth

Machine-local, never synced: .venv (rebuild from requirements.txt), data/cache, data/shots, the Chrome profile, %USERPROFILE%\.fantasy_draft\ (tokens).

Sensitivity

None. No financial, medical or family data. Yahoo OAuth / Home Control tokens are machine-local secrets; the tree holds pointers only.