March Madness Brackets¶
Fill and manage NCAA March Madness bracket picks on Polymarket bracket contests — win prizes for correct predictions.
Get Started (New Users)¶
If you don't have Bullpen CLI installed yet, run these 3 commands first:
Then log in:
A code and URL are displayed. Open the URL in your browser, enter the code, and you're authenticated.
AI Agent Mode
Want Claude Code or Codex CLI to fill your bracket for you? Install AI skills after logging in:
Then restart Claude Code and ask: "Fill my March Madness bracket picking Duke to win it all"
Quick Start — Fill Your Bracket¶
# 1. Find the active contest
bullpen polymarket bracket contests --status open
# 2. Preview chalk picks (higher seed always wins)
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145 --dry-run
# 3. Submit your bracket
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145
# 4. Override with your upset picks
bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E2 --winner "TCU"
# 5. Check your bracket
bullpen polymarket bracket summary <CONTEST_ID>
Fill Your Bracket with AI¶
If you installed AI skills (bullpen skill install), you can fill your entire bracket through conversation with Claude Code or Codex CLI. Just copy-paste one of these prompts.
Option A: Fully Autonomous (AI researches and fills for you)¶
Paste this into Claude Code or Codex CLI:
Fill my 2026 NCAA March Madness bracket on Bullpen. Here's what I want:
1. Find the active bracket contest
2. Research the tournament field — seeds, matchups, team strengths
3. Fill all 63 picks using your best analysis:
- Favor teams with March experience and defensive identity
- Pick 2-3 realistic upsets per region (12-over-5, 10-over-7 range)
- Pick a champion you believe in, not just the #1 overall seed
4. Set tiebreaker to your best estimate of championship game total points
5. Show me the bracket summary when done
Go ahead and submit the picks — I trust your judgment.
Option B: Interactive Bracket Builder (AI asks you questions)¶
Paste this into Claude Code or Codex CLI for a personalized bracket:
Help me fill my 2026 NCAA March Madness bracket on Bullpen. Walk me through
it by asking me these questions one at a time, then build my bracket based
on my answers:
1. Who's your champion? (gut feel — who wins it all?)
2. Chaos level? (chalk / moderate / madness)
- chalk: mostly higher seeds win
- moderate: 2-3 upsets per region
- madness: go wild, 4-5 upsets per region
3. Teams you love this year? (2-3 teams you think are underseeded or on a run)
4. Teams to fade? (overseeded or overrated teams you want to lose early)
5. Cinderella pick? (a double-digit seed to make a deep run — Sweet 16 or further)
6. Conference bias? (e.g. "Big Ten is underrated" or "SEC is overrated")
7. Tiebreaker — predicted total points in the championship game?
After I answer, generate the full 63-pick bracket reflecting my preferences,
preview it with --dry-run, and submit it once I confirm.
Both prompts work with Claude Code (claude) or Codex CLI. The AI will use the Bullpen CLI bracket commands to find the contest, generate picks, and submit them.
How It Works¶
Polymarket runs bracket contests where you predict the winner of all 63 NCAA tournament games. Points are awarded for each correct pick, with later rounds worth more. The tiebreaker (predicted total points in the championship game) resolves ties.
64 teams, 4 regions (East, West, South, Midwest), 63 total picks
| Round | Games | Points/Pick | Max Points |
|---|---|---|---|
| First Round (R1) | 32 | 1 | 32 |
| Second Round (R2) | 16 | 2 | 32 |
| Sweet 16 (R3) | 8 | 4 | 32 |
| Elite 8 (R4) | 4 | 8 | 32 |
| Final Four (R5) | 2 | 16 | 32 |
| Championship (R6) | 1 | 32 | 32 |
| Total | 63 | — | 192 |
Find Contests¶
# List all bracket contests
bullpen polymarket bracket contests
# Filter by status
bullpen polymarket bracket contests --status open
# JSON output for scripting
bullpen polymarket bracket contests --output json
View the Bracket¶
# Full bracket tree with matchups and seeds
bullpen polymarket bracket bracket-view <CONTEST_ID>
# JSON output
bullpen polymarket bracket bracket-view <CONTEST_ID> --output json
Fill Your Bracket¶
Option 1: Auto-Fill with Chalk (Higher Seeds Win)¶
The fastest way to get a complete bracket — always picks the higher seed:
# Preview first (no submission)
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145 --dry-run
# Submit
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145
Picks are submitted round by round (R1 first, then R2-R6). If any round batch fails, the CLI automatically falls back to individual pick submission. A final verification confirms how many picks persisted.
Option 2: Fill from a JSON File¶
Create a picks file with your custom selections:
{
"picks": [
{"slot": "R1_E1", "winner": "Duke"},
{"slot": "R1_E2", "winner": "TCU"},
{"slot": "R1_S1", "winner": "Illinois"},
{"slot": "R2_E1", "winner": "Duke"},
{"slot": "R6_CH1", "winner": "Duke"}
],
"tiebreaker": 148
}
# Preview
bullpen polymarket bracket fill <CONTEST_ID> --file picks.json --dry-run
# Submit
bullpen polymarket bracket fill <CONTEST_ID> --file picks.json
Team names support fuzzy matching — use short names like "Duke", "UConn", "Michigan St".
Option 3: Pick One at a Time¶
Submit or update individual picks:
bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E1 --winner "Duke"
bullpen polymarket bracket pick <CONTEST_ID> --slot R2_E1 --winner "Duke"
bullpen polymarket bracket pick <CONTEST_ID> --slot R6_CH1 --winner "Duke"
Works for all rounds (R1-R6). For later rounds where matchups aren't determined yet, the CLI resolves team names against all tournament entries.
Slot ID Format¶
Slot IDs identify each game in the bracket: R{round}_{region}_{game}
| Slot | Meaning |
|---|---|
R1_E1 |
East region, Round 1, Game 1 (seed 1 vs seed 16) |
R1_E8 |
East region, Round 1, Game 8 (seed 8 vs seed 9) |
R2_W4 |
West region, Round 2, Game 4 |
R3_S2 |
South region, Sweet 16, Game 2 |
R4_MW1 |
Midwest region, Elite 8, Game 1 |
R5_FF1 |
Final Four, Game 1 |
R6_CH1 |
Championship game |
Get exact slot IDs from bullpen polymarket bracket bracket-view <CONTEST_ID> --output json.
Set Tiebreaker¶
The tiebreaker is your prediction of the total points scored in the championship game. It resolves ties in the final standings.
Note
fill-chalk and fill set the tiebreaker as part of submission. Use submit --tiebreaker to update it separately.
View Your Picks¶
# All picks
bullpen polymarket bracket picks <CONTEST_ID>
# Filter by round
bullpen polymarket bracket picks <CONTEST_ID> --round 1
bullpen polymarket bracket picks <CONTEST_ID> --round 5 # Final Four only
# JSON output
bullpen polymarket bracket picks <CONTEST_ID> --output json
Bracket Summary¶
See a compact overview — champion, Final Four, Elite 8, upsets, and pick count:
Champion: Duke
Final Four: Duke (E) | Arizona (W) | Iowa St. (MW) | Illinois (S)
Elite 8: Duke (E) | Michigan St. (E) | Arizona (W) | ...
Upsets: TCU(9)>Ohio St.(8), USF(11)>Louisville(6)
Picks: 63/63
Tiebreaker: 148
Track Results¶
Once the tournament starts:
# Game results
bullpen polymarket bracket results <CONTEST_ID>
# Your rank and score
bullpen polymarket bracket status <CONTEST_ID>
# Full leaderboard
bullpen polymarket bracket leaderboard <CONTEST_ID>
Polymarket Market Mappings¶
Each bracket game maps to a Polymarket prediction market. View the mappings:
This lets you cross-reference bracket picks with live Polymarket odds for your research.
Strategy Guide¶
Chalk (Favor Higher Seeds)¶
Pick the team with the better seed in every game. Maximizes expected correct picks but leaves points on the table if there are upsets.
Upset-Heavy¶
Target statistically common upsets in Round 1:
- 12 over 5: ~35% historically
- 10 over 7: ~40% historically
- 11 over 6: ~37% historically
- 13 over 4: ~21% historically
- 14 over 3: ~15% historically
Start with chalk, then override 2-3 upsets per region:
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 150
bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E5 --winner "12-seed team"
bullpen polymarket bracket pick <CONTEST_ID> --slot R1_W4 --winner "13-seed team"
Custom Champion (Work Backwards)¶
- Pick your champion (
R6_CH1) - Work backwards — your champion must win Final Four, Elite 8, etc.
- Fill the rest freely
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 152
bullpen polymarket bracket pick <CONTEST_ID> --slot R6_CH1 --winner "Duke"
bullpen polymarket bracket pick <CONTEST_ID> --slot R5_FF1 --winner "Duke"
# Continue working backwards through Duke's region
Contrarian (Large Field Differentiation)¶
In contests with many participants, differentiation matters more than raw accuracy. Pick a non-consensus champion (3 or 4 seed) and several 12-seed upsets.
Troubleshooting¶
| Issue | Fix |
|---|---|
| "Not authenticated" | Run bullpen login |
| "Contest not found" | Run bullpen polymarket bracket contests to get valid IDs |
| "Invalid slot ID" | Use bracket-view --output json to get exact slot IDs |
| "No team matching..." | Check team names with bracket-view. Fuzzy matching works for short names. |
| "Ambiguous team name..." | Be more specific — the error lists matching candidates |
| Picks not persisting | The CLI verifies and falls back to individual submission automatically |
| Command not found | Run bullpen upgrade to get the latest version |