As a fair-weather Anaheim Ducks fan who hasn't seen my team make the playoffs in eight years, I'll admit that this playoff run snuck up on me. With the Ducks heading into a pivotal Game 6, I decided now was the right time to get up to speed. Although our team at South Shore Analytics already built an NHL Dashboard, what I really wanted was the ability to have a conversation with the database and ask questions about my team like I was talking to a knowledgeable friend at a bar. So of course, we decided to connect our data warehouse to Claude and see what would happen.

Article content

Connecting Snowflake to Claude

The setup is more straightforward than you might think. We connected our Snowflake warehouse to a Claude Project through an MCP (Model Context Protocol) connector, then layered context to turn a generic LLM into a sports-data analyst that actually knows our schema. Two things made it work:

First, a system prompt. The Project is configured as an "NHL Sports Data Analyst" with explicit instructions to reference the dbt project and schema files before writing queries, to surface storylines (not just numbers), and to flag uncertainty when a question can't be answered cleanly from the warehouse. It's the same pattern as onboarding a junior analyst: give them the docs, give them the role, let them work.

Second, schema context. Our column descriptions, model documentation, and table relationships all already live in our dbt_project.yml and schema.yml files at the mart level. That's the same documentation our analysts use, so instead of duplicating effort, we fed it directly into the Project as context. Claude now knows what INT__TEAM_SEASON_STATS_REGULAR is, what OPPONENT_TEAM_KEY joins to, and which columns are season-level vs. game-level.

That set the foundation for everything that followed.

Catching Up on My Team

I asked Claude to catch me up on the Ducks ahead of these playoffs, and within a single conversation I had the player-level stories pulled instantaneously.

Cutter Gauthier put up 41 goals as a 22-year-old, making the trade from Philadelphia look like a steal. Leo Carlsson posted 29 goals and 38 assists at age 21, already establishing himself as the 1C of the future. And in the postseason, Jackson LaCombe is tied for fifth in the entire NHL in scoring with 8 points through 5 games. Underneath all of it sits a "comeback identity" that showed up in the regular season data: the Ducks were tied with Montreal for an NHL-best 26 comeback wins.

Every one of those data points came straight from our Snowflake warehouse. The MCP took the raw stats and built the narrative I needed: a young, fearless Ducks team that fights back, led by a core that's arrived ahead of schedule.

Article content

Going Deeper: Oilers vs. Ducks, Game 6

From there, I wanted to see where the Ducks stack up against the Oilers and the rest of the league. So we ran benchmark analytics using derived statistics from our Snowflake warehouse.

Article content

A Goals For/GP vs. Goals Against/GP scatter gave us a four-quadrant view of the league. Colorado sits alone in the elite quadrant (best offense and best defense). The Ducks land in the run-and-gun quadrant: top-10 offense, bottom-tier defense. Exactly the team identity we suspected.

Then came the question every fan asks when elimination is on the line: what are our odds? We tasked the Claude interface to benchmark both teams and build advanced statistics: Corsi For % (CF%), Fenwick For % (FF%), and Expected Goals For % (xGF%).

For anyone unfamiliar with these statistics: CF% is a team's share of all shot attempts (on-goal, missed, and blocked) while on the ice, essentially a puck-possession proxy. FF% is the same thing but excludes blocked shots, giving a cleaner read on who's generating real shot pressure. And xGF% weights a team's share of shot attempts by location quality, so a slot chance counts more than a blue-line point shot.

We don't have a trained shot-quality model in the warehouse, so Claude built a transparent location-based xG proxy from this season's actual shot outcomes (slot shots converting at roughly 13.6%, point shots at roughly 2%) and flagged it as a proxy.

The result made me feel better about our chances: Anaheim is the territorially dominant team by a wide margin.

Article content

The Ducks are attempting more shots, getting more through, and getting them from more dangerous locations. Blending those advanced statistics with regular season and postseason performance, the model predicts roughly a 57% Anaheim win probability for Game 6, despite the sportsbooks listing the Ducks as +115 underdogs.

Whether the model ends up right or wrong gets settled at the Honda Center. But the point isn't really whether the Ducks win. The point is that in a single conversation, we were able to learn the key storylines for my team, build a model to understand how we match up against the competition, and predict our probability of winning based on advanced metrics. All from a natural-language conversation with our own data.

Why This Matters Beyond Hockey

It's fun that I can pull instantaneous answers about my favorite team, but the real value of the AI tool is how it translates to business operations:

  • A CEO asking "which clients are at churn risk and why?" and getting an answer in 30 seconds without pinging the BI team
  • An operator asking "what's the deal velocity on our top three accounts this quarter?" and getting it before the next meeting starts
  • An analyst asking "build me a derived metric for customer health, weighted by usage and support tickets" and getting both the SQL and the visualization in one shot

But here’s the catch: what separates the teams who can ask those questions and get a reliable answer from the teams who get hallucinations is structured, cleaned, well-documented data at the source. The MCP is only as good as the warehouse it's pointed at, and that's the part most companies haven't built yet.

If you want to play with open-source MCPs, check out sports-skills.sh. And if you're interested in how to implement AI and agents into your business operations and workflows, starting with the data foundation that actually makes them work, we'd love to chat.

Thanks for reading!