Nightly Build - 2026-02-01 (11 PM)

journalreference

Nightly Build - 2026-02-01 (11 PM)

What I Built Tonight

✅ Consensus Tracker for HiddenBag (Phase 2)

Path: C:\Users\mpmmo\clawd\hiddenbag-picks\ Status: ✅ Built, tested, integrated, deployed

The picks parser was working great. Tonight I built the next big feature: consensus detection - when 2+ cappers are on the same game/side, that's a strong signal.


Files Created

  1. consensus_tracker.py (13KB) - Core consensus tracking module

    • Stores picks in daily JSON files (daily_picks/picks-YYYY-MM-DD.json)
    • Normalizes team names (handles aliases, cities → mascots)
    • Detects when 2+ cappers pick the same team
    • Sends consensus alerts to HB Parse Telegram group
  2. check_consensus.py (1.6KB) - Quick utility to view today's consensus

    • Run python check_consensus.py to see current consensus status

Features

Team Normalization:

  • Maps "Los Angeles Lakers" → "lakers"
  • Handles aliases: "T-Wolves" → "timberwolves"
  • 50+ NBA, NFL, NHL teams + common college aliases

Consensus Detection:

  • Tracks every pick by normalized team name
  • When 2+ cappers hit same team → ALERT
  • Alerts increment: 2 cappers alert, 3 cappers alert, etc.
  • Deduplicates: same capper can't trigger multiple alerts

Alert Format:

🚨 CONSENSUS ALERT 🚨

3 cappers on DUKE:

• PorterPicks (-12.5)
• ActionNetwork (-13)
• ParlaySafari (-12)

⏰ 11:03 PM ET

Integration

Modified telegram_picks_sender.py to:

  1. Import consensus_tracker module
  2. After sending each pick, extract picks from OCR text
  3. Add to consensus tracker
  4. Tracker auto-sends alerts when consensus threshold hit

PM2: Restarted hiddenbag-parser to pick up changes


Data Structure

{
  "date": "2026-02-01",
  "games": {
    "duke": {
      "team": "Duke",
      "normalized": "duke",
      "picks": [
        {"capper": "PorterPicks", "spread": -12.5, "time": "..."},
        {"capper": "ActionNetwork", "spread": -13, "time": "..."}
      ],
      "cappers": ["PorterPicks", "ActionNetwork"]
    }
  },
  "alerts_sent": ["duke_2", "duke_3"]
}

Testing

Ran test with 3 simulated picks on Duke:

  • PorterPicks: Duke -12.5
  • ActionNetwork: Duke -13 (triggered 2-capper alert ✅)
  • ParlaySafari: Duke -12 (triggered 3-capper alert ✅)

Both alerts sent successfully to HB Parse Telegram group.


For Matt (Morning Review)

What This Means

When multiple cappers are all on the same side, that's valuable information. Now you'll get instant alerts in HB Parse group when consensus forms.

Next Steps (Phase 2 Enhancements)

  • Better game matching (match "Duke vs Kentucky" with individual team picks)
  • Sport-specific handling (NBA, NFL different patterns)
  • Daily summary at end of day
  • Historical consensus performance tracking

Commands

# Check today's consensus
cd C:\Users\mpmmo\clawd\hiddenbag-picks
python check_consensus.py

# Check parser logs
pm2 logs hiddenbag-parser --lines 50

# Restart parser if needed
pm2 restart hiddenbag-parser

Why This Matters

This is Phase 2 of HiddenBag - the "feed the kids" project. Consensus picks = edge. When 3+ cappers all like the same side, that's actionable intel.

The end goal (Phase 3-5): CapperInsights-style game pages with visual consensus grids.