Skip to content

Building block · content operations

The part your staff use every day

Encoding, delivery and telemetry are judged once a quarter. The admin panel is judged every morning by the person publishing a title, fixing a wrong poster or moving a match that starts an hour late. It ships with the platform, and it is yours to change.

An operations tool, not a settings screen

Most of the argument for owning a streaming platform is made in the parts nobody outside the engineering team sees — where the bytes are encoded, where they are cached, who is allowed to fetch them. That argument is real, and it is made in detail elsewhere on this site. It is also not what determines whether the people who run the service each day like working on it.

That is decided by the admin panel. A catalogue is not a static asset: posters are wrong, a title's rights window ends on a Thursday, a series gets a second season with different artwork, a match moves. The question is not whether the platform can represent those changes, but how many people and how many hours it takes to make one — and whether making it requires asking somebody outside your company.

So the content management system is part of the platform rather than an add-on to it. It runs in the same estate, against the same APIs a client application uses, and its source is delivered with everything else. A field your business needs and the product does not have is a change you can make, not a feature request you file.

Detail

What the panel actually operates

Five areas, each of which is somebody's job on an ordinary working day.

Ingestion

Getting a title in and out of the pipeline

A master lands in the object store, the panel registers it, and the encoding pipeline is handed the work. Progress and failure are visible in the same place the title was created, so nobody has to correlate a job id against a spreadsheet to find out whether tonight's film is ready.

  • Upload or register an existing master
  • Encode status against the title, not a job queue
  • Publish, unpublish and rights windows

Metadata

Descriptions, artwork and relationships

Titles, synopses, cast, genre, certification, and the artwork in every aspect ratio the applications ask for. Series, seasons and episodes are modelled as a relationship rather than a naming convention, which is what keeps a large library navigable.

  • Series, season and episode structure
  • Artwork per aspect ratio
  • Multi-language fields where the audience needs them

Access

Users, roles and subscription plans

Accounts, devices, entitlements and the plans that grant them. Editorial staff, schedulers and administrators get different permissions, because the person fixing a synopsis at 9am should not be able to delete a channel.

  • Role-based permissions
  • Subscription plans and entitlements
  • Account and device management

Insight

Engagement, where an editor will see it

What is being watched, what is being finished and what was published and then ignored — surfaced next to the catalogue so it can change a decision about the catalogue. The full quality-of-experience picture lives on its own page; this is the editorial slice of it.

  • Plays, completion and retention by title
  • Trends against the publishing calendar
  • Deep telemetry at /platform/observability

Warning

Alerting that reaches an operator, not a dashboard

Encoding failures, edge and origin health, and load conditions raise an alert on the way to becoming a viewer-visible problem. An alert nobody is paged for is a log line, so these are routed to people rather than displayed and hoped over.

  • Encode failures per title
  • Edge, origin and node health
  • Routed to an on-call path

Ownership

The schema is not a vendor's opinion

The data model is in your database, the admin application is in your repository, and both are declared in the same pipeline as the rest of the estate. Nothing about a field, a workflow or an export is gated on somebody else's roadmap.

  • Your database, your schema
  • Source delivered, not licensed
  • No feature request queue

Live is a schedule problem before it is a delivery problem

A linear channel is a promise about time. The guide says the match starts at eight, the audience arrives at eight, and if the stream and the guide disagree the platform is wrong in the only way viewers reliably notice. Which means the scheduling tool is not a convenience layer over the live pipeline — it is where the channel is defined.

The panel schedules channels and events on a timeline: what is playing, when it starts, how long it runs, and what happens either side of it. Programme entries carry their own metadata, so a listing is a real record with a title, a description and artwork rather than a label on a block of time. That record is what an electronic programme guide is assembled from, and it is what the applications render on a television.

Two things about a schedule are easy to get wrong and expensive to discover late. The first is time zones: every instant is stored as an absolute timestamp and rendered in the viewer's zone, because a channel operated from one country and watched from three cannot store a wall-clock string and stay correct. The second is that live runs over. Matches go to extra time, a broadcast starts late, a programme is pulled. Schedules are therefore editable while they are running, and the guide the applications hold is refreshed rather than pinned at the start of the day.

Catch-up is the same record read differently. A programme that has finished and was recorded becomes an on-demand asset carrying the metadata it was scheduled with — which is why the guide and the catalogue do not need to be reconciled by hand afterwards.

Categorisation is what a large library lives or dies by

A few hundred titles can be browsed. Tens of thousands cannot, and the difference between a library that feels deep and one that feels impenetrable is almost entirely a question of how it was categorised at ingest — not of how good the search box is.

So categories nest, and a title belongs to as many of them as it genuinely belongs to. Tags run alongside the hierarchy for the things a tree is bad at: a mood, a season, a franchise, a licensor, a rights window. Editorial collections are assembled from either, which is how a row on a home screen can be curated by hand one week and driven by a rule the next without a developer being involved in the change.

The reason to insist on this at the CMS layer is that it is the layer where it is cheap. Metadata added when a title is ingested costs minutes. The same metadata added retrospectively across a back catalogue is a project, and it is the project every platform that skipped this step eventually has to run.

Specification

How this differs from a rented console

ConcernA platform vendor's consoleThe panel you operate
Where it runsThe vendor's cloudYour estate, beside the services it manages
The data modelFixed by the productYour database and your schema
A field you need and it lacksA feature requestA change in your repository
Editorial permissionsThe roles on offerRoles you define
Live schedulingOften a separate productThe same panel as the catalogue
Guide dataExported on the vendor's termsServed from your API to your applications
Export and exitWhatever the export supportsDirect database access
Cost shapePer seat or per title, growingInfrastructure you already run

Questions

The things people ask first

Can we migrate an existing catalogue into it?

Yes, and it is normally the first piece of work after discovery. Migration quality depends on what metadata the outgoing system will actually export — that is worth checking before a timeline is agreed, because it is the usual source of a slipped date.

Can our own developers extend it?

That is the intent. The admin application ships as source in your repository, against the same documented API the client applications use, so an extension is ordinary work rather than an integration.

Does it replace our analytics?

No. It shows editorial engagement where an editor will act on it. Quality-of-experience telemetry — start-up time, rebuffering, errors per session — is a different job with a different data shape, and it has its own page.

Do we need the scheduling tool if we have no live channels?

No. An on-demand-only deployment simply does not enable it, and nothing else in the panel depends on it.

Who publishes a title today, and how long does it take them?

If the answer involves a support ticket to a vendor, that is a workflow problem the architecture cannot fix for you.