Effective August 12, 2026
What we collect
LeagueCast Studio, run by Athlete Domains LLC, collects only what it needs to make your show. A free episode needs no account at all; a paid league gets one the first time its buyer signs in, and the next section says exactly what is in it.
The Sleeper league ID you submit, and the public league data Sleeper returns for it — team names, manager display names, rosters, scores, and any nicknames the owners themselves wrote. All of it is already public on Sleeper.
An email address, in two places. On the free flow it is optional: leave it and we send that league's episode link when it is ready. That message also pitches the Season Pass at the bottom — but we do not add the address to a mailing list and we do not use it for anything else. For a paid league it is the delivery address every Tuesday episode goes to, and it comes from Stripe at checkout.
Salted, hashed IP addresses, so one person cannot burn through every league's free episode; the same hash is the key on the rate-limit counters at Upstash. We never store a raw IP, and the salt lives outside the database, so a copy of the database alone will not turn the hashes back into addresses.
First-party product events — things like "a free episode was requested" or "a share button was clicked" — written to a table in our own database so we can tell what is working. Every row carries an event name, a timestamp, and a small bag of details about the event itself: an ID like the league or episode, the product and amount on a purchase, which email template went out. Two of those events are posted by your browser rather than by our server, so for those the bag holds whatever that request sent. No cookie, no device fingerprint, and no IP is attached to them.
The commissioner account
The only reason to sign in is to run a paid league. The receipt for a Season Pass links to a sign-in page with your address filled in; ask for a magic link and clicking it creates an account for that address. There is no password to set and none to steal — the address itself is the identity. We store no password and no profile: the account holds that address and the sign-in records our auth provider keeps with it.
That account's ID is written onto every league row bought with the same address. It is what makes your dashboard show your leagues and nobody else's, and it is where the delivery address, the tone dial, and the Broadcast Pack intro line are edited.
Signing in sets cookies on this site. They are first-party and functional — they hold your session so you are still signed in next week — they follow you nowhere else, and they are the only cookies we set.
Episodes are public — read this one
This is the most important thing on the page. When an episode is ready we publish it at its own address on this site, and that page is public to anyone who has the link and reachable by search engines. It holds the audio, the full transcript, and — on a weekly episode — the 60-second highlight video.
The transcript names people. It uses your league managers' Sleeper display names and team names, quotes the nicknames owners gave their own players, and describes what those managers did in the league. If your league would rather not be findable, do not create an episode for it.
The highlight video puts some of that on screen. Its cards are drawn with your league's name and season, the week, and the team names and scores of up to four of that week's matchups, and its narration is burned in as captions. It plays on the same public page, and the file behind it — like the audio file — sits at a public address of its own, so it can be downloaded and re-posted anywhere.
Paste that link anywhere that unfurls previews — a group chat, Discord, a post — and that service fetches a share card from us carrying the episode title and the league name. The card is made for the preview; it is not shown on the page itself.
Want one taken down? Email hello@leaguecast.show from any address in that league and we will remove the page. You do not have to explain why.
Who else touches it
The companies we use to run the service, and nothing beyond them: Stripe for payments (card details go straight to Stripe and never touch our servers), Resend for email, Supabase for the database, the sign-in accounts, and the audio and video files, Vercel and Railway for hosting, Upstash for the rate-limit counters, Inngest to queue and run the jobs that build an episode, Anthropic to write the script, and ElevenLabs to voice it. The script text sent to Anthropic and ElevenLabs is the episode itself — the league facts and the manager display names above, which are personal data about the people in your league, and nothing about your account or your email address: those stay with Stripe, Resend, Supabase and Inngest.
Inngest is the one worth spelling out, because it carries addresses. Each job we queue names the episode to build; a free-episode job also carries the address you optionally typed into the form, and the job queued after a purchase carries the address Stripe gave us. The free-flow one is kept off the league row on purpose, so Inngest's event log is where it is retained.
No tracking, no ads, no selling
We do not sell your data or share it for advertising, and we never will. There are no advertising cookies, no third-party analytics or tracking scripts, and no pixels on this site — the product events above are recorded by our own server, in our own database.
How long we keep it
Episodes, their league rows, the delivery address on them, and commissioner accounts all stay until you ask us to remove them, or until we shut the service down. Rate-limit counters expire on their own within hours.
One row has no expiry at all: the hash that records a league already used its free episode. The free episode is one per league ever, not one per season, so deleting that row would hand out a second one — it outlives the 2026 season on purpose.
Your say over your data
Wherever you live, the same offer applies: email hello@leaguecast.show and ask what we hold about you, ask for a copy, ask us to correct it, or ask us to delete it — including taking an episode page down. We do not make you cite a statute to be taken seriously, and asking costs you nothing.
One thing not to assume: clearing the delivery address on a paid league stops the email and nothing else. The Tuesday run picks leagues by paid-and-active, so that league would still be written, voiced, and published at a public page naming its managers — with no email to tell you it happened. What actually ends the weekly episodes is asking us to pause or cancel the league, which is a switch on our side rather than something the dashboard does.
Kids
LeagueCast is made for adults running fantasy leagues. It is not directed at children under 13 and they should not submit anything here. If you believe a child sent us something, email us and we will delete it.