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:
1. Find the active contest: bullpen polymarket bracket contests --status open --output json
2. Auto-fill all 63 picks with chalk (higher seed always wins): bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 145
3. Review the bracket summary: bullpen polymarket bracket summary <CONTEST_ID>
4. Override specific picks if desired: bullpen polymarket bracket pick <CONTEST_ID> --slot R1_E2 --winner "TCU"
5. 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:
1. Find contest: bullpen polymarket bracket contests --status open --output json
2. Start with chalk base: bullpen polymarket bracket fill-chalk <CONTEST_ID> --tiebreaker 152
3. 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.)
4. Review: bullpen polymarket bracket summary <CONTEST_ID>
5. 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:
1. Quick overview: bullpen polymarket bracket summary <CONTEST_ID>
2. Check your rank: bullpen polymarket bracket status <CONTEST_ID>
3. View recent results: bullpen polymarket bracket results <CONTEST_ID>
4. See leaderboard: bullpen polymarket bracket leaderboard <CONTEST_ID>
5. 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:
1. Create a picks file (picks.json):
{
"picks": [
{"slot": "R1_E1", "winner": "Duke"},
{"slot": "R1_E2", "winner": "TCU"},
{"slot": "R1_E3", "winner": "Illinois"}
],
"tiebreaker": 148
}
bullpen polymarket bracket fill <CONTEST_ID> --file picks.json
3. Team names support fuzzy matching — "Duke", "Illinois", "Michigan St" all work.
4. 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