Case Study · Music Streaming / Audio Infrastructure
Keeping a Streaming Catalog Honest Against a Live Radio Feed
An internet radio and music streaming service. We spent two years on its team, owning sync, recommendations and the API contract.
- 5 recommendation strategies behind one contract
- 3 health checks that catch catalog drift
- 2 API versions live at once
The Client
An internet radio and on-demand music streaming service, with mobile and web apps, live channels and a searchable catalog.
The platform was already live and built by a wider team. We joined it and took ownership of three layers inside it.
The Challenge
- A catalog that mirrors a live feed. Songs vanish upstream, metadata arrives late and links change, all without a sound.
- Recommendations every week. Listeners expect fresh picks, and the same track twice in a row reads as broken.
- Apps already in people's pockets. The API had to evolve without breaking the versions installed on phones.
- Search that groups. The catalog needed grouped results, which the stock search driver could not express.
What We Built
A catalog mirroring a live radio feed drifts by default. We kept it honest, and knew first when it was not.
Live-broadcast sync
Channel-to-playlist sync, removals, audio file sync, metadata backfill, cover art and transcode validation.
Drift alerts
Three health checks catch a silent channel, missing songs or invalid transcodes before a listener reports them.
Weekly recommendations
Five fetch strategies behind one contract, then a uniqueness pass, so nobody gets the same track twice across weeks.
An API contract layer
Data transfer objects and mappers between the database and the API, so a schema change does not become a breaking client change.
A grouped search driver
The search engine driver was extended to return grouped results, instead of every caller post-processing hits.
Counter caches that repair
A recalculation command keeps aggregate counts consistent, repairing drift rather than trusting it.
Technical Highlights
-
01
Recommendations without a model
Quality comes from composing cheap strategies and removing repeats. Adding a source means adding one fetch service.
-
02
Drift is detected, not reported
A mirror of a live feed goes stale by default. The health checks raise the alarm first.
-
03
A contract, not an ORM leak
The mapping layer let a second API version evolve while the first kept serving installed apps.
-
04
Extend the driver, not the caller
Grouping lives in one small search engine driver, not in every query.
-
05
Tests where the risk is
Targeted regression tests cover transcode validation, channel sync, search and counter caches.
Results
- Catalog kept in step with the live radio source, with alerts on drift
- Two API versions served side by side, so installed apps kept working
- Weekly recommendations shipped without a recommender model
- Grouped search results from a single driver
- Regression tests on the highest-risk sync and search paths
Need senior ownership inside a platform that is already live?
Sync jobs, search, APIs that must not break installed apps. In 30 minutes we will outline our approach.