Media and Entertainment
We build sports streaming and fan analytics, with AI agents held to every rights deal.
When live game delivery and audience analytics are both on your roadmap and your team can only staff one, our senior engineers join you and build them as one system. Any agent we add reads only what each rights deal and your privacy terms allow.
Databricks partner
Microsoft Solutions Partner
The problems
What we're brought in for
A count instead of an audience
Rights holders have historically been handed almost nothing by their streaming partners. How many watched, from which devices, and what else those people care about are answerable questions that most platforms in this market don't answer.
The engineer who scopes it builds it
For BZZR, which carries Texas Rangers games beside creator video and podcasts, we built live streaming with ad injection, a pipeline that transcribes and indexes partner video, and analytics on Databricks that a club can act on. Whoever scopes your version of that with your product team is the engineer who'd build it.
Three numbers called a view
Viewers, peak concurrent and minutes watched get used as if they were the same number, and the contract usually means only one of them.
Subscribers asked to start again
A club that changes streaming platforms mid-season loses the people who already paid, unless identity was built to move.
What we build
What we build in media and entertainment
The streaming product4
Built for BZZR
Live games with ad injection
Texas high school football through Major League Baseball, on an AWS Elemental stack with ad injection.
- Live games and ads in one stream
- From high school football to Major League Baseball
AWS ElementalLive streamingBuilt for BZZR
Games, creators and podcasts together
One product for live games, creator video and podcasts, under team and talent control, with a social layer beside the stream.
- One app for the game and the conversation
- Verified creators publish next to the live game
PostgreSQLGCPBuilt for BZZR
A club moved mid-season
In July 2026 the Texas Rangers moved their direct-to-consumer streaming to BZZR, part-way through the season.
- Existing subscribers came across authenticated
- Nobody was asked to sign up again
IdentityLive streamingBuilt for BZZR
Partner video into a sports graph
Partner video is ingested, transcribed and mined for the moments worth surfacing, and that output is the graph of who is talking about whom.
- Key terms and the moments worth surfacing
- Who is talking about whom, as a graph
TranscriptionSports graph
Audience data on Databricks4
Built for BZZR
Click analytics on Databricks
Click analytics for BZZR runs on Databricks. The fan intelligence layer, joining that behaviour to the content graph, is what gets built on top.
- Click analytics running on Databricks
- The graph and the viewing kept as separate layers
DatabricksClick analyticsHow we'd build it
Heartbeats, then the three counts
We'd have the player send a session start, play, pause, seek, ad start and complete, and a heartbeat while the video is moving, then agree which of viewers, peak concurrent and minutes watched the contract means.
- Minutes from heartbeats, not from session ends
- The contract's definition chosen before the chart
Structured StreamingDatabricksHow we'd build it
Ad beacons joined to the break
We'd join the break schedule to the beacons the player sends at the start, middle and end of each ad, so a sponsor can be told what actually ran, including the slate when the ads don't fill the break.
- Fill and slate read from the same join
- One viewer's manifest, rewritten for that viewer
AWS ElementalAd beaconsHow we'd build it
A name that lands on the clip
We'd keep each word's start and end time through the transcript, so a search for a player opens the second it was said.
- Timestamps kept at every step
- A search opens a clip, not a two-hour file
Transcription
Reference architecture
How the data fits together in media and entertainment
The live stream, the player events and the partner video land once. Click analytics and the sports graph stay separate layers, and the fan intelligence is what gets built on top.
Step 1: Land the stream, the events and the video
Live game delivery and ad injection, player events, and partner video each arrive as their own governed tables.
Step 2: One lakehouse for playback and the graph
Databricks and Unity Catalog hold the playback events and the sports graph of who is talking about whom, as separate layers.
Step 3: Keep the three counts apart
Viewers, peak concurrent and minutes watched are computed from the heartbeats and named as three numbers, so a rights holder and a sponsor are not handed the same one.
Step 4: Serve the club and the creators
Click analytics reads those tables. The fan intelligence layer, and a creator's audience, are what get built on top of them.
Proof
Work we've shipped in media and entertainment
Sports media
A sports platform that streams the game and explains the audience
Databricks · Click analytics · AWS Elemental · Live streaming
Read the case study
Blog
From our engineers
- Oct 26, 2026 · Preetham Reddy
Databricks CustomerLake: a customer data platform inside the lakehouse
CustomerLake builds Customer 360 profiles and audiences on data already in Databricks. What's in Beta, and the workloads we'd move to it first.
Read the article - Oct 27, 2026 · Preetham Reddy
Search that keeps up with a live game and an open loan
We indexed a wine catalog and refinance queues at iLending and Auto Approve. Search can now read a streaming table or a materialized view.
Read the article
Compliance and governance
The rules a streaming app runs into
Apple reader apps
Guideline 3.1.3(a) lists video among the reader apps, so a viewer can sign in to a subscription bought on the web. On the United States storefront the guidelines also allow a link out to buy. Other storefronts restrict that more tightly.
Source: App Store Review Guidelines
How we engage
Ways to start
Six weeks, after discovery
Lakehouse Launchpad
A governed lakehouse from a standing start, with Unity Catalog in place before the first pipeline and dashboards for the people who asked for them.
Two weeks, fixed fee
Databricks Health Check
Reads cost, job reliability and Unity Catalog coverage on the platform you already run, and ends in a ranked scorecard.
For the length of the engagement
Forward-deployed engineers
Senior engineers in your workspace and your repository, as a team with a lead or as individuals under yours.
Two weeks, fixed fee
AI Readiness Assessment
Names the use case worth building first, the data and permissions it needs, and what it would cost to run for a month.
In depth
Media and Entertainment in depth, with sources
Rights holders have historically been handed almost nothing by their streaming partners. How many watched, from which devices, and what else those people care about are answerable questions that most platforms in this market don't answer.
For BZZR, which carries Texas Rangers games beside creator video and podcasts, we built live streaming with ad injection, a pipeline that transcribes and indexes partner video, and analytics on Databricks that a club can act on. Whoever scopes your version of that with your product team is the engineer who'd build it.
How a play button becomes "who watched"
A streaming report is only as good as the events the player sends. The useful set is small. A session start with the viewer, device and app version, then play, pause and seek, an ad start and an ad complete, and a heartbeat every thirty seconds or so while the video is actually moving.
The heartbeat is the one people skip, and it's the one that matters, because an app that gets swiped away never sends a session end. Without heartbeats you can count starts but you can't count minutes. Three numbers then get confused in every meeting. Viewers counts distinct people across the whole game, peak concurrent is the most people watching at one moment, and minutes watched comes from multiplying heartbeats by the interval.
A rights holder asking how many watched usually means the first, a sponsor usually means the third, and the platform's own dashboard often shows the second. Agreeing which one goes in the contract is worth doing before anyone builds a chart. On Databricks the heartbeats land as a stream, and a watermark tells Structured Streaming how late an event may arrive and still count.
For a live screen during the game, approx_count_distinct gives viewers cheaply, and the docs give its default maximum relative standard deviation as 5%. For the number that goes to a club, count the distinct IDs exactly, because a 5% gap is an argument nobody needs.
SELECT game_id,
count(DISTINCT viewer_id) AS viewers,
approx_count_distinct(viewer_id) AS viewers_live_estimate,
count(*) * 30 / 60.0 AS minutes_watched
FROM media.playback.heartbeats
WHERE event_date = current_date()
GROUP BY game_id;Sources: approx_count_distinct, watermarks in Structured Streaming
Ads in a live game, and the number sales will ask for
BZZR's live games run on an AWS Elemental stack with ad injection. The general mechanism, as AWS documents it for MediaTailor, goes like this. The player asks for the stream with some information about the viewer.
MediaTailor asks an ad decision server what to show, gets back a VAST response, and rewrites the manifest for that one viewer. In a live stream it replaces the content between the ad markers, so an ad break has to be signalled with a cue-out and either a duration or a matching cue-in.
The detail that changes reporting is what happens when the ads don't fit. AWS's own example is a 70-second break and two 40-second ads, which plays one ad and fills the remaining 30 seconds with slate or the underlying content.
Fill rate and slate time live in the gap between the break schedule and the ad beacons, which the player or MediaTailor sends at the start, middle and end of each ad. Join those two and you can tell a sponsor what actually ran.
Sources: how MediaTailor ad insertion works, live ad stitching behaviour, ad tracking and beacons
Hours of partner video, searchable by the moment
The BZZR pipeline ingests partner video, transcribes it and mines it for key terms and the moments worth surfacing, and that output builds the sports graph of who is talking about whom. The part that makes a transcript useful is timing.
Amazon Transcribe, for example, returns a start time, an end time and a confidence score for every word, so a mention of a player can point at the second it happened rather than at a two-hour file.
Keep the timestamps through every step, and a search for a name lands on the clip. Drop them, and you've built a very large text file.
Checked on 11 October 2026 against Amazon Transcribe output format.
What a fan analytics build has to decide
The subscriber question is the one that bites late. When the Texas Rangers moved their direct-to-consumer streaming to BZZR in July 2026, part-way through the season, the existing subscribers came across transferred and authenticated rather than being asked to sign up again.
That only works if identity was designed as something you can move. The whole build is written up in [the BZZR case study](/case-studies/bzzr).
Questions worth answering first
- Which definition of a view goes into the rights-holder contract
- Whether every player on every device sends a heartbeat, and at what interval
- Who owns the subscriber identity, and whether it survives a move between platforms
- Which device and location data your privacy terms let you keep, and for how long
- Whether the club needs numbers during the game or the next morning
- Where ad beacons go, and whether you can join them to the break schedule
FAQ
Media and Entertainment: questions we get asked
How would you govern an AI agent on fan and viewing data?
We'd design the rules in before the agent is built. What each rights deal lets you share, and which device and location data your privacy terms let you keep, become policy and Unity Catalog permissions the agent works under, so a summary for one club never reads another club's audience.
Every action it proposes is checked against that policy and recorded, in testing as in production, the way the Field Guide's chapter on governed actions describes and our AI agent services build.
Can you handle live game delivery, or only the data side?
Both, and on BZZR at /case-studies/bzzr they are the same product. Live streaming with ad injection runs on an AWS Elemental stack, and the content pipeline that transcribes and indexes partner video feeds the same graph the analytics read from.
What can we actually tell our rights holders?
Who watched, how often, on what device, and what else that audience follows. The value is in joining viewing behaviour to the content graph rather than reporting either alone, which is the work Databricks carries.
Does an OTT streaming app have to sell subscriptions through Apple's in-app purchase?
Not always. Apple's App Store Review Guidelines list video among the reader app categories in guideline 3.1.3(a), so a streaming app may let a viewer sign in to a subscription bought on the web. On the United States storefront the guidelines also allow links and buttons to buy outside the app, which other storefronts restrict more tightly.
The identity work matters whichever way the paywall goes. When the Texas Rangers moved their streaming to BZZR part-way through the season, existing subscribers came across without signing up again, and we'd design for that move from the start.
Talk to someone who has built this.
A technical conversation with a senior engineer who has shipped in media and entertainment, about what you're trying to build.