Goal: a production OddsJam/PickTheOdds clone and beyond — every book scraped on-demand, the same bet married across all books and all bet types, best-line/+EV/arb/middle engines, live with price history, delivered as a subscription SaaS on a fully functioning backend, with a public proof layer they don't have. No synthetic data. No fake greens. Prove or it didn't happen.
Where we are P0 ~80%
P0 — Odds intelligence engine
- 25 books married · arb/+EV/middle engines live with false-edge guardrails · dynamic bet-type radar · the full proof system (/proofs /verify /edge-math).
- The hard problem — marrying heterogeneous books — is solved and proven. What remains is volume + depth + backend + product.
The phases
P1 — Coverage to parity IN PROGRESS Codex scrapers · Claude mapping
- All ~47 books married (25 done) — Codex un-gates a worker → ledger ping → Claude maps same-session (8× this session).
- ALL bet types joined, not just game lines — alt spreads, 1Q/inning totals, NRFI, props (1+/2+/anytime), futures. We capture them all; this is canonicalizing to JOIN them.
- Per-scraper exhaustiveness proof — captured vs walked vs emitted, proving no offer is missed.
P2 — Live backend (the fully functioning backend) CRITICAL PATH Codex infra · Claude wiring · operator keys
- Scheduled capture — per-book artifact cache + cron (Codex building);
live_runner_v1.py does emit→edge→history→status.
- Persistence — Supabase (odds store + price history). Writes currently DISABLED → re-enable + harden. The highest-leverage unblock.
- Push — the Rust receiver → WebSocket real-time; until then the board polls.
P3 — Product / SaaS (userbase + subscriptions + DB) PLANNED Claude/Codex · operator Stripe/Supabase
- Accounts/auth — Supabase auth (already in abet-dashboard); profiles, preferences.
- Subscriptions — tiers (free/pro), Stripe billing, feature gating.
- Database management — Supabase schemas: users, saved bets, alerts, watchlists, the odds/history store; backups + RLS.
- Product UI — abet-dashboard (React) is the shell; the Crossbook module (built this session) is the first surface.
P4 — Feature parity + the differentiator PLANNED Claude
- Alerts (+EV/arb/middle notifications), filters, line-shopping, DFS pick'em edge (prizepicks vs sportsbook props), historical charts.
- The proof/transparency layer — every number raw-traceable + auditable. The moat OddsJam/PTO don't have.
P5 — Scale + ops PLANNED Codex · operator
- Monitoring/alerting, reliability (named tunnels, worker stabilization), the cost/usage model, multi-user infra.
The critical path — what unblocks the most
- Operator: enable the live backend —
VERCEL_TOKEN + Oracle crontab + re-enable Supabase writes. Turns the proof into a live product. Biggest single step.
- Codex: un-gate + stabilize scrapers — the empties/shells + the flaky 24MB workers (prizepicks/betmgm). The only path past 25 books.
- Claude: bet-type coverage + exhaustiveness proof → then the SaaS surfaces + features.
The operating loops (how progress keeps flowing)
Breadth loop — Codex un-gates → ledger ping → Claude maps same-session. (running)
Bet-type loop — the radar flags unmapped/new types → canonicalize → join. (self-feeding)
Health loop — probe → fleet_truth → tickets → Discord. (scheduleable)
Live loop — live_runner on a cron → emit→edge→history→publish; board auto-refreshes. (opt-in, ready)
Accountability loop — [agent] commits → build_monitor → /build-board + Discord. (each session/cron)