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

journalreference

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

What I Built Tonight

✅ Pick Quality Filter System

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

The parser was capturing a LOT of garbage - OCR artifacts like "NEW PICKS", "[RESULT]", and player props being grouped together. Tonight I built a filtering system to clean this up.


Files Created

  1. pick_filter.py (7KB) - Core filtering module

    • BLACKLIST of words that should never be team names
    • is_valid_team_name() - Rejects garbage names
    • is_valid_normalized_key() - Rejects garbage keys like "u", "o", "pts"
    • is_valid_pick() - Validates individual pick entries
    • filter_valid_picks() - Cleans entire daily JSON
    • clean_daily_picks() - Creates cleaned version of daily file
    • get_consensus_plays() - Returns plays with 2+ cappers
  2. daily_summary.py (10KB) - Summary generator for social media

    • Sport detection (NBA, NFL, NHL, NCAAB, Soccer, Tennis)
    • generate_summary() - Creates structured summary dict
    • format_markdown() - For documentation/blog posts
    • format_twitter() - Compact format for tweets
    • format_discord() - Rich format for Discord
    • save_summary() - Saves all formats to summaries/ folder
  3. morning_report.py (3.5KB) - Combined morning brief

    • Creates a human-readable morning recap
    • Can send to Telegram with --send flag

What It Does

Before filtering (74 teams):

  • "Selekhmeteva u" with 20+ cappers (garbage grouping)
  • "picks", "result", "classify" as team names
  • Player props mixed with game picks

After filtering (31 teams):

  • New Orleans Pelicans: 5 cappers ← REAL consensus
  • Texas Tech: 3 cappers ← REAL consensus
  • Clean 2-capper plays: Leafs, Pacers, Senators, etc.

Sample Output

Daily Summary for 2026-02-02
Total teams: 31
Active cappers: 19
Hot consensus (3+ cappers): 2 plays

🔥 HOT CONSENSUS:
• New Orleans Pelicans (5 cappers)
• Texas Tech (3 cappers)

📊 2-Capper Plays:
• Leafs, Pacers, Stephen F Austin, Senators, Texas Tech Red, Grizzlies

Usage

# Clean today's picks
cd C:\Users\mpmmo\clawd\hiddenbag-picks
python pick_filter.py 2026-02-02

# Generate all summary formats
python daily_summary.py 2026-02-02

# Generate morning report
python morning_report.py 2026-02-01

# Send morning report to Telegram
python morning_report.py 2026-02-01 --send

Output Files

Summaries are saved to: C:\Users\mpmmo\clawd\hiddenbag-picks\summaries\

  • summary-YYYY-MM-DD.json - Structured data
  • summary-YYYY-MM-DD.md - Markdown format
  • twitter-YYYY-MM-DD.txt - Twitter format
  • discord-YYYY-MM-DD.txt - Discord format

Clean picks saved to: C:\Users\mpmmo\clawd\hiddenbag-picks\daily_picks\

  • picks-YYYY-MM-DD-clean.json - Filtered picks

Why This Matters

This is Phase 2.5 of HiddenBag - Data Quality. The consensus tracker (built Feb 1) was grouping garbage picks together, making the alerts useless. Now:

  1. Clean data - Only real team picks, no props or OCR garbage
  2. Accurate consensus - When we say "5 cappers on Pelicans", we mean it
  3. Ready for social - Twitter/Discord formats ready for dailyaibetting promo
  4. Morning briefs - Matt can get a quick recap each morning

Next Steps (Phase 3)

  • Integrate filter into live consensus_tracker.py
  • Auto-run daily_summary at midnight
  • Add pick grading (win/loss tracking) when game results available
  • Build historical capper performance tracking
  • Feed data to dailyaibetting.com leaderboard

Technical Notes

Encoding: Windows console has issues with Unicode emojis. File writes use encoding="utf-8", console prints use ASCII-safe alternatives.

Sport Detection: Uses keyword matching against known team/league names. "Other" category catches unrecognized sports.

Filter Logic:

  1. Reject normalized keys that are single letters or common garbage
  2. Reject team names with prop indicators (pts, rebounds, etc.)
  3. Reject team names ending with unit indicators (2u, 1U)
  4. Reject Unknown Capper entries