Media & streaming (OTT) · CBC / Radio-Canada

Unifying two national streaming platforms on one content & playback stack

At CBC/Radio-Canada I helped bring two national OTT platforms in-house onto one stack — a content CMS, a Redis-cached catalog API, and a playback API serving mobile, web, and consoles behind CBC Gem and ICI Tou.tv.

Published July 5, 2026 · Updated July 19, 2026

2 → 1
Platforms unified
CBC + Radio-Canada, one stack
19.5M
Tou.tv reach
monthly views (publicly reported)
4 devs
Back-end team led
cross-organisational
~80%
Code reviews
of the team’s changes

The context

CBC and Radio-Canada — Canada’s national broadcasters — ran separate over-the-top (OTT) streaming platforms, and parts of the experience (including Gem’s mobile apps) were built by an outside vendor. Two independent stacks plus outsourced pieces meant duplicated effort, higher cost, and slower delivery. The goal: bring it in-house onto one content and playback platform — the systems behind CBC Gem and ICI Tou.tv, serving mobile, web, and console clients from a single set of APIs. Between them, the two platforms reach a national audience — ICI Tou.tv alone reports around 19.5 million monthly views.

What I built

A content management system. The tool editors use to run the catalog — managing lineups and availability windows (the dates a title is licensed to stream) — kept in sync with an upstream system so the catalog is always consistent and rights-correct.

A brand-new catalog API. The service that delivers the movies and shows to every client — mobile, web, and consoles — from one contract, built from scratch and backed by a Redis cache so the hot read paths stay fast at national scale. It integrates with the internal services the experience depends on — ads, SSO, and streaming — and syndicates the catalog to Apple and Google search, so titles are discoverable there too.

A playback API. The personal layer: resume where you left off, favourites, and viewing state — so every user picks up exactly where they stopped, across devices.

Analytics & recommendations. The platform integrates with analytics that feed recommendations, making the experience personal on top of the shared catalog.

Leading the team

I led a cross-organisational back-end team of four. I set the team’s development practices and guidelines, onboarded and mentored members, and performed roughly 80% of code reviews — the connective tissue that keeps a two-org team building the same way. Working with the PO and PM, I broke complex initiatives into achievable pieces and kept platform work, product roadmap, and bug-fixing in one coherent plan.

The outcome

Consolidating onto one stack removed the cost of running two duplicated platforms and improved both performance and delivery — two national services building on one shared foundation instead of maintaining two of everything. For the team, it meant shipping against a single set of contracts — catalog, playback, and content — rather than reconciling two.

Frequently asked

What did the platform actually include?

A content management system for editors to manage lineups and availability windows, synced with an upstream system; a brand-new catalog API (Redis-cached) that delivers the movies and shows to the apps; and a playback API for resume-where-you-left-off, favourites, and personal viewing state — all wired into internal services for ads, SSO, streaming, and analytics.

How does the catalog stay fast at national scale?

The catalog API sits behind a Redis cache, so the hot read paths — what the apps hit constantly to render the catalog — don’t hammer the source of truth. Availability windows from the CMS decide what’s live, so the same fast API always reflects the current, rights-correct lineup.

How does personalization fit in?

The playback API tracks where each viewer stopped and what they’ve favourited, and the platform integrates with analytics that feed recommendations — so the experience is personal on top of a shared, unified catalog.

How do you keep delivery moving while consolidating?

You balance the roadmap against the foundational work deliberately — break big initiatives into shippable pieces, prioritize the backlog with product, and keep bugs and platform effort in one plan rather than at war with it.

Services: Platform & backend engineering, Integrations

  • ott
  • streaming
  • rest-apis
  • cms
  • catalog-api
  • redis
  • playback
  • personalization
  • multi-platform
  • team-leadership

CBC Gem ↗ICI Tou.tv ↗


Want results like these for your team?

Get in touch