CourtIQ 🎾

One-liner: Smart tennis training app — helps amateur players learn and practice “percentage plays” (the high-probability shot choices that win more points), then tracks and analyzes their decision-making over time.

Origin: Moved here from uloza/courtiq (now runquest/courtiq, private). A second, uncommitted local repo courtiq.club holds the data pipeline and content-generation work (see below).

Stack: Rails 7.2 + Hotwire/Turbo, Tailwind CSS, Docker-based dev environment, PWA (offline-capable).

Core loop:

Roadmap (from MILESTONES.md):

Actual status as of 2026-09-23 (verified against GitHub):

Next steps to launch (from the 2026-09-23 B2B-pivot brainstorm):

  1. Finish Phase 1 in courtiq.club (run 04_normalize.py / 05_validate.py, hit the ≥15/20 PASS bar) so the situation library has real data instead of a schema.
  2. Decide positioning before building further: sell to individual amateur players (consumer, high-volume) vs. sell to coaches/academies (B2B, per-seat/per-academy pricing, far fewer customers needed for meaningful revenue — see [[courtiq-academy-pivot notes in raw ideas]]).
  3. If going B2B: add a coach-facing multi-student dashboard on top of the existing practice-logger/analyze loop, and package pricing per academy rather than per player.
  4. Publish the already-generated Instagram content under the courtiq.club brand to start building an audience/funnel regardless of which path is chosen.
  5. Line up 5-10 target academies or coaches for pilot outreach/demo calls once the dashboard exists.

Status: Real, active build — not a raw idea. Foundation is real and working; the situation-library data and every feature epic past Foundation still need to be built.