One app. Every sport. Every team. One player identity.
The operating system for grassroots sports
Grassroots sports is a $8B market running on the tools of 2005.
Jake is on his club team, a tournament team, and his school team. None of them talk to each other. Three profiles. Three sets of data. Zero connection.
Every team tracks differently. Some use spreadsheets. Some use whiteboards. Most just guess. Nothing connects. Nothing accumulates.
Every new season, every team re-enters the same players. Same names. Same phone numbers. Same emergency contacts. Every. Single. Year.
Scoring apps lose data, go offline, or just disagree with each other. Parents argue in the group chat. Trust erodes. Nobody's happy.
"Grassroots sports runs on spreadsheets, group chats, and hope."
What if a player had ONE identity across every team they ever play for?
What if scores appeared live for every parent, everywhere, the instant they happen?
What if a team was a franchise — with its own history that travels with it?
What if an AI assistant could run your entire league?
The same data flows through every feature. Enter a game once — it powers ticketing, scoring, standings, stats, player profiles, and scout discovery.
Flat annual fee based on venue capacity — never per-ticket. Teams keep 100% of upside when they sell out. Dynamic pricing for rivalry games, holidays, opening day. Locked financial records. Team-branded checkout. No more giving margin to Eventbrite.
League-wide schedule management. Auto-create ticketing events from the schedule. Standings, division rankings, rainout tracking, playoff brackets. Embeddable widgets for league and team websites. Commissioner dashboard with real-time status across all teams.
Tap-and-score interface designed for volunteers. Works offline. Every play updates live standings, box scores, and player stats in real time. Fan-facing Gamecast embedded on team sites with sponsor placements. AI-generated game recaps from verified play-by-play.
Every scored athlete gets a persistent verified profile that travels across teams, leagues, and seasons. Players claim their profile. Parents upgrade for recruiting tools, highlights, and shareable verified athletic resumes. Freemium: Free → $9.99 → $29.99 → $79.99/mo.
College recruiters and pro scouts subscribe for access to verified, opt-in player data. Search by position, stats, region, competition level. Filter by players who opted into discovery. Video evaluation, watch lists, CRM export. $29 → $79 → $199/mo.
Players choose whether their verified stats enter the scout-accessible data pool. Opting in means recruiters can discover them. Opting out means their profile stays private. It's their data. Their choice. The opt-in pool is what makes the scout network valuable — verified, consent-driven, official data.
One game entry. Six outputs. Ticketing event. Scorekeeping session. Live Gamecast. Standings update. Player stats. AI recap. All from the same data — no duplicate work, no manual updates, no disconnected spreadsheets.
Independent entity
Joins competition
Enters tournament
Hosts own event
History preserved
Stats accumulate across every team:
Parents own the profile. Teams own the roster spot. Platform keeps it clean.
One scorekeeper. Every parent watching. Instantly.
Scorekeeper hits the button
Recorded permanently
Sent to everyone watching
Instant on every device
Mom at work
Grandma at home
Dad coaching 1st
Siblings in the car
Any sport. Any stat. Coaches define what matters. StatPal tracks it.
Run your entire league from your phone. Schedules, standings, playoffs — done. No more 2am spreadsheet sessions.
Import your roster once. Use it everywhere. No more copy-pasting between apps. Players carry their identity from team to team.
Watch games live from anywhere. See your kid's stats grow season over season. Sign waivers in one tap. No more paper forms.
One-tap scoring that never loses data. Even offline. Works in basement gyms with zero signal. Syncs when you walk outside.
A platform designed from day one for the realities of grassroots sports.
COPPA compliant from day one. Parents control their kid's data. Period. No selling, no sharing, no surprises. Built-in, not bolted-on.
Smart assistants that can schedule games, import rosters, and manage leagues. Not replacing coaches — amplifying them. Let the AI handle the busywork.
Multi-language, multi-sport, multi-currency from day one. Baseball in Texas, cricket in Mumbai, rugby in Auckland — one platform.
Score in a basement gym with no signal. Score on a field with spotty coverage. Score on a plane (okay, maybe not). Syncs the moment you're back online.
Core platform
Login & players
Games & stats
Live + smart
Open to all
The full investor pitch — revenue model, flywheel, ROI, and go-to-market strategy.
View the Business Case →Layered architecture with clear separation of concerns. APIato containers segment business capabilities while PostgreSQL remains the durable source of truth.
Mobile + web client
REST API /api/v1, modular containers, policies, tenant context
LLM, MCP proxy, recaps
Single DB, JSONB templates
WebSocket fan-out, live scoring, presence channels
Cache, queues, pub/sub
Organizations have capabilities (not a single type enum). A club can also be a team, a team can host tournaments. Roles define what an org can do.
Competitions generalize leagues, tournaments, showcases, friendlies, and brackets into a single coordination unit. Teams enter via team_participations.
Global canonical identity (platform-owned) is separate from team roster membership (team-owned). Participation roster entries are competition-specific subsets with guest/loan support.
• One canonical record per human
• user_id nullable (youth without accounts)
• external_ids JSONB for import dedup
• player_guardians for COPPA consent
• player_merge_suggestions + player_merges
• team_roster_memberships with joined_at/left_at
• status: active, guest, trialist, loaned_out
• participation_roster_entries (competition subset)
• roster_source: canonical, guest, loan, replacement
• eligibility_verified, waiver_status
Persist-first architecture. Game events are written to PostgreSQL in a transaction that assigns sequence numbers. Domain events are emitted post-commit. Reverb broadcasts compact versioned payloads. Clients detect gaps and refetch via REST sync endpoint.
Ionic client
Permission, org context, scorer lock
game_event + sequence in same TX
Post-commit domain event
Reverb game.{id}.scores
Client applies or /sync?since=
Two-tier RBAC. Spatie defines permission vocabulary; StatPal adds tenant-aware PermissionService with Redis caching, hierarchy traversal, and game-scoped authorization.
Cross-tenant access with audit trail. Support is read-only.
Scoped to active org context. Scorekeeper is game-scoped.
Model Context Protocol server as authenticated proxy over Laravel API. Read-only tools first (list games, query standings). Write tools added after scoring APIs support idempotency. All actions are permission-checked and auditable.
• list_games, get_standings
• query_roster, get_player_stats
• list_competitions
• create_team, import_roster
• schedule_games
• score_event (idempotent)