name: bullpen-bracket description: "AI-assisted bracket contest filling and management for Polymarket tournament contests (e.g. March Madness). Use when the user wants to fill a bracket, make picks, submit a tiebreaker, view standings, check results, or automate bracket strategies. Provides command reference, slot ID format, scoring rules, and strategy templates (chalk, upset-heavy, custom champion)." license: MIT metadata: author: BullpenFi version: "0.1.64" tags: [bracket, march-madness, tournament, polymarket, prediction-markets, sports] docs-url: cli.bullpen.fi
Bullpen Bracket Skill
This is a live example of the AI agent skill format. For the full format specification, see AI Agent Skill Format Specification.
Instructions
Step 1: Identify What the User Wants to Do
Route to the right section based on intent:
| User Intent | Go To |
|---|---|
| Find bracket contests | List Contests |
| See the full tournament bracket | Display Tournament Bracket |
| Submit picks (one or many) | Submit a Single Pick |
| Fill entire bracket automatically | Auto-Fill Bracket |
| Fill from a JSON file | Fill from File |
| See bracket summary | View Bracket Summary |
| Set tiebreaker score | Submit Tiebreaker |
| See standings / my rank | View Leaderboard / View Your Status |
| Check game outcomes | View Game Results |
| See Polymarket market mappings | View Polymarket Market Mappings |
| Strategy help | Strategy Templates |
Read references/bracket-contest.md for full command reference, slot ID format, scoring rules, strategy templates, and the automated fill script.
Step 2: Key Rules
- Authentication required for all write operations (picks, tiebreaker). Run
bullpen loginfirst. - Slot IDs follow the format
R{round}_{region}_{game}. Get exact slot IDs frombullpen polymarket bracket bracket-view <id>. - Team names support fuzzy matching — you can use short names like "Duke", "Illinois", "Michigan St" instead of full university names. The CLI resolves against the server's team list.
- R2+ picks work — for later-round matchups where opponents are TBD, the CLI resolves team names against all tournament entries.
- Round-by-round submission —
fill-chalkandfillsubmit picks round by round (R1 first, then R2-R6) with automatic fallback to individual submission if a batch fails. - Dry-run mode — use
--dry-runonfill-chalkorfillto preview picks without submitting. - Consistency warnings — picking a team in R2+ that you didn't pick to advance from the previous round triggers a warning (non-blocking).
- Tiebreaker is the predicted total points in the championship game. Submit after filling all 63 picks.
- All commands support
--output jsonfor scripting and automation.
Step 3: Execute
Run commands via bullpen CLI. Bracket commands are all under bullpen polymarket bracket.
Quick Command Map
| Intent | Command |
|---|---|
| List open contests | bullpen polymarket bracket contests --status open |
| View contest details | bullpen polymarket bracket view <CONTEST_ID> |
| Display bracket tree | bullpen polymarket bracket bracket-view <CONTEST_ID> |
| View my picks | bullpen polymarket bracket picks <CONTEST_ID> |
| View picks for one round | bullpen polymarket bracket picks <CONTEST_ID> --round 1 |
| Submit one pick | bullpen polymarket bracket pick <CONTEST_ID> --slot <SLOT> --winner "Duke" |
| Preview chalk bracket | bullpen polymarket bracket fill-chalk <CONTEST_ID> --dry-run |
| Auto-fill chalk bracket | bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145 |
| Fill from JSON file | bullpen polymarket bracket fill <CONTEST_ID> --file picks.json |
| View bracket summary | bullpen polymarket bracket summary <CONTEST_ID> |
| Submit tiebreaker | bullpen polymarket bracket submit <CONTEST_ID> --tiebreaker <SCORE> |
| View leaderboard | bullpen polymarket bracket leaderboard <CONTEST_ID> |
| My rank and score | bullpen polymarket bracket status <CONTEST_ID> |
| Game results | bullpen polymarket bracket results <CONTEST_ID> |
| Polymarket mappings | bullpen polymarket bracket markets <CONTEST_ID> |
Examples
Example 1: Fill a Full Bracket (Chalk Strategy)
User says: "Fill my March Madness bracket picking the higher seed every time"
Actions:
- Find the active contest:
bullpen polymarket bracket contests --status open --output json - Auto-fill all 63 picks with chalk (higher seed always wins):
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145 - Review the bracket summary:
bullpen polymarket bracket summary <CONTEST_ID> - Override specific picks if desired:
bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E2 --winner "TCU" - Verify:
bullpen polymarket bracket picks <CONTEST_ID>
Example 2: Fill a Bracket with a Specific Champion
User says: "Fill my bracket with Duke winning it all"
Actions:
- Find contest:
bullpen polymarket bracket contests --status open --output json - Start with chalk base:
bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 152 - Override Duke's path to the championship — work backwards from R6:
bullpen polymarket bracket pick <CONTEST_ID> --slot R6_CH1 --winner "Duke"bullpen polymarket bracket pick <CONTEST_ID> --slot R5_FF1 --winner "Duke"- (continue for Elite 8, Sweet 16, etc.)
- Review:
bullpen polymarket bracket summary <CONTEST_ID> - Verify all 63 picks:
bullpen polymarket bracket picks <CONTEST_ID>
Example 3: Check Standings Mid-Tournament
User says: "How am I doing in the bracket contest?"
Actions:
- Quick overview:
bullpen polymarket bracket summary <CONTEST_ID> - Check your rank:
bullpen polymarket bracket status <CONTEST_ID> - View recent results:
bullpen polymarket bracket results <CONTEST_ID> - See leaderboard:
bullpen polymarket bracket leaderboard <CONTEST_ID> - Compare max possible points vs current leader to assess your path to winning
Example 4: Fill from a JSON File
User says: "I have my picks in a file, submit them all"
Actions:
- Create a picks file (
picks.json):{ "picks": [ {"slot": "R1_E1", "winner": "Duke"}, {"slot": "R1_E2", "winner": "TCU"}, {"slot": "R1_E3", "winner": "Illinois"} ], "tiebreaker": 148 } - Submit:
bullpen polymarket bracket fill <CONTEST_ID> --file picks.json - Team names support fuzzy matching — "Duke", "Illinois", "Michigan St" all work.
- Verify:
bullpen polymarket bracket summary <CONTEST_ID>
March Madness Quick Reference
64 teams, 4 regions (East, West, South, Midwest), 63 total picks
| Round | Games | Pts/Pick | Max Pts |
|---|---|---|---|
| First Round | 32 | 1 | 32 |
| Second Round | 16 | 2 | 32 |
| Sweet 16 | 8 | 4 | 32 |
| Elite 8 | 4 | 8 | 32 |
| Final Four | 2 | 16 | 32 |
| Championship | 1 | 32 | 32 |
| Total | 63 | — | 192 |
Historic upset rates (Round 1):
- 12 over 5: ~35%
- 11 over 6: ~37%
- 10 over 7: ~40%
- 13 over 4: ~21%
- 14 over 3: ~15%
- 15 over 2: ~6%
- 16 over 1: ~1% (has happened once in history)
Troubleshooting
| Error | 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 ("Duke", "UNC") |
| "Ambiguous team name..." | Be more specific — the error lists matching candidates |
| "Warning: ... not picked to advance" | Consistency warning — your later-round pick doesn't match an earlier pick. Non-blocking. |
| "Picks deadline passed" | Contest is closed — check bracket-view for deadline field |
| Command not found | Run bullpen upgrade to get the latest version |
Full Reference
See references/bracket-contest.md for:
- Complete command syntax and all flags
- Full slot ID format specification
- All strategy templates (chalk, upset-heavy, custom champion, contrarian)
- Automated fill script
- Polymarket market mapping usage
Resources
- Docs: cli.bullpen.fi
- Bug reports: github.com/BullpenFi/bullpen-cli-releases/issues
- Support: help.bullpen.fi
- Releases: github.com/BullpenFi/bullpen-cli-releases