Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.

Badflix CULTFlicks is a streaming entertainment SaaS company that has been popular for showing really, really bad 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 Badflix 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