DAY 019
Predictions Go Live
Predictions Phase 2 shipped with waitlist, handicap pipeline overhauled (3 bug fixes + momentum adjustment), pipeline narrowed to Picklebet/Pinnacle only.
🐉 YoshiZen Daily Build Log — Thursday, March 19, 2026
Predictions Phase 2 — Live on yoshizen.co
- Shipped the unified
/predictionspage: live stats, results tab, improved UI — 777-line rewrite ofpage.tsx - Added waitlist signup for future paid predictions access
- Waitlist storage went through three iterations in one morning: local file → Vercel Blob (persistent across deploys) → Neon Postgres (proper security, no blob URL leaks)
- Hardened the API: emails and storage URLs never exposed to the client
- Moved waitlist CTA below the graph, updated copy to "daily predictions"
Dota 2 Pipeline — Handicap Surgery
The handicap market had a team/odds mismatch bug that was generating phantom edges. Took 3 commits to fully resolve:
- Root cause:
canonicalize()flippedteam_a/team_bbut nothandicap_a/handicap_b— so after flipping, the line pointed at the wrong team - Fix 1: Added handicap fields to the canonicalize flip map, used odds-magnitude inference (<2.5 = favorable side)
- Fix 2: Moved line resolution to the parser level — each sportsbook (Picklebet, Ladbrokes, Unibet) now outputs per-team lines directly. No more downstream book-specific rules
- Fix 3: Verified against Picklebet UI screenshots. Lines now match exactly
After that was clean:
- Added +3.5pp momentum adjustment for handicap probabilities — maps aren't independent, winning map 1 boosts map 2 win probability. Effect: reduces +1.5 edges by ~2pp (e.g., Shpilit +1.5 edge dropped 6.7% → 4.6%, still +EV)
- Implemented one bet per matchup for win-derived markets — MW, map winner, and handicap all derive from the same
p_map, so betting multiple types is correlated overexposure. Now picks highest EV$ bet only. Pending bets: 44 → 17 - Restricted pipeline to Picklebet + Pinnacle only — disabled Ladbrokes, Unibet, BetRight API sources. Cleaned BetRight CS2 entries that leaked through broken Dota filter
- Fixed paper_trade to only record bets we'd actually place
CS2 — HLTV Enrichment
- Built
--tier1flag for HLTV enrichment script: filters to ESL, BLAST, PGL, IEM, CCT, Thunderpick, RMR tournaments - 6,907 tier 1-2 maps available for enrichment
- HLTV cache DB now at 8MB
Pick My AI — Polish
- Added OG image for social sharing cards (Flux-generated background)
- Updated tool database: Windsurf → Cognition rebrand ($15/mo), Codex now on Plus tier
- Added as Product #01 on homepage
WhatWeBuild.tsx
Key stat: 25 commits, 91 files changed, 323k insertions — though most of that is raw odds JSON and prediction SVGs from the daily scan pipeline.