
Tendai Moyo
Frontend Architect
Tendai leads browser and frontend innovation at Kavod, building performant web experiences for diverse network conditions.
Why Africa Needs Its Own Sports Platform
Africa is sports-mad. From the passion of Nigerian Premier League matchdays to the fervor of South African rugby, from pickup basketball in Nairobi to marathon training in the Ethiopian highlands, sport is woven into the continent's cultural fabric. Yet African sports fans, athletes, and communities are scattered across generic social platforms that were not designed for the sports experience.
Sportsplex is the dedicated sports social network built for Africa -- a place where fans connect, athletes build their profiles, amateur leagues organize, and live sports come alive with social commentary. This post walks through the product architecture and real-time systems that power the platform.
Social Features: Beyond the Generic Feed
Sportsplex's social layer is purpose-built for sports conversations. While a generic social network gives you a chronological or algorithmic feed, Sportsplex organizes social activity around the entities that matter in sports: teams, matches, leagues, athletes, and venues.
The Sports Graph
At the core of Sportsplex is a graph data model we call the Sports Graph:
// Core entities in the Sports Graph
type SportEntity =
| { type: "team"; id: string; sport: Sport; league: string; country: string }
| { type: "athlete"; id: string; sport: Sport; teams: string[] }
| { type: "match"; id: string; sport: Sport; homeTeam: string; awayTeam: string; datetime: Date }
| { type: "league"; id: string; sport: Sport; country: string; tier: number }
| { type: "venue"; id: string; location: GeoPoint; capacity: number }
| { type: "user"; id: string; followedEntities: string[]; sports: Sport[] };
// Users follow entities, entities relate to each other
interface GraphEdge {
from: string;
to: string;
relationship: "follows" | "plays_for" | "competes_in" | "hosted_at" | "rivals" | "friends";
weight: number;
since: Date;
}When a user follows a team, they automatically see content related to that team's matches, players, league standings, and fan community. The graph structure means we can surface relevant content through multi-hop traversals: "Your followed team's rival just signed a player from a team you also follow" -- the kind of contextual awareness that generic platforms cannot replicate.
Content Types
Sportsplex supports sports-specific content types beyond standard posts:
- Match Reactions: Short-form reactions tied to specific match events (goals, fouls, substitutions). These are displayed in a live timeline alongside the match.
- Predictions: Users predict match outcomes, scorelines, and player performances. Predictions are tracked for accuracy and contribute to a leaderboard.
- Highlights: User-submitted video clips tagged to specific matches and time stamps, creating a crowd-sourced highlight reel.
- Tactical Analysis: Long-form posts with annotation tools for drawing on match screenshots -- popular with the growing African football analytics community.
- Transfer Rumors: A dedicated content type with credibility scoring based on the poster's track record.
Live Match Integration
The centerpiece of Sportsplex's real-time experience is live match integration. During a match, Sportsplex transforms into a second-screen companion.
Real-Time Data Pipeline
We ingest live match data from multiple providers:
- Premium data feeds for major leagues (English Premier League, La Liga, CAF Champions League, PSL, NPFL) providing ball-by-ball or play-by-play data with sub-second latency.
- Community scoring for amateur and lower-tier leagues where professional data feeds do not exist. Verified scorekeepers at matches update scores and events through our app.
- AI event detection from live broadcast streams for leagues where we have broadcast partnerships but no structured data feed.
class LiveMatchEngine:
def __init__(self):
self.event_bus = RedisStreams(cluster="live-events")
self.ws_manager = WebSocketManager(max_connections=500_000)
self.reaction_aggregator = ReactionAggregator(window_ms=5000)
async def process_match_event(self, event: MatchEvent):
# Enrich event with context
enriched = await self.enrich(event)
# Push to all connected clients watching this match
await self.ws_manager.broadcast(
channel=f"match:{event.match_id}",
payload=enriched.to_json()
)
# Trigger reaction aggregation window
self.reaction_aggregator.open_window(event.match_id, event.id)
# Update match state
await self.match_state_store.update(event.match_id, enriched)
async def enrich(self, event: MatchEvent) -> EnrichedMatchEvent:
player_stats = await self.stats_service.get_player_context(event.player_id)
historical = await self.stats_service.get_head_to_head(event.match_id)
return EnrichedMatchEvent(
**event.dict(),
player_context=player_stats,
historical_context=historical,
narrative=self.narrator.generate(event, player_stats, historical)
)The Match Room Experience
During a live match, users enter a Match Room -- a dedicated real-time space that includes:
- Live score and match timeline with all events (goals, cards, substitutions) displayed as they happen
- Reaction stream: A high-velocity feed of short reactions from fans, with sentiment visualization showing the emotional pulse of the crowd
- Polls and predictions: In-match polls ("Will they equalize before halftime?") that resolve automatically based on match data
- Audio rooms: Clubhouse-style live audio discussions moderated by community leaders, running alongside the match
- Stats dashboard: Real-time possession, shots, passing accuracy, and player heatmaps for matches where we have detailed tracking data
Our WebSocket infrastructure handles peak loads of over 200,000 concurrent connections during popular matches, with event delivery latency under 300ms from source to client.
Athlete Profiles
Sportsplex is not just for fans. We are building the platform where African athletes manage their public identity and connect with opportunities.
Profile Features
Athlete profiles on Sportsplex include:
- Career timeline: A structured history of teams, competitions, and achievements
- Performance statistics: Integrated from official league data where available, or self-reported with verification badges
- Highlight reels: Curated video compilations that athletes can share with scouts and agents
- Training logs: Optional public training diaries that fans can follow and aspiring athletes can learn from
- Endorsement and sponsorship visibility: A structured way for athletes to display partnerships and for brands to discover potential ambassadors
Scout and Agent Tools
We provide premium tools for scouts and agents:
- Search and filter: Find athletes by sport, position, age, location, performance metrics, and availability
- Watchlist: Track athletes over time with notification alerts for new highlights or statistical milestones
- Verified contact: A credentialed messaging system that prevents spam while giving legitimate scouts access to athletes
Community Building
Beyond individual social features, Sportsplex fosters community through structured group experiences:
- Fan Clubs: Official and unofficial fan communities with moderation tools, event planning, and shared media galleries.
- Local Leagues: Amateur league organizers can create league structures, manage fixtures, record results, and maintain standings -- all within the platform.
- Training Groups: Runners, cyclists, and fitness enthusiasts form training groups with shared GPS activity feeds, group challenges, and coordinated training schedules.
- Fantasy Leagues: Integrated fantasy sports for African football leagues, driving engagement and deepening fans' connection to matches they might not otherwise watch.
Moderation at Scale
Sports discussions can get heated. Our moderation system combines:
- AI content filtering: Real-time classification of toxic content, hate speech, and targeted harassment, with models fine-tuned on African English, pidgin, and local language patterns
- Community moderators: Empowered volunteer moderators with tiered permissions for each fan club and community
- Reputation system: Users build reputation through constructive participation, unlocking privileges like posting in verified-only threads and creating community events
- Cool-down mechanics: During high-emotion match moments, the system can temporarily slow-mode comment sections to prevent pile-ons
Growth and Traction
Sportsplex launched 8 months ago and has grown to 1.2 million monthly active users across 9 countries. Match Rooms regularly host 50,000+ concurrent users for major fixtures. Our athlete profile directory now includes over 15,000 verified athletes across football, basketball, athletics, rugby, and cricket.
The vision for Sportsplex is to become the operating system for African sports -- the single platform where every fan, athlete, coach, scout, and league organizer lives. We are just getting started.
Try Sportsplex today
Discover how Sportsplex can help you build better, faster. Get started for free and see the difference.
Get Started

