Case Study Sports AI ML Ensemble Live at mmamodel.ai

UFC Fight Prediction
Built From Scratch.

The only UFC prediction platform that owns its data, trains its own models, and generates AI fight narratives.

mmamodel.ai — a fully proprietary sports intelligence platform built by IPS from the ground up. Every fight in the database. Every model trained in-house. Every narrative generated by AI.

8,500+
Fights in database
5-Model
ML ensemble
70K+
Stat rows owned
Weekly
Auto-retrain
01 / The Problem

UFC analytics was stuck in the past.

UFC analytics has historically been fragmented and shallow. Mainstream sites — UFC.com, Tapology — show raw career totals with no predictive modeling. Betting lines are set by oddsmakers, not public ML models. Fight predictions are largely editorial opinion with no quantitative backing.

mmamodel.ai closes this gap by treating every fight as a structured prediction problem: who wins, why, and where the betting market is wrong. That requires owning the data, training the models, and automating the entire pipeline end-to-end. Nothing outsourced. Nothing rented.

No public ML models Fragmented raw data Editorial opinions only Market inefficiencies
02 / The Build — Data Layer

We built the database.
Nobody gave it to us.

IPS aggregated all fight data from scratch — 8,500+ fight results, 70,000+ per-fight stat records, 1,564 fighter profiles. No vendor supplies it. Every row is owned outright. The data moat is the business moat.

-- Supabase PostgreSQL schema (owned)
TableRowsDescription
ufc_fight_results_v28,533Full fight history + outcomes
fighter_fight_stats69,576Per-fighter per-fight stats
fight_stats_striking_v270,696Striking breakdown per fight
fight_stats_clinch_v270,696Clinch control & strikes
fight_stats_ground_v270,696Grappling & ground control
fighter_profiles1,564Complete fighter metadata
Supabase PostgreSQL backbone
Every table in a self-owned Supabase instance. Row-level security, fully indexed, replicated automatically. No CSV exports. No third-party data subscriptions that can disappear overnight.
4 GitHub Actions ingestion workflows
Data ingestion, cleaning, validation, and model retraining are all automated. Every new fight card is parsed, normalized, and committed within hours of the event. Zero manual intervention after setup.
Full ownership, forever
This data took years to aggregate. No vendor can pull the plug. The moat compounds with every fight card added.
03 / The Build — ML Pipeline

Four Elo dimensions.
Five stacked models.

Most sports models use one rating. We run four simultaneous Glicko-2 ratings per fighter, then feed them into a 5-model stacked ensemble with temporal integrity enforced by architecture. 200 Optuna trials per model. Zero future data leakage.

4-Dimensional Glicko-2 Rating System — each fighter, each dimension, tracked independently

Overall
Composite fight rating across all domains. Tracks Rating Deviation (uncertainty) and Volatility (consistency) per fighter over their entire career history.
Striking
Isolated standup performance. Tracks accuracy, output volume, and defensive metrics entirely separately from grappling. A one-dimensional striker gets a very high striking Elo.
Grappling
Takedown success rates, control time, submission offense and defense — scored completely independently. Captures wrestling specialists the composite rating misses.
Finishing
Margin-of-victory scaled finish quality. KO Round 1 = 1.0, late KO = 0.8, submission = 0.85, dominant decision = 0.65, split = 0.40.
# Margin-of-victory scaling applied to all four Glicko-2 Elo updates
FINISH_SCALE = {
  "KO_round_1":       1.00,  # Dominant early finish — maximum rating transfer
  "KO_late":           0.80,  # Later round KO
  "submission":        0.85,  # Technical finish via grappling
  "dominant_decision": 0.65,  # Clear winner on all cards
  "split_decision":    0.40,  # Contested result — minimal Elo change
}

5-Model Stacked Ensemble — meta-learned by Ridge Logistic Regression on out-of-fold predictions

LightGBM
Layer 1
XGBoost
Layer 1
CatBoost
Layer 1
Logistic Regression
Layer 1
Siamese Neural Net
Layer 1
Ridge LogReg (meta)
Final
200
Optuna trials per model
90-day
CV purge buffer
0
Future data leakage
67.6%
Held-out accuracy
0.727
AUC
0.598
Log loss
0.015
ECE (calibration)
<0.6%
Symmetry deviation
04 / The Build — Product Layer

What users actually get.

A FastAPI prediction server on Railway feeds a Next.js 13 frontend on Vercel: 1,300+ fighter profiles, event pages with AI predictions, 1v1 matchup pages with radar charts, betting value analysis, pick leaderboards, and LLM-generated fight narratives via Claude Sonnet.

FastAPI Prediction Server

Railway-hosted POST /predict endpoint. Accepts two fighter IDs, returns win probability, method breakdown, and confidence intervals. Sub-200ms response time. Full 5-model ensemble loaded in memory at startup.

📊

Next.js 13 Frontend

1,300+ fighter profiles, event pages, 1v1 matchup pages with Nivo radar charts, pick leaderboards, betting value analysis comparing model fair odds to market lines, and a custom any-vs-any matchup tool.

✍️

LLM Fight Narratives

Claude Sonnet via OpenRouter generates fight breakdowns in natural language from structured model features. Every prediction card includes an AI-written narrative explaining matchup dynamics and the statistical path to victory.

Full Tech Stack

LayerTechnologyDeployment
FrontendNext.js 13 + TypeScript + Tailwind CSSVercel (free tier)
ML PipelineLightGBM, XGBoost, CatBoost, PyTorch, scikit-learn, Optuna, SHAPGitHub Actions (weekly retrain)
Prediction APIFastAPI (Python)Railway ($5/mo)
DatabaseSupabase PostgreSQL8,500+ fights, 70K+ stat rows
CI/CDGitHub Actions4 automated workflows
LLMClaude SonnetOpenRouter API
Auth + PaymentsSupabase Auth + StripeManaged
ChartsRecharts, NivoClient-side rendering
PythonLightGBMXGBoost CatBoostPyTorchscikit-learn OptunaSHAPFastAPI Next.js 13TypeScriptSupabase PostgreSQLRailwayVercel GitHub ActionsClaude SonnetStripe RechartsNivoOpenRouter
05 / What Made It Hard

Five things most teams
would not do.

The moat is not the code. The moat is the compounding consequence of decisions the competition avoided because they were too slow, too expensive, or required full ownership to execute correctly.

01
We own the data — 8,500 fights, 70,000 stat rows
Not a feed. Not a subscription that disappears if we miss a payment. This took years to build and cannot be replicated from any public API. The data moat is the business moat, and it compounds with every event added to the database. No competitor can build this in three months.
02
4-dimensional Elo — four Glicko-2 ratings, running simultaneously
Most sports ML uses one Elo. We run four simultaneous Glicko-2 ratings per fighter (overall, striking, grappling, finishing), each independently tracking Rating Deviation and Volatility. This isolates dimensional advantages that composite ratings obscure entirely. A wrestler with weak striking gets two very different numbers — and the model uses both.
03
Temporal integrity — purged 90-day walk-forward cross-validation
Most sports ML projects accidentally leak future data during training and report inflated back-test accuracy. Ours is structurally prevented at the data split level. Every training window uses a purged 90-day buffer before the evaluation period, ensuring no fighter information from near-future fights contaminates the historical training set. The reported accuracy is the real accuracy.
04
Automated everything — zero manual operations required
Four GitHub Actions workflows handle data ingestion, feature engineering, model retraining, evaluation, and deployment. The full 5-model ensemble retrains weekly with zero human interaction. The platform is self-maintaining post-launch. No developer needs to click a button after a fight card to keep it current.
05
Commodity infrastructure — value in models, not servers
Railway at $5/month. Vercel free tier. Supabase. The entire production stack costs less per month than a tank of gas. The value lives in the trained models and proprietary data — not the servers. Own the intelligence, rent the compute. This is the IPS design philosophy applied to every platform we build.
What's next

Ready to build something
like this?

IPS builds custom data platforms, ML pipelines, and AI-powered products from scratch. No vendor lock-in. Full code ownership. We have done it in sports analytics, congressional intelligence, cannabis CRM, and enterprise sales AI. We can do it in your vertical too.