AI-Powered Pickleball Partner Finder

Find your optimal tournament partner with composite scoring, DUPR integration, AI coaching, and MCP server support. One CLI to rule the court.

PyPI Python 3.12+ MIT License MCP compatible

Quick Look

See what CourtIQ outputs in seconds.

courtiq analyze
$ courtiq analyze --tournament "Desert Smash 4.0+" --me "Esteban C"

 Loaded 24 players from Swish Tournaments
 Enriched 22/24 via DUPR  (2 unrated skipped)
 Analysis complete

┌─────────────────────────────────────────────────────────────┐
  Partner Recommendations for Esteban C (4.31)               
├─────────────────────────────────────────────────────────────┤
                                                             
   Marcus T          4.28    ████████████████████ 87.4  
     Rating 93  Synergy 88  Field 79  Reliable       
                                                             
   Diana R           4.35    ███████████████████· 82.1  
     Rating 96  Synergy 71  Field 82  Reliable       
                                                             
   Jake W            4.22    ██████████████████·· 78.6  
     Rating 85  Synergy 76  Field 71  Reliable       
                                                             
└─────────────────────────────────────────────────────────────┘

Tip: run courtiq coach for AI-powered follow-up analysis

Features

Everything you need to find the right partner and win.

Smart Partner Matching

Composite scoring across rating, synergy, field strength, and reliability to find your ideal doubles partner.

DUPR Integration

Live ratings, match history, and reliability data pulled directly from DUPR for every player.

Tournament Import

Import brackets from Swish Tournaments, CourtReserve, CSV files, or manual JSON entry.

DUPR Forecast

Predict your rating change before you play — simulate matchups against any opponent team.

AI Coach Mode

LLM-powered analysis and follow-up Q&A with Anthropic or OpenAI for tactical insights.

MCP Server

Plug into Claude Desktop as a tool — 5 tools over stdio for seamless AI integration.

How It Works

A composite score built from four weighted components.

Composite = 0.40 × Rating + 0.30 × Synergy + 0.15 × Field + 0.15 × Reliability
40%

Rating

Combined DUPR rating percentile vs field, with gap penalty for mismatches.

30%

Synergy

Win rate together, recency-weighted results, and score margin analysis.

15%

Field Strength

Expected win probability against all possible opponent team combinations.

15%

Reliability

Rating confidence: Reliable, Provisional, or Unrated status plus volume.

Import Sources

Bring your player data from anywhere.

🏆
Swish Tournaments
Auto-scrape brackets and results
🏟️
CourtReserve
Club league data import
📄
CSV
Spreadsheet player lists
{ }
JSON
Manual data entry format

Quick Start

Up and running in under a minute.

# Install with pip (or uv, pipx)
pip install courtiq

# Verify installation
courtiq --version
# Interactive configuration wizard
courtiq setup

# Set your DUPR credentials
courtiq setup --dupr-email you@example.com

# Optional: enable AI coaching
courtiq setup --llm-provider anthropic
export ANTHROPIC_API_KEY="sk-ant-..."
# Import a tournament and analyze
courtiq import --source swish --url <tournament-url>
courtiq analyze --tournament "Desert Smash 4.0+" --me "Your Name"

# AI-powered follow-up
courtiq coach --tournament "Desert Smash 4.0+"

# Or use with Claude Desktop via MCP
courtiq serve