Demo #4 — Highlight Reel: spoiler-free MLB highlight emails
I live in Paris, and I’m a Seattle Mariners fan.
That creates a pretty specific problem: most Mariners games happen while I’m asleep.
So when I wake up, I want to watch the highlights. But I don’t want to know the score first.
That turns out to be harder than it should be. If I go to MLB.com or open the usual highlights flow, the score is often right there. And once you already know the result, the highlights are a lot less fun to watch.
So I built Highlight Reel: a simple service that emails me spoiler-free game highlights once they’re available.
The problem
The product idea is simple.
I want to be able to:
- follow the Mariners from Paris
- know when highlights are available
- watch them without getting spoiled first
This sounds like a small problem, but it’s exactly the kind of thing that makes sports fandom worse than it needs to be when you live in the wrong time zone.
And I’m probably not the only person with it.
What I built
Highlight Reel lets a user:
- sign up with an email address
- log in via magic link
- choose one or more MLB teams
- receive an email after a game ends when the highlights are available
The important part is that the email gives you a clean path to the highlights without forcing the score in your face first.
That’s the whole point.
A nice extra touch is that the emails follow the color scheme of the team you selected. So if you’re a Mariners fan, the email looks different than if you’re a Red Sox or Giants fan. It’s a small detail, but it makes the whole thing feel much more intentional.
How it works
The architecture is lightweight:
- a Next.js app for the UI
- Supabase for auth and persistence
- Brevo for email delivery
- a scheduled worker that checks whether highlight videos are available
- logic to make sure the same highlight email is not sent twice
The user picks a team, that preference gets saved, and then on a recurring cadence the system checks whether the latest game’s highlight video is available. If it is, and the email has not already been sent, it sends it.
That’s it.
It’s a simple workflow, but it solves a real problem cleanly.
Why this project was interesting
This project was not just about baseball highlights.
I also wanted to test a different way of building.
Specifically, I wanted to see how far I could get building something real using a browser-first workflow: GitHub, hosted tooling, Cloudflare, and AI-assisted development, without relying on a traditional local IDE setup.
That ended up being one of the most interesting parts of the project.
In practice, the workflow worked surprisingly well. I could start with a PRD, turn it into issues, iterate on specific improvements, review pull requests, and merge changes quickly.
One example was improving the email template so it had better branding, stronger typography, and team-specific styling. That kind of iteration felt fast and natural in this setup.
For a small product like this, the whole experience felt lightweight, practical, and genuinely fun.
What’s next
There’s still plenty I could improve:
- better branding across the site itself
- a stronger logged-in experience
- a page showing previous highlights
- richer emails with thumbnails or embedded preview content
- more polish to make it feel less like a useful prototype and more like a finished product
But even in its current state, it already does what I wanted it to do.
I’ve been using it this past week, and it solves the exact problem that pushed me to build it in the first place: waking up, opening an email, and watching the game recap without already knowing how it ends.
Final thought
A lot of good side projects start the same way: not with some giant startup idea, but with a very specific annoyance.
This one was mine.
I wanted spoiler-free Mariners highlights in Paris.
Now I have them.