v2.0

GoRules Version 2 is here - redesigned, now with managed cloud.GoRules Version 2 is here!

Watch the launch videoWatch

Customer Lifetime Value

Insurance calculation system that determines customer value metrics to optimize retention strategies and set appropriate service tiers for policyholders.

Solution

This insurance analytics system evaluates customer profitability by processing purchase history data to calculate meaningful lifetime value metrics. It transforms raw transaction data into actionable insights by analyzing order values, purchase frequency, gross margins, and retention rates. The system automatically accounts for acquisition costs when determining a customer's true profitability over their projected relationship with the insurer.

Based on calculated lifetime value metrics, the system categorizes customers into appropriate service tiers (platinum, gold, silver, or standard) and recommends specific retention strategies. Platinum customers receive high-touch service and exclusive offers, while other tiers receive progressively standardized service levels. This strategic segmentation allows insurance providers to allocate resources efficiently, customize retention efforts, and maximize long-term profitability across their customer portfolio.

How it works

The decision graph processes customer data through two key components:

  1. Value Calculation Node: Processes customer purchase history to derive essential metrics:

    • Average order value from historical policy premiums
    • Purchase frequency normalized to annual basis
    • Gross margin percentage converted to decimal format
    • Expected customer lifetime based on retention probability
    • Basic lifetime value calculation using the standard CLV formula
    • Acquisition cost ratio to evaluate marketing efficiency
    • Adjusted lifetime value with acquisition costs subtracted
  2. Segmentation Decision Table: Evaluates the adjusted lifetime value against predefined thresholds:

    • Assigns customer tier classification (platinum, gold, silver, standard)
    • Provides specific service and retention recommendations for each tier
    • Ensures consistent treatment of customers with similar value profiles

Where teams use it

  • Optimizing retention spending across insurance customer base
  • Identifying high-value customers for premium service allocation
  • Setting appropriate service levels based on customer profitability
  • Evaluating acquisition channel effectiveness against lifetime value
  • Improving renewal strategies based on customer segments
  • Determining appropriate marketing investment per customer

Inside the decision model

Customer Lifetime Value ships as a JDM decision graph with 3 nodes, 1 decision table and 4 rules. Download it, load it into GoRules, and run it as-is on Zen Engine.

Decision graph3 nodes · read-only
input requestexpression clv_calculationtable customer_segmentation
01

Request

input

Two request blocks feed the math: customer contributes the acquisitionCost to net out, while purchaseHistory supplies orderValues, customerDurationMonths, averageGrossMarginPercent, and retentionRate.

Sample requestJSON
{
  "customer": {
    "id": "CUST-12345",
    "name": "John Doe",
    "segment": "retail",
    "acquisitionCost": 150,
    "acquisitionChannel": "paid_search"
  },
  "purchaseHistory": {
    "orderValues": [
      120,
      89,
      245,
      78,
      310
    ],
    "customerDurationMonths": 18,
    "averageGrossMarginPercent": 35,
    "retentionRate": 85
  }
}
02

Clv Calculation

expression

Seven chained expressions assemble the value model: averageOrderValue and an annualized purchaseFrequency come from purchaseHistory.orderValues, customerLifetimeMonths applies the retention formula 1 / (1 - retentionRate / 100) * 12, and basicLTV multiplies those factors with grossMargin. adjustedLTV then subtracts customer.acquisitionCost, which is the figure the segmentation table actually reads, while acquisitionCostRatio survives as a separate marketing-efficiency readout for comparing channels.

Expressions7 fields
averageOrderValuesum(purchaseHistory.orderValues) / len(purchaseHistory.orderValues)
purchaseFrequencylen(purchaseHistory.orderValues) / purchaseHistory.customerDurationMonths * 12
grossMarginpurchaseHistory.averageGrossMarginPercent / 100
customerLifetimeMonths1 / (1 - purchaseHistory.retentionRate / 100) * 12
basicLTV$.averageOrderValue * $.purchaseFrequency * $.grossMargin * $.customerLifetimeMonths
acquisitionCostRatiocustomer.acquisitionCost / $.basicLTV
adjustedLTV$.basicLTV - customer.acquisitionCost
03

Customer Segmentation

table

Segmentation reads the computed adjustedLTV under a first hit policy with the richest tier on top: > 2000 assigns 'platinum' with 'High-touch service, premium offers, exclusive events', > 1000 assigns 'gold', > 500 'silver', and the blank fallback row leaves everyone else on 'standard' with general promotions. Each row pairs the tier with a concrete recommendedStrategy string, so the output is directly actionable rather than a bare label.

Tiering on value net of acquisition cost, instead of raw premium volume, is the right basis for retention spend because it points money at policyholders who are actually profitable to keep. The 500, 1000, and 2000 breakpoints are sensible template values a carrier would recalibrate against its own book's lifetime value distribution.

Decision tablefirst hit policy
Adjusted LTVadjustedLTVCustomer TiercustomerInsights.tierRecommended StrategycustomerInsights.recommendedStrategy
> 2000'platinum''High-touch service, premium offers, exclusive events'
> 1000'gold''Priority service, personalized offers, loyalty bonuses'
> 500'silver''Enhanced service, targeted offers, occasional perks'
-'standard''Standard service, general promotions'

Make this template
your own.

Load Customer Lifetime Value into GoRules, adjust the rules to your policy, and ship it behind your own API.