# EdgeGoat's Humble Beginnings

*How a frustrating night on the couch turned into a full-blown sports analytics platform.*

It started the way most side projects do — with annoyance.

## The Couch Problem

Picture this: it's a Tuesday night, NBA is on, and I've got a six-leg parlay riding on Hard Rock. Three games going simultaneously. My phone is open to the Hard Rock app, and I'm refreshing. And refreshing. And refreshing.

The score on TV says 87-82. Hard Rock still shows 79-74. It's been like this for three minutes.

So I switch to ESPN to at least see live stats. One of my legs is Jaylen Brown over 22.5 points — is he even still in the game? ESPN shows the box score, but now I need to figure out which guy on the court is him. What's his jersey number again? Back to Google. Number 7. Okay. Back to ESPN. Back to Hard Rock — oh look, it finally updated. He's at 18 points in the third quarter. Not bad.

Now multiply that by six legs across three games. That's my Tuesday night. Every Tuesday night. And Wednesday. And Thursday through Sunday during the season.

I love my long-legged lottery parlays. There's nothing like watching a 6 or 8-legger slowly come alive, leg by leg, the potential payout climbing into ridiculous territory. But the experience of actually *tracking* them? Absolute misery.

## The Breaking Point

The thing that finally broke me wasn't the slow updates. It was the leg-by-leg search.

I'd build a parlay on Hard Rock — maybe 8 legs across 4 games. Player props, spreads, totals, a mix of everything. Then once the games started, I'd want to check on each leg. But the Hard Rock app doesn't give you a consolidated live view of your parlay legs with actual game context. You see your bet, you see if it's "in progress," and that's about it.

So I'm manually looking up each player. Is Domantas Sabonis playing tonight? How many rebounds does he have so far? What quarter is it? What's the pace of the game looking like — is it a fast game or a grind? Is he in foul trouble? All of this lives in different places. ESPN for box scores. The broadcast for context. Hard Rock for the line I took. My own head for the math on whether it's looking good or not.

I'm a developer. This is a solvable problem.

## Night One: 40 Commits Before Sunrise

On March 2nd, 2026, at 12:20 AM, I made the first commit. By 4:53 AM, I had a working (barely) parlay tracker. The commit messages tell the story of that night:

- "first commit"
- "deployment"
- "workflow fix"
- "retrigger workflow"
- "this should work"
- "retrigger again"
- "retrigger #1999"
- "allow cors"
- "fix migration?"
- "fix odds"
- "Parlay fix"

CORS was fighting me at 3 AM. Migrations were breaking. Odds weren't matching. But by that first morning, I could pull my Hard Rock betslip, cross-reference it with ESPN game data, and see all my legs in one place with live scores, jersey numbers, and on-court indicators.

It was ugly. It was held together with duct tape and caffeine. But it worked.

By the end of that first day — 40+ commits later — I had live tracking, NCAAB support, job orchestration for polling, and a backtesting dashboard. I couldn't stop. Every time I fixed one thing, I saw three more things I could build.

## The Automatic Betslip

One of the features I was most excited about early on was the automatic betslip loader. On Hard Rock, when you build a parlay, the individual legs are buried in the interface. If you want to check on your bet, you have to navigate to your open bets, find the parlay, and then mentally map each leg to what's happening in the games.

I thought: what if I just pull the betslip data directly, parse out each leg, and show them all on one screen with live game data?

So I did. You paste your Hard Rock betslip link (or it pulls automatically), and EdgeGoat breaks it down: every leg, every player, every line — matched to live game data. Jersey numbers so you can spot them on screen. On-court indicators so you know if they're playing. Live stats updating in real time. Progress bars showing how close each leg is to hitting.

No more tab-switching. No more Googling jersey numbers. No more refreshing.

## The Gold Mine

Here's the thing nobody tells you about building a sports data aggregator: once you have the plumbing in place to pull game data, odds, player stats, and play-by-play — you're sitting on a goldmine and you don't even realize it.

I built EdgeGoat to *watch* my parlays. But within days, I started asking a different question: what if I could *predict* them?

I had historical game logs. I had odds data with timestamps. I had play-by-play event streams. I had player stats going back seasons. All flowing into one system, all normalized and cross-referenced.

The first prediction model was embarrassingly simple — just weighted averages of recent performance with some home/away adjustment. But it was *something*. And when I backtested it against historical results, it was right more often than I expected.

That was the moment EdgeGoat stopped being a parlay tracker and started becoming something else entirely.

## The Obsession

What happened next is probably what happens to every developer who stumbles into a domain with infinite depth: I got obsessed.

I just wanted a bit of edge. That's it. I'm not trying to beat Vegas into the ground. I play lottery parlays for fun — I know the math is against me. But what if I could tilt the odds just a little? What if, instead of picking legs based on gut feeling and whatever narrative ESPN is pushing, I could pick them based on actual statistical edge?

That question consumed me.

Within a week, I had a calibration engine. Then a full backtesting framework. Then I was running optimization rounds — 16 of them eventually — each one squeezing out a fraction of a percentage point in accuracy. I started tracking metrics I didn't even know existed when I started: MAE (Mean Absolute Error), win accuracy, prop prediction accuracy, against-the-spread performance.

Every signal I could think of, I tested it. Pace of play. Defensive matchups. Rest days. Coaching tendencies. Player chemistry. Foul trouble patterns. Some helped. A lot didn't. The commit messages from this period are a mood:

- "improve MAE"
- "props plateau hit..."
- "Round 10, my best guess"
- "less overfitting"
- "super tune"
- "blah"

That last one was at 5:39 PM after a long day of calibration rounds going nowhere. We've all been there.

## Where It Stands Now

What started as a frustrated developer's side project is now a full platform:

- **Live parlay tracking** with real-time game data, jersey numbers, on-court indicators, and progress visualization
- **A 16-stage prediction pipeline** running on GPU, hitting 64.8% win accuracy on NBA game outcomes
- **A smart parlay builder** that finds legs with actual statistical edge instead of just popular picks
- **Multi-sport support** — NBA, NCAAB, NHL, and expanding
- **Odds comparison** across multiple sportsbooks to find the best lines
- **Strategy optimization** — different betting strategies backtested against historical data
- **An iOS app** because why not at this point

354 commits in 32 days. I still can't believe the first one was just about making my parlays update faster.

## The Name

We started as "Hoops Stats" because it was just basketball. Then it became "OddsDeity" when we added hockey and started thinking bigger. We landed on "EdgeGoat" because that's really what this is about — finding edge, obsessively, relentlessly, one data point at a time.

The GOAT of finding edge? Probably not. But we're trying. And honestly, just having all my parlay legs on one screen with live data and jersey numbers would have been enough. Everything else is gravy.

---

*EdgeGoat started because a sportsbook app wouldn't refresh fast enough. It keeps going because the data never stops being fascinating.*

---

Source: EdgeGoat model projections (https://edgegoat.com) — CC BY 4.0
Canonical: https://edgegoat.com/learn/humble-beginnings
License: CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/
Methodology: https://edgegoat.com/methodology
Model probabilities are estimates, not guarantees. 21+. Gambling problem? Call 1-800-GAMBLER.
