Implementing a simple Telco use case in SIFT.

Sift is a real time, big data, streaming analytical engine which can enable the business to contact the customer at the right time with the right context with the right information. Sift is an industry independent product and has a vast variety of use cases. For example

  • In Telco Marketing, it can be used for offering contextual campaigns to subscribers.
  • In Network Monitoring, it can generate real time alarm if the service provided is not consistent and responsive by looking error logs, response time etc.
  • In Banking, it can predict the potential subscriber who is going to churn by looking at their credit card usage pattern.

Let us consider a simple use case to see how a telco campaign can be configured in SIFT.


Use case:

If subscriber is a newbie (a subscriber who has joined the network within the last 30 days) and his second week of total usage dropped to less than 70% of his first week usage. We offer him the talk time bonus to upsell the voice call usage.

Let’s identify the SIFT building blocks to implement the use case in SIFT.

  1. Data Points: First we identify the data points that are required for this use case. The data points in Sift hold the most recent behavior of a subscriber in Sift. For example:
  • Daily usage
  • Age on network


2. Trigger Point: This defines the event at which Sift should initiate the trigger for this use case.

  • Any usage Record (Voice/SMS/DATA)
  • If today subscriber’s age on network is 30 days
  • His second week usage dropped to less than 70% of his first week usage.


3. Engagement Program: Defines the flow of execution for a campaign in Sift.

  • Provide the conditional offer
  • Monitor the take up and fulfillment
  • Send schedule reminder in case the subscriber has not fulfilled for x days.

  1. Data Source: Data sources are the components in Sift that reads the data from external sources. Example data sources:
  • Database
  • Flat Files
  • Messaging Source (Active MQ, WebSphere MQ etc.)
  • KAFKA etc.

These data sources can have different formats like: delimited, xml, json etc.

2. CIM Data: CIM in Sift stands for Customer Information Model. These are the main data points where data gets populated once it is read from a Data Source and is used in the system for computation at different levels. These data points are populated based on certain mapping configured by users and later can be used in other computations in SIFT like Indicators, Events and Offers etc.

3. Behaviour Indicators: Indicators are used to track the behavior of the subscriber in real time. For more information on Indicators please go through the blog here
We will create the below indicators for this use case.

  • AGE_ON_NETWORK_LifeTime: The indicator will store the age on network of the subscriber. Below is the screen shot of the indicator sample, which shows that the subscriber has joined the network 6 days ago.

  • DAILY_USAGE_SERIES_LifeTime: The indicator stores the daily usage of subscribers i.e. his voice call duration, number of SMS he sent, his data usage etc. Below is the screen shot of the indicator sample.

4. Behaviour Clusters: A Behavior Cluster is used to verify if the subscriber belongs to a specific segment/cluster. It returns true or false based on the expression used in the Behavior Cluster Expression. This is one of the coolest features of SIFT 🙂 . You write an active behavior cluster once and it can be used in any expression in SIFT without it being evaluated every time in one session when it is called, hence lesser performance impact on the system.

  • Week2_USAGE_DROPPED_CLUSTER: It returns true if second week usage is dropped to less than 70% of first week usage.
  • AGE_ON_NETWORK_30DAYS_CLUSTER: It returns true if the subscriber’s age on network is 30 days.

5. Function: Functions in Sift are used to fetch data from subscriber’s indicators or to perform some generic operations. For this use case, we will be creating a function which will return the subscriber’s usage of the given days from DAILY_USAGE_SERIES_LifeTime Indicator.

    • Function Name: getDailyUsageSum()
      • Function Signature:String getDailyUsageSum(int  startDay, int duration, String indexString)
      • Input Attributes:startDay: The day from which the calculation should start.duration: How many days in the past from startDay should be used for calculation.indexString: Pipe separated values can be provided as indexString. The index here are referred to DAILY_USAGE_SERIES_LifeTime indexes.
      • Return Type: Return Type is String. Pipe separated string value of sum of Indexes provided in input.

6. Behaviour Trigger: Behaviour triggers are used to trigger certain activity based on specific behaviour of subscriber.

  • VOICE_CALL_TRIGGER: This will be triggered on any usage record of subscriber if subscriber’s second week usage dropped to less than 70% of his first week usage.

7. Offer: Offers is the configuration of what offer is given to subscriber. This is my most favourite configuration in SIFT as it provides lot many exciting features such as contact policies, segmentations etc.

For this use case, we are presenting 50% talk time bonus to subscriber. All the contacts related to offer will be configured here.



The first flow of the campaign where we are identifying a subscriber as a targeted subscriber and giving him the offer with 50% talk time bonus will be as below:


If subscriber does not fulfil the offer, we send him the reminder message which will go out to subscriber after 2 days of the offer contact. The reminder will only go out to subscriber if he has not fulfilled the offer. The flow will look like below:


This is one of the simplest use cases that can be configured in Sift. Sift can handle many such simple use cases or other complex ones.

The program configured as shown above can also be extended to have multiple offers, next wave offers or also an alternate offer.

Share This Post
Have your say!
5 0

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>