---
schema_version: "1"
id: 3e7b90e4d62b9d14cf3ef3dd5b6bf526cd1cf37c042e51f9d73667e3b6225138
title: Composite Score Logic and Resources
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/analytics/264-0-0/csi_score_logic_industry_scores.md
canonical_url: https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: bc13d76bf9e64f09e221ba43df0db4739c60c22c994515c326bfa182ee46513c
description: Understand the calculation logic, underlying formulas, and resources used to compute the composite scores. You can find and review all the building blocks for the composite scores in the CSI Score semantic model.
products:
  - Cross Cloud
release: "264"
---
# Composite Score Logic and Resources

Understand the calculation logic, underlying formulas, and resources used to compute the composite scores. You can find and review all the building blocks for the composite scores in the CSI Score semantic model.

### Required Editions

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small edition"><colgroup><col style="width:100%"></colgroup><tbody><tr class=""><td class="slds-cell-wrap" style="vertical-align:top;"><a href="https://help.salesforce.com/s/articleView?id=analytics.csi_score_learn_requirements.htm&amp;release=264.0.0&amp;type=5" title="Learn about the Salesforce editions, products, and licenses required for CSI Score.">View supported editions</a></td></tr></tbody></table>

[Voice of Customer (VoC) Score](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Sentiment Score (SENT)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Journey Experience Score (JXS)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Engagement Effectiveness Score (EES)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Revenue Health Score (RHS)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Operations Score (OPS)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Customer Health Score (CHS)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Churn Risk Index (CRI)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5) | [Customer Lifetime Value (CLV)](https://help.salesforce.com/s/articleView?id=analytics.csi_score_logic_industry_scores.htm&release=264.0.0&type=5)

## Voice of Customer (VoC) Score

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e102">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e105">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e102 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e105 ">
              <code>(Sum of All Available NPS &amp; CSAT Scores) × [Weight
                                    Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e102 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e105 ">
              <ul>
                <li>Normalized NPS from different departments</li>

                <li>Normalized CSAT from different departments</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e102 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e105 ">NPS Standardization: Normalized by using the formula <code>(Raw
                                    NPS Score + 100) / 2</code> to convert the -100 to +100 scale
              into a 0–100 range.</td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e102 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e105 ">
              <ul>
                <li>NPS: Standardized to a 0–100 range.</li>

                <li>CSAT: Normalized directly to a 0–100 scale.</li>

              </ul>
              <p style="margin-bottom:0;">If a department's NPS or CSAT, or KPI returns null, it’s treated as 0 in the sum (handled via
                <code>IFNULL</code>). The weights are automatically
                adjusted to balance the score.
              </p>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e102 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e105 ">
              <p>The score sums all available normalized NPS and CSAT and scales
                the total by using the
                <span class="apiname">CCSI_VoC_Score_Equal_Weight_prm</span> parameter.
                This allows for uniform weighting where each available signal
                contributes incrementally to the final score.
              </p>
              <p style="margin-bottom:0;">This strategy
                ensures a holistic view of the customer relationship. By
                aggregating signals from every department, the score prevents
                uncertainties where high satisfaction in one area might mask
                poor experiences in another. Every valid signal incrementally
                builds the total health score.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Sentiment Score (SENT)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e210">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e213">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e210 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e213 ">
              <code>MIN(100, (Positive % + Neutral % + Mixed % + (100 - Negative
                                    %)) × [Weight Parameter])</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e210 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e213 ">
              <ul>
                <li>Positive Sentiment Normalized</li>

                <li>Negative Sentiment Normalized (Inverted)</li>

                <li>Neutral Sentiment Normalized</li>

                <li>Mixed Sentiment Normalized</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e210 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e213 ">
              <ul>
                <li>Data Pre-processing: Uses a batch data transform (BDT) in
                  Data 360 to explode records from the Engagement Analysis
                  Text Insight DMO. This makes sure that complex text
                  responses containing multiple sentiment values are split
                  into individual rows such as contact reason, product, and
                  key phrase before aggregation.<p>The Engagement Analysis
                    Text Insight DMO is provided with Agentforce Service's
                    Customer Signals Intelligence. If you haven't set up
                    Customer Signals Intelligence, then the BDT isn't
                    installed.</p>
                </li>

                <li>Sentiment Ratios: Calculated as a percentage of the total
                  sentiment count.</li>

                <li>Inversion: Negative sentiment is explicitly inverted
                  <code>(100 - Negative Score)</code> so that lower
                  negativity adds points to the final score.
                </li>

                <li>Capping: The final score uses <code>MIN(100, ...)</code>
                  logic to make sure that it never exceeds 100.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e210 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e213 ">
              <ul>
                <li>Sentiment Ratios: Normalized to a 0–100 percentage
                  scale.</li>

                <li>Negative Inversion: A negative sentiment score of 0 becomes
                  a contribution of 100 points (before weighting).</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e210 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e213 ">The score sums the normalized values for Positive, Neutral,
              Mixed, and Inverted Negative sentiment. The total is scaled by the
              <span class="apiname">CCSI_Sentiment_Score_Equal_Weight_prm</span>
              parameter.
            </td>

          </tr>
        </tbody>
      </table>

## Journey Experience Score (JXS)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e339">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e342">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e339 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e342 ">
              <code>(Campaign Impact + Lead Conversion + Win Rate + Pipeline
                                    Velocity + FTFR + (100 - Resolution Time)) × [Weight
                                    Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e339 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e342 ">
              <ul>
                <li>Campaign-to-Opportunity Contribution Normalized</li>

                <li>Lead to Opportunity Ratio Normalized</li>

                <li>Won-Closed Opportunities % Normalized</li>

                <li>Average Pipeline Velocity Normalized</li>

                <li>Case Resolution Speed Normalized (Inverted)</li>

                <li>FTFR Normalized</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e339 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e342 ">
              <ul>
                <li>Pipeline Velocity: Calculated by using Bookings, Win Rate,
                  and Deal Length.</li>

                <li>Case Resolution: Inverted (<code>100 - Case Resolution
                                            Speed</code>) so faster times yield a higher
                  score.</li>

                <li>FTFR: Standard calculation of First-Time Fix Rate.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e339 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e342 ">
              <ul>
                <li>Ratios &amp; Rates: KPIs like Lead Conversion and FTFR are
                  scaled to a 0–100 range.</li>

                <li>Time Inversion: Case Resolution Speed is normalized and then
                  inverted (<code>100 - Speed</code>) so that faster
                  resolution times result in a higher score contribution.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e339 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e342 ">
              <p>The score sums all normalized journey components and scales the
                total by using the
                <span class="apiname">CCSI_Journey_Experience_Score_Equal_Weight_prm</span>
                parameter.
              </p>
              <p style="margin-bottom:0;">This strategy treats every stage of the lifecycle
                from marketing engagement to service resolution as equally
                critical. It acknowledges that a journey requires excellence at
                every handoff, preventing a strong sales experience from being
                undermined by poor service delivery.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Engagement Effectiveness Score (EES)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e473">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e476">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e473 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e476 ">
              <code>(Mobile Activity + Win Rate + Case Closure + Work Order
                                    Closure) × [Weight Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e473 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e476 ">
              <ul>
                <li>Mobile Engagement Activities Normalized</li>

                <li>Total Opportunities Win Rate Normalized</li>

                <li>Ratio for Total Cases Closed/Created Normalized</li>

                <li>Ratio For Total Work Orders Closed and Created Normalized</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e473 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e476 ">
              <ul>
                <li>Mobile Activity: Sum of SMS and WhatsApp interactions.</li>

                <li>Win Rate: Percentage of opportunities won vs. closed.</li>

                <li>Closure Ratios: Ratio of closed cases/work orders to total
                  created.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e473 ">Normalization &amp; Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e476 ">
              <ul>
                <li>Volume Normalization: Mobile activity counts are normalized
                  against organizational baselines to fit a 0–100 scale.</li>

                <li>Ratios: Win rates and closure ratios are standard
                  percentages scaled to 0–100.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e473 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e476 ">
              <p>The score sums the normalized engagement components and scales
                the total by using the
                <span class="apiname">CCSI_Engagement_Effectiveness_Score_Equal_Weight_prm</span>
                parameter.
              </p>
              <p style="margin-bottom:0;">By weighing mobile interactions, sales wins, and
                service closures equally, this score validates true engagement.
                It filters out noise by requiring that high activity levels are
                matched by actual outcomes, making sure to measure meaningful
                commitment rather than busy work.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Revenue Health Score (RHS)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e593">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e596">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e593 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e596 ">
              <code>(Upsell + Campaign Revenue + MRR + (100 - Revenue at Risk))
                                    × [Weight Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e593 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e596 ">
              <ul>
                <li>Upsell Cross-Sell Identified During Visits Normalized</li>

                <li>Campaign-to-Revenue Contribution Normalized</li>

                <li>Monthly Recurring Revenue Normalized</li>

                <li>Revenue at Risk Normalized (Inverted)</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e593 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e596 ">
              <ul>
                <li>Revenue Logic: Sums MRR and Upsell opportunities.</li>

                <li>Risk Logic: Revenue at Risk is inverted (<code>100 -
                                            RAR</code>) to make sure that high risk negatively
                  impacts the score.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e593 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e596 ">
              <ul>
                <li>Financial Normalization: MRR and Upsell values are
                  normalized to a 0–100 scale based on defined ranges.</li>

                <li>Risk Inversion: Revenue at Risk is inverted (<code>100 -
                                            Normalized Risk</code>) so that 0 risk results in a
                  maximum score contribution.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e593 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e596 ">
              <p>The score sums the revenue components and scales the total by
                using the
                <span class="apiname">CCSI_Revenue_Health_Score_Equal_Weight_prm</span>
                parameter.
              </p>
              <p style="margin-bottom:0;">This strategy balances growth potential with
                stability. It makes sure that a high-growth account isn’t rated
                as healthy if it carries significant revenue risk, aligning the
                score with sustainable financial performance.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Operations Score (OPS)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e716">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e719">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e716 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e719 ">
              <code>(Work Order Closure + FTFR + Case Closure + (100 -
                                    Resolution Time) + (100 - Bounce Events)) × [Weight
                                    Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e716 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e719 ">
              <ul>
                <li>Ratio For Total Work Orders Closed and Created Normalized</li>

                <li>FTFR Normalized</li>

                <li>Case Resolution Speed Normalized (Inverted)</li>

                <li>Ratio for Total Cases Closed/Created Normalized</li>

                <li>Mobile Engagement Bounce Events Normalized (Inverted)</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e716 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e719 ">
              <ul>
                <li>Efficiency: Resolution Speed and Bounce Events are inverted
                  (<code>100 - KPI</code>) so that lower times and
                  fewer bounces increase the score.</li>

                <li>Success Rates: FTFR and Closure Ratios are added
                  directly.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e716 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e719 ">Inversions: Both Case Resolution Speed and Mobile Engagement
              Bounce Events are explicitly inverted (<code>100 - Normalized
                                    Value</code>) so that lower times and fewer errors increase
              the score.</td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e716 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e719 ">
              <p>The score sums the 5 operational components and scales the total
                by using the
                <span class="apiname">CCSI_Operations_Score_Equal_Weight_prm</span>
                parameter.
              </p>
              <p style="margin-bottom:0;">This approach penalizes inefficiencies while
                rewarding success. It makes sure that operational speed doesn’t
                come at the cost of quality, providing a clear metric for
                service delivery effectiveness.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Customer Health Score (CHS)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e833">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e836">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e833 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e836 ">
              <code>(Positive Sentiment + Case Closure Ratio + FTFR + (100 -
                                    Open Cases) + (100 - Work Order Vol) + (100 - RAR) + (100 -
                                    Complaints)) × [Weight Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e833 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e836 ">
              <ul>
                <li>Open Support Cases Normalized (Inverted)</li>

                <li>Positive Sentiment Normalized</li>

                <li>Ratio for Total Cases Closed/Created Normalized</li>

                <li>FTFR Normalized</li>

                <li>Work Order Volume Normalized (Inverted)</li>

                <li>Revenue at Risk Normalized (Inverted)</li>

                <li>Total Complaints Raised By Users Normalized (Inverted)</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e833 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e836 ">
              <ul>
                <li>Positive Indicators: Sentiment, Closure Ratio, and FTFR are
                  added directly.</li>

                <li>Risk Indicators: Open Cases, Work Order Volume, Revenue at
                  Risk, and Complaints are explicitly inverted (<code>100 -
                                            KPI</code>) in the formula to reward low volumes of
                  negative signals.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e833 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e836 ">Risk Inversion: Explicit (<code>100 - Normalized
                                Value</code>) logic is applied to Open Support Cases, Work Order
              Volume, Revenue at Risk, and Total Complaints. Lower volumes in
              these areas result in higher score contributions.</td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e833 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e836 ">
              <p>The score sums all health indicators and scales the total by
                using the
                <span class="apiname">CCSI_Customer_Health_Score_Equal_Weight_prm</span>
                parameter.
              </p>
              <p style="margin-bottom:0;">By inverting negative sentiment and weighing it
                alongside positive signals, this strategy acts as an early
                warning system. It makes sure that a rise in negative
                interactions immediately drags down the score, flagging
                emotional disconnects before they turn into formal complaints or
                churn events.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Churn Risk Index (CRI)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e957">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e960">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e957 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e960 ">
              <code>(Complaints + Mobile Negative Interactions + Revenue at Risk
                                    + Negative Sentiment) × [Weight Parameter]</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e957 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e960 ">
              <ul>
                <li>Total Complaints Raised By Users Normalized</li>

                <li>Mobile Engagement Negative Interactions Normalized</li>

                <li>Revenue at Risk Normalized</li>

                <li>Negative Sentiment Normalized</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e957 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e960 ">Risk Summation: A direct sum of all normalized risk KPIs. Higher
              values contribute to a higher Churn Risk Index.</td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e957 ">Normalization &amp; Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e960 ">Risk Accumulation: All components (Complaints, Negative
              Interactions, Revenue at Risk, Negative Sentiment) are normalized to
              a 0–100 scale where Higher = Higher Risk. No inversion is
              applied.</td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e957 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e960 ">
              <p>The score sums all risk components and scales the total by using
                the <span class="apiname">CCSI_Churn_Risk_Index_Score_Equal_Weight_prm</span>
                parameter.</p>
              <p style="margin-bottom:0;">Unlike other scores, this is a risk accumulator. By
                summing complaints, disengagement, and sentiment drops, it makes
                sure that any single red flag contributes to the alert level.
                This creates a highly sensitive metric designed to trigger
                retention interventions immediately.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Customer Lifetime Value (CLV)

<table class="slds-table slds-table_bordered slds-max-medium-table_stacked slds-m-bottom_small ">
        <colgroup>
          <col style="width:50%">
          <col style="width:50%">
        </colgroup>
        <thead class="slds-text-title_caps ">
          <tr class="">
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e1056">Element</th>
            <th scope="col" class="slds-cell-wrap" style="vertical-align:top;" id="d7125e1059">Details</th>
          </tr>
        </thead>
        <tbody>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1056 ">Formula</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1059 ">
              <code>MIN(100, (Total Revenue + Total Orders + Renewals + Positive
                                    Sentiment) × [Weight Parameter])</code>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1056 ">Measure</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1059 ">
              <ul>
                <li>Total Revenue Normalized</li>

                <li>Total Orders Created Normalized</li>

                <li>Total Renewal Orders Normalized</li>

                <li>Positive Sentiment Normalized</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1056 ">Calculation Logic</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1059 ">
              <ul>
                <li>Summation: Adds normalized values for Revenue, Orders,
                  Renewals, and Sentiment.</li>

                <li>Capping: The final score is explicitly capped at 100 by
                  using the <code>MIN()</code> function to handle
                  potential outliers.</li>

              </ul>
            </td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1056 ">Normalization and Thresholds</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1059 ">Cumulative Totals: Total Revenue, Order Counts, and Renewals are
              normalized against organizational baselines to a 0–100
              scale.</td>

          </tr>
          <tr class="">
            <td data-label="Element" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1056 ">Weighting Strategy</td>

            <td data-label="Details" class="slds-cell-wrap" style="vertical-align:top;" headers="d7125e1059 ">
              <p>The score sums the value KPIs and scales the total by using the
                <span class="apiname">CCSI_Customer_Lifetime_Value_Score_Equal_Weight_prm</span>
                parameter.
              </p>
              <p style="margin-bottom:0;">This strategy connects hard values such as revenue
                and orders with soft values such as sentiment and loyalty. It
                identifies customers who aren’t engaged today, but emotionally
                invested for tomorrow.</p>
            </td>

          </tr>
        </tbody>
      </table>

## Considerations

When interpreting or configuring these scores, keep these details in mind:

- The calculation logic includes mechanisms such as `COALESCE` or `IFNULL` functions to handle missing data. If a specific data source isn't available or returns null values, that component is excluded from the average.
- Items marked with (LV), such as `AccountsAtRisk_LV` are logical views in the CSI Score semantic model. These aren’t DMOs but virtual tables that pre-join multiple DMOs to simplify the final score calculation.