Problem Vision Franchise Identity Scoring Sports Who It's For Opportunity Built Different Roadmap
🏀 🏒 🏈 🏐 🥍 🎾

StatPal

One app. Every sport. Every team. One player identity.

The operating system for grassroots sports

2M+ Youth teams
50M+ Players
$8B Sports tech market
0 Unified platforms
The Problem

The Mess No One Fixed

Grassroots sports is a $8B market running on the tools of 2005.

📋

Same kid, 3 different rosters

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.

📊

Stats in a Google Sheet somewhere

Every team tracks differently. Some use spreadsheets. Some use whiteboards. Most just guess. Nothing connects. Nothing accumulates.

🔄

The annual roster rebuild

Every new season, every team re-enters the same players. Same names. Same phone numbers. Same emergency contacts. Every. Single. Year.

😤

Dad scored 12, app says 8

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."

The 10x Vision

What If…

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?

That's StatPal.

What StatPal Does

Six Capabilities. One Platform.

The same data flows through every feature. Enter a game once — it powers ticketing, scoring, standings, stats, player profiles, and scout discovery.

🎫

Ticketing

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.

Saves $31K per team per season
⚙️

League Operations

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.

One schedule powers everything
📊

Live Scoring & Gamecast

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.

One person taps. Everyone watches.
👤

Player Identity & Profiles

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.

Parents invest in their kid's future
🔍

Scout Network

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.

Verified data beats parent-submitted data
🔒

Player Opt-In Data Pool

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.

Consent-first data model

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.

Core Insight

Teams Are Franchises.
Not Line Items in a League Spreadsheet.

YOUR TEAM Spring League league_season Summer Showcase tournament School Team friendly_series Pickup Games Your team. Your roster. Your history. You decide where to play.

Team Forms

Independent entity

Spring League

Joins competition

Summer Showcase

Enters tournament

Internal Tourney

Hosts own event

All Stats Forward

History preserved

Player Identity

Jake Smith Is Jake Smith.
Everywhere.

❌ Before StatPal

📋 Jake S. — Club Roster
No DOB, no guardian, no link
📊 J. Smith — Tournament App
Different email, different stats
📝 Smith, Jake — School Team
Paper form, typed in wrong

✅ After StatPal

👤 Jake Smith — One profile
All teams, all stats, all history
📊 Club team: .340 avg, 12 RBI
🏆 Showcase: 3 HR, .400 OBP

Stats accumulate across every team:

Spring .340
+
Summer 3 HR
=
Season .355, 8 HR

Parents own the profile. Teams own the roster spot. Platform keeps it clean.

Live Scoring

Tap. Done. Everyone Sees It.

One scorekeeper. Every parent watching. Instantly.

Scorekeeper's phone
Single
👆

Tap

Scorekeeper hits the button

💾

Save

Recorded permanently

📡

Broadcast

Sent to everyone watching

📱

Seen

Instant on every device

👩‍💼

Mom at work

👵

Grandma at home

🧑‍🤝‍🧑

Dad coaching 1st

👫

Siblings in the car

⚡ Works offline. Never loses a play. Syncs when you're back online.
Multi-Sport

Not Just Baseball.

Any sport. Any stat. Coaches define what matters. StatPal tracks it.

Baseball
🏀Basketball
Soccer
🏒Hockey
🏈Football
🏐Volleyball
🥍Lacrosse
🥎Softball
🎾Tennis
🏉Rugby
🏏Cricket
More...
Who It's For

Built for Everyone in the Game

🏆

League Commissioner

Run your entire league from your phone. Schedules, standings, playoffs — done. No more 2am spreadsheet sessions.

⚙️

Team Manager

Import your roster once. Use it everywhere. No more copy-pasting between apps. Players carry their identity from team to team.

👨‍👩‍👧

Parent

Watch games live from anywhere. See your kid's stats grow season over season. Sign waivers in one tap. No more paper forms.

📱

Scorekeeper

One-tap scoring that never loses data. Even offline. Works in basement gyms with zero signal. Syncs when you walk outside.

The Opportunity

A Massive Market with Zero Winners

$8.5B Sports tech market by 2027
73% Grassroots teams still on spreadsheets
0 Platforms that unify identity, scoring & management
92% Parents who want live score updates
Built Differently

Not Another Scoring App.

A platform designed from day one for the realities of grassroots sports.

🔒

Privacy First

COPPA compliant from day one. Parents control their kid's data. Period. No selling, no sharing, no surprises. Built-in, not bolted-on.

🤖

AI Powered

Smart assistants that can schedule games, import rosters, and manage leagues. Not replacing coaches — amplifying them. Let the AI handle the busywork.

🌍

Born Global

Multi-language, multi-sport, multi-currency from day one. Baseball in Texas, cricket in Mumbai, rugby in Auckland — one platform.

📡

Works Offline

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.

Roadmap

Where We're Going

Foundation

Core platform

Auth & Identity

Login & players

Core Scoring

Games & stats

Real-time & AI

Live + smart

Launch 🚀

Open to all

💰

How StatPal Makes Money

The full investor pitch — revenue model, flywheel, ROI, and go-to-market strategy.

View the Business Case →

🏗️ Architecture Stack

Layered architecture with clear separation of concerns. APIato containers segment business capabilities while PostgreSQL remains the durable source of truth.

Ionic 8 / Angular

Mobile + web client

Laravel 12 + APIato v13

REST API /api/v1, modular containers, policies, tenant context

FastAPI AI Service

LLM, MCP proxy, recaps

PostgreSQL 16

Single DB, JSONB templates

Laravel Reverb

WebSocket fan-out, live scoring, presence channels

Redis 7

Cache, queues, pub/sub

🏢 Organization Model

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.

BC Selects role: club 14U Team role: team 15U Team role: team West Coast League role: league parent_org_id enables Club → Team hierarchy organization_roles: club, team, league, tournament_host, family, governing_body, venue

🏆 Competitions Model

Competitions generalize leagues, tournaments, showcases, friendlies, and brackets into a single coordination unit. Teams enter via team_participations.

Competition organizer + season + rules league_season tournament showcase bracket friendly_series internal_league

👤 Player Identity Split

Global canonical identity (platform-owned) is separate from team roster membership (team-owned). Participation roster entries are competition-specific subsets with guest/loan support.

Global Player (platform)

• 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 (team-owned)

• 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

⚡ Real-Time Scoring Flow

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.

Tap

Ionic client

Validate

Permission, org context, scorer lock

Commit

game_event + sequence in same TX

Emit

Post-commit domain event

Broadcast

Reverb game.{id}.scores

Render

Client applies or /sync?since=

🔐 Roles & Permissions

Two-tier RBAC. Spatie defines permission vocabulary; StatPal adds tenant-aware PermissionService with Redis caching, hierarchy traversal, and game-scoped authorization.

Platform Roles

StatPal Admin StatPal Support

Cross-tenant access with audit trail. Support is read-only.

Organization Roles

League Admin Team Manager Scorekeeper Staff Player Parent

Scoped to active org context. Scorekeeper is game-scoped.

🤖 MCP Server Architecture

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.

Read Tools (Phase 1)

• list_games, get_standings

• query_roster, get_player_stats

• list_competitions

Write Tools (Phase 2)

• create_team, import_roster

• schedule_games

• score_event (idempotent)