Page tree
Skip to end of metadata
Go to start of metadata

Cultflicks is a streaming entertainment SaaS company that has been popular for streaming very unpopular movies. It has sold subscriptions for a long time but the growth has stalled. The subscription is intended to be free from ads and wants to capture their casual viewers' attention by adding a pay-for-view-time based subscription model that only costs the user in a given month if they have viewed something for that month, otherwise, they are not charged anything for that month. They have recently launched a campaign where they classify users according to the intensity of usage and also view completion time. These classifications are used to nudge users into becoming Premium subscribers or downgrade to pay-for-view-time low-tier subscribers.

The Cultflicks example stream shows a batch flow where viewing statistics are recorded, users are classified according to their usage/views and this data is processed into billable information. This stream highlights:

  • Actual stream flow from raw data, enrichment, user classification to multiple use cases: billing, notification, settlement, analytics
  • Preview data transformation step-by-step from "raw usage data" to very business-close data related to churn and up-sell nudging

Functions Used and Stream Breakdown

Part A - Input Data Simulation, Enrichment of User & Movie title information and Calculation of View Percentage

  • Count: Triggers the stream to run as many times as specified in the configuration
  • View simulator (Script): Collects data from a single source
  • Enrich user info (Script): Enriches the collected data with user information
  • Enrich title info (Script): Enriches the data with movie title information
  • Calculate view percent (Map): Calculates the viewing percentage per movie

Part B - Aggregating Total View Time, Classifying the User and Sending Billing Information

  • Aggregate view time (Data Aggregator): Aggregates the total view time per user, both actual view time and potential maximum view time
  • Classify user (Script): Classifies the user into "heavy, standard, light" (based on view time) and churn risk (yes/no) based on view completion percentage
  • Format for billing (Field Organizer): Formatting and renaming input data fields for billing
  • To Billing (No Operation): Sends the billing information and classification info and nudging messages into the billing system

Part C - Performing View Completion Check

  • View completion check (Route): Routes data into two different paths for movie titles that were viewed to completion and not viewed to completion 

Part D - Counting Movies Viewed to Completion and Sending Aggregated Data for Partner Billing

  • Count completed (Data Aggregator): Counts how many movies were viewed to completion
  • Format for settlement (Field Organizer): Formatting and renaming input data fields for settlement
  • To partner settlement (No Operation)Sends the aggregated number of view seconds per movie IP owner

Part E - Counting Movies Not Viewed to Completion and Sending Aggregated Data for External Analytics

  • Count not completed (Data Aggregator): Counts how many movies were and weren't viewed to completion
  • Format for analytics (Field Organizer): Formatting and renaming input data fields for analytics
  • To analytics (No Operation): Sends analytics to an external system

  • No labels


  1. Small comment, the title of the page has to be "Badflix Video Streaming" since eye-dazzler creates a link to the docs based on the title (smile) 

    Other than that it looks good! I'd suggest syncing with Jonas Wallenius directly about the "Throttle email sending" node Anirudh Kodaru 

  2. Looks good. I think this stream would benefit a lot by highlighting the different parts, similar to how it was documented for Printing as a Service.

    And before fixing that I'd re-arrange the layout so the parts become as clear as possible and particularly so it's clear which function goes to which - right now all the outputs from the "Format for..." functions are blended together so it's hard to follow the flow to the end.

    The Email-notification (and therefore also not the email throttle) is not part of the current example stream since we didn't want any external connectors (causes credentials UX friction), so that one should be removed from the "Forwarders used".

    This phrase "Additional benefits include capping of the maximum amount at 20% above the normal subscription price if the pay-for-view-time users become heavy users." is not really shown by the example stream so could be removed. It's more useful as a storytelling vehicle for a salesperson demoing this stream.

  3. Jonas Wallenius Done! Thanks for the review. Let me know if you need anything else updated (smile)