The Personalization Stack

04 14, 2011 Blog 0 Comment

Whenever we’re out and about explaining what StreamVine does, one of the questions we get most often is “Where do you guys get the data to do it? How do you get the detailed information that allows you to tailor each stream to each viewer?”

There isn’t really a single answer to that – we’ve set up StreamVine to allow us to consume any sort of available data about a viewer, and with the way the internet works and the “interconnectedness” of the web, the applications in it (think Facebook, LinkedIn) provide countless data points that can trigger video forks and influence the video stream each individual viewer receives.

We want to lift the curtain here a little and demonstrate what we here at StreamVine call the “personalization stack” – the different layers of  data that become available when a media request is made – and how we can use them to influence the flow of each individual video.

However, before delving too deeply into the explanation of this stack, it’s important to reiterate a thing that’s very important to us here at StreamVine:

While we make use of a viewer’s data to offer him or her the best possible video experience, we do NOT collect and report this data to our clients. We know that personal information is private, and in most cases any record of this data is instantly destroyed after the video stream has been created for a viewer. Some data is aggregated across the entire viewer population for reporting purposes.

Whenever a viewer requests a video (be it inside of our Facebook application, through our landing page, hosted on a third-party website, or a mobile device) the requesting browser contacts our web service and asks for the media. At this point we have the first pillars of our personalization stack: The session layer tells us e.g. the viewer’s IP address (the physical location of which we can then look up through a geolocation service) and the preferred locale (i.e. “US English”, or “Latin American Spanish”).

The user status layer tells us what time and date it is where the user is, and possibly if he has been in contact with us or our clients before (if applicable).

The device layer tells us about the operating system, the screen size, and possibly the GPS location if the video is run on a GPS-capable device with location services enabled.

If the requested video is embedded inside a third-party website (i.e. an online store, a bank website, etc.) the hosting layer can add information from the website to the picture (think customer database information: recent purchases, account standing, promotions, etc.)

In some cases we will pull information from other external big data stores into the personalization picture – most notably through Facebook’s Open Graph API that allows us to get access to a viewer’s demographic information. Other data stores might be an external CRM system or through OAuth – all this happend on the External App layer.

Next comes the point where the request is actually hitting our web service. Here we first check in the pre-populated data layer whether there has been data pre-loaded into our database for this specific viewer. This is a lot like the hosting layer, except that the data is provided ahead of time by our clients.

Lastly the request is passed to the server layer – the server checks what kind of records it has for a visitor (i.e. is this the first request for a video, or a repeat) and what the server status is (what is the date/time on the server).

At this point we’ve gathered all the information needed about the viewer and the request to engage the media library and dynamically assemble the best possible video stream for this request. Once the stream is assembled and returned to the viewer’s browser – all the information gathered through the previous layers is destroyed and the server is ready to process the next request.

Share this Post!

About Mark

Co-Founder & Chief Product Officer of StreamVine


Submit Comment