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
-
pick_filter.py(7KB) - Core filtering module- BLACKLIST of words that should never be team names
is_valid_team_name()- Rejects garbage namesis_valid_normalized_key()- Rejects garbage keys like "u", "o", "pts"is_valid_pick()- Validates individual pick entriesfilter_valid_picks()- Cleans entire daily JSONclean_daily_picks()- Creates cleaned version of daily fileget_consensus_plays()- Returns plays with 2+ cappers
-
daily_summary.py(10KB) - Summary generator for social media- Sport detection (NBA, NFL, NHL, NCAAB, Soccer, Tennis)
generate_summary()- Creates structured summary dictformat_markdown()- For documentation/blog postsformat_twitter()- Compact format for tweetsformat_discord()- Rich format for Discordsave_summary()- Saves all formats tosummaries/folder
-
morning_report.py(3.5KB) - Combined morning brief- Creates a human-readable morning recap
- Can send to Telegram with
--sendflag
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 datasummary-YYYY-MM-DD.md- Markdown formattwitter-YYYY-MM-DD.txt- Twitter formatdiscord-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:
- Clean data - Only real team picks, no props or OCR garbage
- Accurate consensus - When we say "5 cappers on Pelicans", we mean it
- Ready for social - Twitter/Discord formats ready for dailyaibetting promo
- 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:
- Reject normalized keys that are single letters or common garbage
- Reject team names with prop indicators (pts, rebounds, etc.)
- Reject team names ending with unit indicators (2u, 1U)
- Reject Unknown Capper entries