Strike-Zone Heatmap
Server-aggregated from exact-location pitches into a 3×3 in-zone grid plus four chase corners. Cells shade from chip-grey to brand-cardinal as count climbs.
Capture every bullpen pitch on your phone, then see strike percent, command, velocity, and rolling workload counts on the web — for one pitcher or your whole staff.
Pick one pitcher or three. The session opens on your phone with each pitcher's recent workload visible on the start screen.
Easy mode: tap the catcher's-view zone exactly where the pitch crossed. Aim mode: tap target, then tap result — the app stores both for command analytics. Multi-pitcher? Switch active pitcher with one pill tap.
End the session — five native-SVG charts render automatically. Print it, or send a magic link to a parent for a sanitized read-only view.
The Pitching tab in the CompeteHQ mobile app is purpose-built for the mound. Tap, tap, end. Idempotent saves. Offline-first.
Drill into any pitcher and see the same five charts coaches print on game day. All native SVG — no chart library, no flicker, no client JS.
Monitor every pitcher's workload across all their teams.
Team Pitching Hub — /teams/lakers-12u/pitching
Per-Pitcher Detail — /teams/lakers-12u/pitching/cole-reyes
Every pitch is keyed to the athlete, not the team. Rolling totals over 7 days, 30 days, and the trailing season follow the kid wherever they play — so the head coach standing on the mound today sees the truth, regardless of which jersey caused the load.
Rolling 7-day pitch count for the athlete across every team they're rostered on.
Trailing 30-day total — handy when the season ramps up and weekends pile up.
Season-long roll-up. Surfaces who had a heavy spring and who is still building back from rest.
Other trackers force one session per pitcher. CompeteHQ lets a pitching coach run a side-by-side bullpen with two or three pitchers in the same session — every pitch is tagged to the right athlete, and each pitcher's workload thresholds are enforced individually.
After a bullpen, generate a magic link. The pitcher's parent gets a sanitized report — just first name plus last initial — with the heatmap, pitch mix, and a pitch-by-pitch table. Links expire in 30 days, are SHA-256 hashed at rest, and can be revoked instantly.
Every chart you'd build in a spreadsheet, generated automatically from a bullpen you tracked on your phone.
Server-aggregated from exact-location pitches into a 3×3 in-zone grid plus four chase corners. Cells shade from chip-grey to brand-cardinal as count climbs.
Sorted-by-frequency wedges, deterministic per-pitch-type colors, total in the center. Mirrors the mobile review screen.
Per-session scatter with one trendline per pitch type (drawn only when ≥ 3 sessions exist). Shows whether the pitcher is gaining velo or fading.
Cardinal line + dots per session, with a green 60% reference line — the typical youth-baseball benchmark for tournament-ready strike percentage.
Aim-mode only. Filled dots show command percent for sessions with target taps; open dots break the line on sessions with no targets.
MMKV persistence + idempotent clientPitchId mutations. Drop signal at the field — every pitch still saves, and replays cleanly when you reconnect.
Rolling pitch counts roll up across every team a kid plays on. A coach on Team B sees the 80 pitches a pitcher threw for Team A yesterday — keyed off the athlete, not the jersey.
Tap the catcher's-view zone exactly where the pitch landed — not a 13-zone bucket. Pitches persist at the precise (x, y), so the per-pitch dot plot is true-to-tap and the 3×3 heatmap and command analytics roll up server-side.
App-default → team override → athlete override resolution. A pitcher's curveball stays a curveball even when they get called up to a new team.
AthleteProfile follows the player team-to-team and season-to-season. Workload aggregates and pitch types travel with the athlete, not the roster.
Letter-width browser-print bullpen session and pitcher progression reports, plus magic-link guest share for parents. No PDF library required.
Pitches per session, strike percent, command, velocity, pitch mix, a per-pitch dot plot, and a strike-zone heatmap — plus rolling totals over 7 days, 30 days, and the trailing season. Counts roll up across every team the athlete plays on.
Yes. Add two or three pitchers to a single bullpen and tag each pitch to the correct athlete. Every pitcher's totals are computed individually, and the review screen splits the session into per-athlete tabs.
Five native SVG charts per pitcher: a strike-zone heatmap (3×3 in-zone grid plus four chase corners, aggregated from exact-location pitches), a pitch-mix donut, a velocity-by-pitch-type scatter with trendlines, a strike-percentage trend with a 60% target line, and a per-pitch-type command chart. All five are visible in the per-pitcher detail page on web.
Yes. Bullpen capture is offline-first. Pitches are written to MMKV-backed local storage with a client-generated ID and queued for sync. Mutations are idempotent server-side via clientPitchId so retries never double-count.
Coaches tap exactly where the pitch crossed the plate on a catcher's-view strike zone. Pitches are recorded at the exact (x, y) coordinate the coach taps — never snapped to a zone bucket. Per-bullpen review screens render those taps as a continuous dot plot. The classic 3×3 strike-zone heatmap (plus four chase corners outside the rect) is computed server-side from the same coordinates, so coaches still get the familiar count grid for command analytics — without losing the underlying precision.
From the bullpen review screen, generate a magic link. The link opens a sanitized public page showing the pitcher's first name plus last initial, the heatmap, the pitch-mix donut, and a pitch-by-pitch table. Tokens are SHA-256 hashed at rest, expire in 30 days, and can be revoked at any time.
The data model is ready for it — every pitch supports velocity, spin rate, break, and release-point fields plus an importSource tag — but there is no Pocket Radar or Rapsodo client in the v1 release. Manual entry on the phone is the supported capture path today.
Free during beta. Mobile and web included. Set up your team in under five minutes.
Request Access