Origin story
We were giving up six goals a game. That season is why Stats Beaver exists.
Thirty-four games. More than six goals against per game. By the end of that season we were giving up 1.5. We worked it out the hard way, whiteboard, printed rink sheets and a lot of pen and paper, and doing it that way is exactly why Stats Beaver exists.
The box score knows what. It doesn't know where.
Every coach reading this has had the same conversation on the drive home. You gave up six. You know you gave up six. The scoresheet will confirm, in detail, that you gave up six.
What it won't tell you is whether those six came from the same soft spot in your coverage, whether the same people were on the ice for most of them, or whether your goalie was hung out to dry.
You're not working blind. You make mental notes. You come away from a game with a rough idea, and a few players come to mind when you think about who tends to be out there when it goes wrong. That instinct is usually worth something — it's just imprecise, and imprecise is hard to act on. So you change four things at once — new pairings, a new forecheck, a different breakout, an extra hard skate at the end of practice — and when it gets better you have no idea which one did it. When it doesn't get better, you have no idea which one to undo.
We also knew what we were walking into. On paper we were a weaker team, and our level had some of the strongest clubs we'd face all year. Nobody was expecting us to out-skill anybody, the expectation was to at least be competitive, and that's exactly why this mattered so much: if we were going to close the gap at all, it wasn't going to come from talent we didn't have. It had to come from working out precisely where games were being lost and fixing that — and we couldn't afford to spend three months fixing the wrong thing.
We spent the first half of that season adjusting on instinct, and it wasn't working. So we started writing things down, which at the time meant a printed rink diagram for every game, a pen, and re-watching video to mark where each shot came from and who was on the ice when it went in. It was tedious, it was slow, but it was the single most useful thing we did all year.
-
1
Where on the ice?
Narrow a team-wide number down to a region of the defensive zone.
-
2
Who was out there?
Move from a region to the side of the ice and the players on it.
-
3
What was actually failing?
Separate a structure problem from a personnel problem from a goaltending problem.
Question 1: Where were the shots and goals coming from?
Once we had a few games marked up on paper and laid them on top of each other, the picture was not subtle. Almost everything we were giving up was coming from down low — below the tops of the circles, in tight, around the net. Not point shots. Not the perimeter. Down low.
That sounds obvious written down. It was not obvious from the bench, where six goals a game feels like chaos coming from everywhere at once. And it was not obvious from the scoresheet, which is the entire point.
Counting the sheets also told us something we'd only ever felt. We were giving up close to 45 shots a game. Everybody knew it felt like a lot — "a lot" is what you say every week — but nobody knew it was 45 until somebody counted. That number became the second half of the plan, and it's the least clever idea in this entire post: fewer shots against means fewer chances for one to go in. Obvious, yes. But you don't actually know it's your problem until you see the number, and you can't tell whether you've fixed it unless you keep seeing it.
Goals against — the pattern we found
"We give up too many goals" is a feeling. "We give up almost all of our goals from below the circles, and mostly on one side" is a question with an answer. Everything that follows only happened because the first number got specific.
Question 2: Which side, and who was on the ice for it?
The goals weren't spread evenly across the zone. One side kept breaking down, game after game — the same seam, the same corner, the same recoveries lost. So we started keeping a second tally alongside the rink sheets: who was on the ice each time.
This is the point where it would have been easy — and wrong — to conclude we had a couple of bad players.
Being on the ice for a goal against is context, not a verdict. A player who starts most shifts in his own end against the other team's best line is going to look worse than a teammate getting sheltered minutes, and that difference tells you about deployment, not ability. What we were actually looking for was narrower and more useful: which side of our zone kept failing, and which players were consistently the ones responsible for it when it did.
That's a coaching list, not a bench list. It told us exactly who to work with and exactly what to work on with each of them.
Question 3: Was it actually the goalie?
We owed our goalie this check, and I'd argue every coach does. His save percentage looked poor and the easy read was that he was having a rough year.
But when we separated the shots by where they came from, the picture flipped. He was stopping a perfectly respectable share of the shots from distance. What was sinking his numbers was the sheer volume of point-blank chances arriving from down low — the exact problem we'd just found on the rink sheets. He wasn't letting in bad goals. He was facing an unreasonable number of very good ones.
It told us who wasn't the problem. In minor hockey you don't get to go out and find a different goalie — but you can absolutely break the one you have. He'd already started wearing every goal himself, and another month of being quietly treated as the reason we were losing would have cost that kid his confidence for the season.
The change: give up the points, own the house
Here's the decision that turned the season around, and it's the one that took the most convincing.
If almost every goal is coming from down low, then the coverage we were spending up high was being spent in the wrong place. So we made a deliberate trade: concede more at the points, and collapse into a lower, tighter defensive box. Our wingers stopped positioning themselves high near their defencemen at the blue line and stayed lower, protecting the slot and the net front.
The trade is real and worth stating honestly. You will give up more point shots. Opponents will have more time at the blue line and it will feel, from the bench, like you're letting them work. What you get in return is that the shots you concede come from the perimeter, and — this was the part that mattered most — with bodies already low and boxed out, those shots stop turning into screens, rebounds, and second chances in tight.
That's the whole idea. It isn't only about keeping shots to the outside. It's that keeping shots and opponents to the outside stops the high-danger chances from ever being created in the first place.
It went after the volume problem at the same time, which we hadn't entirely expected. A lot of those 45 shots a game were never 45 separate attacks — they were one attack that produced a rebound, then a second rebound, then a scramble. Winning the net-front battle doesn't only downgrade the quality of what you give up. It ends the sequence, and the shot count comes down with it.
Getting the players to actually do it
None of this works as a whiteboard diagram. Telling a fifteen-year-old winger to stop pressuring the point goes against every instinct he has, and if he doesn't understand why, he'll revert the moment a game gets tight.
So we did it in three passes, and it took weeks rather than days.
We showed them the evidence
We put the marked-up rink sheets in front of them. This part surprised me. Telling a young player "you're getting beat on the weak side" gets you a nod and no change. Showing him a page covered in dots clustered in the exact spot he keeps vacating gets you a completely different conversation. They could see it. From there the coaching was about gap control and net-front body position, and it stuck because they'd already agreed there was something to fix.
We talked it through, then drew it up
Chalk talk before practice, every week. Not a lecture — a discussion. Players asked why we were giving up the points. We answered with the sheets: because that shot goes in far less often than the one we've been giving up sixty times this season, and because if you're already in the box when it comes, we get the rebound. Once they believed the trade was worth it, they stopped drifting out of position.
We repeated it until it was boring
Small-area d-zone reps, every practice, for the rest of the year. Same situations over and over: strong-side pressure with weak-side support, box out, find the rebound, break out. Buy-in gets you the first three games. Repetition is what makes it hold up in March.
We coached players up instead of shuffling them out
It's worth being clear about this, because the tempting version of this story is that we found the weak links and replaced them. That isn't what happened, and it wouldn't have worked.
We made some pairing adjustments — putting a player who stays home alongside one whose instinct is to pressure, so the two habits balanced instead of compounding. But the fix wasn't substitution. Having identified which side kept breaking down and who was out there when it did, we could aim our practice time at those specific players and those specific habits rather than running generic team drills and hoping. The weaker side of the ice came up to the level of the stronger one, and the whole defensive structure came up with it.
In minor hockey you don't get to trade for a new player mid season. Developing the ones you have is the only option, and knowing precisely who needs what is the difference between developing them and just skating them.
What happened
Over our final ten games:
- Goals against per game
- 6+ → 1.5
- Shots against per game
- 45 → 35
- GA from high danger
- 63% → 25%
- Goalie save percentage
- .842 → .957
Look at the first two columns together, because the gap between them is the entire argument for the change. Shots against came down by about a fifth. Goals against came down by three quarters. We weren't simply facing fewer shots — we were facing worse ones, and that difference is what moved the save percentage.
Which is to say the goalie's number moved and he did nothing differently. He was never the problem; he was the symptom, and cleaning up the front of his net fixed his season too.
Before
After
One honest caveat: ten games is not a large sample, and some of that improvement is regression to the mean — nobody gives up six a game all year without some bad luck in the mix. We kept re-tallying the sheets every week rather than declaring victory after two good weekends, and the shape held. But if your goals against drops for three games and you announce that you've solved hockey, the fourth game is going to be unkind.
Why this became software
Here's the part that turned into Stats Beaver.
The analysis worked. The analysis was also miserable — though not for the reason you might expect.
Watching the video was never the problem. If you're already reviewing your games, tapping in a handful of events while you watch is a manageable extra step, and it is still exactly what Stats Beaver asks of you today. That part doesn't disappear, and it shouldn't. Somebody has to watch the hockey.
The misery was everything downstream of it. Rink diagrams marked by hand. Tally columns re-added from scratch every week to see whether anything had changed. A spreadsheet full of formulas that had to be rebuilt whenever a different question needed to be answered. Doing data entry late at night and then squinting across columns trying to spot connections that, in principle, a computer should surface instantly.
And none of it required exotic data. We never measured zone exits or expected goals or possession time. We wrote down three things: how many shots we gave up, where the puck was when it was shot, and who was on the ice when it went in. That was enough to find a structural flaw, isolate the side it lived on, identify the players to work with, and clear the goalie.
So the initial tooling got built around exactly those three inputs, and then grew from there. Every page in Stats Beaver today started as a piece of paper from that season:
- The printed rink sheets became the Team Shot Map, with the same danger zones you see in the diagrams above.
- The who-was-on-the-ice tally became the on-ice impact pages for offence, defence, and combined.
- Cross-referencing which players kept appearing together became Line Chemistry.
- Separating "bad goal" from "impossible save" became Goalie Save Quality.
- Re-adding everything each week to see whether the fix was holding became Player Trends.
Same inputs, same time spent in front of the video. The difference is that you tap an input event and the answers are already there when you stop watching — not three nights later, and not dependent on whether you built the spreadsheet correctly.
The goal was never to bring pro-level analytics to minor hockey. Goals against just happened to be our problem that year; the next one might be a power play that can't score, a team taking plenty of shots but almost none from anywhere dangerous, or a player whose point totals look healthy while the goals pile up at the other end whenever he's on the ice. For your team it will be something else again. What we wanted were tools that help you find whatever the problem really is, aim at it precisely, and know within a few weeks whether it's moving — twenty minutes to identify something and start coaching it, instead of most of a season spent working out what you were even looking at.
That's the whole reason this thing exists.