Skip to main content

Catch Churn Early with Intelligent Risk Scores

Catch Churn Early with Intelligent Risk Scores header

Customer Success Managers spend countless hours reading support tickets, juggling renewal dates, and trying to sense when a client is slipping away. The effort is real, but the signals are often buried in free‑form notes and scattered data. A single missed warning can cost months of revenue and strain the relationship before it’s even noticed.

You describe it

Churn Risk Analyzer

1. Overview

The Churn Risk Analyzer reviews a customer’s recent support interactions and key account details, calculates a risk score for each account, and flags any accounts that appear to be at high risk of churn. The output is a concise list of flagged accounts with a risk score, a risk level, and the reasons behind the flag.

2. Business Value

  • Early warning – Gives Customer Success Managers (CSMs) a data‑driven early‑warning system to intervene before a customer leaves.
  • Prioritization – Lets CSMs focus their time on the accounts most likely to churn, increasing retention rates.
  • Objective decision‑making – Turns qualitative support notes into an objective, repeatable score that can be tracked over time.

3. Operational Context

SituationWhen it RunsWho Uses ItFrequency
Quarterly business review – to highlight at‑risk accounts before a review callCustomer Success Manager, Sales OperationsUsually once per quarter, or before any scheduled renewal discussionQuarterly or as needed
Monthly health‑check – quick check of high‑risk accountsCSM team lead, Account‑level CSMMonthly (or after a major product change)Monthly

4. Inputs

InputTypeDetails Provided
Support Log DocumentPDF file (one per account)The PDF contains all support tickets, live‑chat transcripts, email threads, and any notes for a single account for the most recent 30‑day window. Each ticket entry includes:
• Ticket ID
• Date & time
• Issue type
• Status (Open/Closed)
• Agent notes (free‑form text)
• Any sentiment label already attached (if any)
Customer MetadataList of objects (one per account) – each object contains the fields listed in the Customer Metadata Fields table belowA simple list (e.g., CSV‑style list or JSON‑style list) that includes one entry per account. The list must contain every field described in the Customer Metadata Fields table. The list can be supplied in any plain‑text list format; each field is identified by its plain‑language label (e.g., “Account Name”) and its value.

Customer Metadata Fields

FieldDescriptionExample
Account NameThe recognizable name of the customer organization.“Acme Corp.”
Account IDBusiness‑side identifier (e.g., customer‑facing code).“AC-001”
Current PlanSubscription or service plan currently active.“Premium”
Monthly Usage (units)Total usage units (e.g., API calls, licenses, transactions) recorded in the last month.1 250
Number of Support Tickets (Last 30 days)Total count of tickets logged during the last 30‑day window.5
Number of Open TicketsCount of tickets still in an “Open” or “Pending” status.2
Average Sentiment ScoreAverage of sentiment scores (0–100) derived from the tickets; higher numbers indicate more positive sentiment. If no sentiment is present, use “Neutral (50)”.34
Last Ticket DateDate of the most recent support ticket.2025‑07‑28
Contract Expiration DateThe date the current contract ends.2025‑12‑15
Last Payment DateDate the most recent invoice was paid.2025‑06‑30

(All date values must be in YYYY‑MM‑DD format. The list must contain one row for each account to be evaluated.)

5. Outputs

OutputContentsFormatting Rules
High‑Risk Account FlagsA list of accounts that have a Risk Score of 80 or higher. Each entry contains:
Account Name
Account ID
Risk Score (0‑100, two‑decimal places)
Risk Level (always “High”)
Reasons for Flag (bullet‑style list of one or more reasons)• Render as a plain‑text table with the columns shown above.
• Values are separated by tabs or spaces for readability.
• Reasons are semicolon‑separated within the cell, e.g. “High ticket volume; Low usage; Negative sentiment”.
Optional Summary (Optional)If required, a short paragraph summarizing the total number of high‑risk accounts and the average risk score across them.Use a single paragraph in sentence case, no bullet points.

Note – The SOP never creates a new system ID; it uses the existing Account ID from the input metadata.

High‑Risk Account Flags – Field Detail

FieldDescription
Account NameThe human‑readable name of the customer.
Account IDBusiness identifier from the metadata (no new ID created).
Risk ScoreCalculated risk number, 0–100. Two decimal places.
Risk LevelAlways “High” (because the output is limited to high‑risk accounts).
Reasons for FlagBullet‑style list of the key factors that pushed the score into the high‑risk zone (e.g., “> 3 open tickets; average sentiment < 40”).

6. Detailed Plan & Execution Steps

  1. Collect the inputs – Verify that the PDF file for each account and the associated Customer Metadata list are available.

  2. Extract ticket data – From the PDF, pull each ticket’s: • Date • Status • Agent notes • Any existing sentiment label.

  3. Calculate per‑account metrics:

    • Ticket Volume = number of tickets in the last 30 days (from metadata).
    • Open Ticket Count = count of tickets with status “Open” (from PDF).
    • Average Sentiment = average of all sentiment scores; if missing, assign 50 (neutral).
    • Usage Ratio = Monthly Usage ÷ “Average monthly usage” benchmark (set in Appendix C).
    • Days Since Last Ticket = today’s date minus Last Ticket Date.
    • Days to Expiration = Contract Expiration Date – today’s date.
  4. Apply the scoring algorithm (see Appendix C for weight values).

    • Ticket Volume (weight 0.30): Score = (10 × Number of tickets ÷ 10) (capped at 100).
    • Open Tickets (weight 0.20): Score = Open × 15 (max 100).
    • Sentiment (weight 0.20): Score = 100 – Average Sentiment (lower sentiment adds more risk).
    • Usage (weight 0.15): Score = 100 – (Usage Ratio × 100) (lower usage adds more risk).
    • Contract Proximity (weight 0.10): Score = (90 – Days to Expiration ÷ 1 day) (capped at 100).

    Risk Score = sum of the weighted sub‑scores. Round to two decimals.

  5. Identify high‑risk accounts – If Risk Score ≥ 80, add the account to the High‑Risk Account Flags list.

  6. Determine reasons for flag – For each high‑risk account, record any of the following that contributed a sub‑score ≥ 15:

    • “High ticket volume” (Ticket Volume sub‑score ≥ 15)
    • “Multiple open tickets” (Open Ticket sub‑score ≥ 15)
    • “Low sentiment” (Sentiment sub‑score ≥ 15)
    • “Low usage” (Usage sub‑score ≥ 15)
    • “Contract near expiration” (Contract Proximity sub‑score ≥ 15)

    List each reason as a separate bullet in the Reasons for Flag cell.

  7. Create the output table – Populate the High‑Risk Account Flags table with the fields defined in Section 5.

  8. Optional summary – Count total high‑risk accounts and compute the average risk score across them, then write a single‑sentence summary if requested.

  9. Review and finalize – Ensure the output matches the formatting rules, then deliver the table.

7. Validation & Quality Checks

CheckHow to PerformPass Criteria
All required fields presentVerify each account entry includes every field listed in the Customer Metadata Fields table.No missing fields.
Score rangeVerify that each Risk Score is a number between 0 and 100 (two‑decimal places).Within range.
Reason list not emptyFor each flagged account, confirm that the Reasons for Flag cell contains at least one reason.At least one reason per row.
Score calculationRe‑calculate the score for a random sample of 3–5 accounts manually and compare.Values match within 0.01.
Document completenessEnsure that each PDF contains at least one ticket record.If none, treat as “No ticket activity” and set risk to 0 (not flagged).
Consistency of datesVerify all dates follow the YYYY‑MM‑DD format.All dates match the format.
Output formatConfirm that the table columns and headings match the layout in Section 5.Exact match.

If any check fails, flag the affected account(s) for Manual Review and do not include them in the final output.

8. Special Rules / Edge Cases

SituationAction
Missing SentimentUse default value 50 (neutral) for the sentiment score.
Missing Usage DataAssume average usage (set usage ratio = 1, so the usage component adds 0 risk).
No Open TicketsThe “Open Ticket” component contributes 0 to the risk score.
Zero tickets in last 30 daysSet Ticket Volume component to 0 (no risk from volume).
Contract already expiredAdd a penalty of 20 points to the risk score (see Appendix C).
Multiple PDF files for same accountCombine all tickets before computing metrics; treat the collection as a single set.
Missing required metadata fieldFlag the whole record for manual review; do not produce an output entry for that account.
Risk Score exactly 80Still considered High and should be flagged.
All accounts have low riskProduce an empty High‑Risk Account Flags table (still output the header).
Processing failure (e.g., corrupt PDF)Log the error, mark the account as “Error – Unable to process”, and continue with remaining accounts.

9. Example

Input

  • Support Log Document (PDF) – 2 tickets for “Acme Corp.” (Account ID: AC‑001)

    Ticket 1: 2025-07-15 | Status: Open | Issue: “Billing discrepancy” | Agent notes: “Customer upset about over‑charge. Sentiment: 25”
    Ticket 2: 2025-07-20 | Status: Closed | Issue: “Login problem” | Agent notes: “Issue resolved. Sentiment: 70”
    
  • Customer Metadata

    [
      {
        "Account Name": "Acme Corp.",
        "Account ID": "AC-001",
        "Current Plan": "Premium",
        "Monthly Usage (units)": 1200,
        "Number of Support Tickets (Last 30 days)": 2,
        "Number of Open Tickets": 1,
        "Average Sentiment Score": 47,
        "Last Ticket Date": "2025-07-20",
        "Contract Expiration Date": "2025-12-15",
        "Last Payment Date": "2025-06-30"
      }
    ]
    

Output

High‑Risk Account Flags

Account Name   | Account ID | Risk Score | Risk Level | Reasons for Flag
--------------------------------------------------------------
Acme Corp.   | AC-001   | 84.30   | High     | High ticket volume (2 tickets in last 30 days); Low sentiment (average 47); 1 open ticket

Explanation:

  • Ticket volume (2 tickets) → 30 pts (30 % of 100).
  • Open tickets (1) → 15 pts.
  • Average sentiment (47) → 53 pts (100 – 47).
  • Usage (1200/average 1500) → 10 pts (low usage).
  • Contract proximity (≈150 days left) → 10 pts.
  • Total = 30 + 15 + 53 + 10 + 10 = 118 → capped at 100 → final 84.30 after weighting.
  • Because the score ≥ 80, the account is listed as a high‑risk flag with the three key reasons.

Appendix A – FAQ

  1. What if the sentiment score is missing in the ticket notes? The system assigns a neutral sentiment score of 50 for that ticket, which contributes no additional risk.

  2. Do I need to include every ticket from the last 30 days? Yes. The more complete the log, the more accurate the risk score. If a ticket is missing, the score may be slightly lower, but the process still runs.

  3. Can the model be used for a single account or a whole list? Both. The input list can contain one or many account objects; the process handles each entry independently.

  4. What does a “High‑risk” label mean? A “High‑risk” account has a Risk Score ≥ 80, indicating a strong likelihood of churn without intervention.

  5. What if the PDF cannot be opened? Mark that account with “Error – Unable to process PDF” and exclude it from the final flag list.

  6. How frequently should the analysis be run? Recommended monthly to align with monthly health‑check cycles; can also be run before a major renewal period.

  7. What if the “Contract Expiration Date” is missing? The contract‑expiration component is omitted for that account; the risk score is calculated without it.

  8. Can the weighting of the score components be changed? Yes. Adjust the weights in Appendix C to match your organization’s priorities.

  9. What if a customer has no tickets at all? They receive a Risk Score of 0 (no risk from support activity) and are not flagged as high‑risk.

  10. What does “Average Sentiment Score” represent? A numeric value between 0 (very negative) and 100 (very positive). It is the average of all sentiment scores (or default 50 if none).


Appendix B – Glossary

  • Account Name – The business name or brand that the company works with.
  • Account ID – The customer‑facing identifier used in internal systems (e.g., “AC‑001”).
  • Current Plan – Subscription or service level the customer is paying for (e.g., “Premium”).
  • Monthly Usage – The amount of product or service units consumed during the last month (units can be calls, transactions, seats, etc.).
  • Ticket – A single support interaction (e.g., a help‑desk ticket, chat conversation, or email thread).
  • Open Ticket – A ticket that has not been resolved or closed.
  • Average Sentiment Score – A numeric measure of the positivity/negativity of the conversation, ranging from 0 (very negative) to 100 (very positive).
  • Risk Score – A calculated number (0–100) that quantifies the likelihood a customer will churn. Higher numbers mean higher risk.
  • Risk Level – Classification based on the Risk Score: High (≥ 80), Medium (50‑79), Low (< 50). In this SOP we only output High.
  • Reasons for Flag – List of the key drivers that pushed an account into the high‑risk category.
  • Contract Expiration Date – The calendar date when the current contract ends.
  • Last Payment Date – The date on which the latest invoice was paid.
  • High‑Risk Account Flags – The final table of accounts flagged as high‑risk, containing the fields described in the Outputs section.

Appendix C – Reference Materials

1. Risk Scoring Weights (default)

ComponentWeightFormula (max 100)Explanation
Ticket Volume0.30Min( (Number of Tickets ÷ 10) × 10, 100 ) × 0.30More tickets increase risk.
Open Tickets0.20Min(Number of Open Tickets × 15, 100) × 0.20Unresolved tickets add risk.
Sentiment0.20(100 – Avg Sentiment) × 0.20Lower sentiment → more risk.
Usage0.15(100 – (Monthly Usage ÷ Baseline Usage) × 100) × 0.15Lower usage relative to benchmark adds risk.
Contract Proximity0.10Max(90 – Days to Expiration, 0) × 0.10Near‑term expiration adds risk.
Penalty for Expired ContractN/A+20 (add to final score)Applied only when expiration date has passed.

Baseline Usage is defined as the average monthly usage across all accounts for the past 6 months (available from the internal reporting dashboard).

2. Sentiment Categories

Sentiment RangeInterpretation
0 – 30Very negative
31 – 70Neutral‑to‑positive
71 – 100Very positive

If a ticket contains no sentiment information, treat it as Neutral (50).

3. Reason Codes (used in “Reasons for Flag”)

CodeDescription
High ticket volumeMore than 5 tickets in the last 30 days (or equivalent weighted score).
Multiple open ticketsMore than 2 open tickets.
Low sentimentAverage sentiment score < 40.
Low usageMonthly usage < 70 % of baseline usage.
Contract near expiration< 30 days until contract ends.
Expired contractContract already expired.

4. Formatting Guidelines

  • Dates: All dates must be in YYYY‑MM‑DD format.
  • Numbers: Use two decimal places for Risk Score (e.g., 84.30).
  • Reason List: Separate multiple reasons with semicolons; each reason should be a short phrase (max 5 words).
  • Table: Use a header row; align columns with spaces or tabs for readability.
  • No IDs: Do not generate new IDs. Use existing Account ID from the metadata.

5. Example of Scoring Calculation (for reference)

AccountTicket Volume (score)Open Tickets (score)Sentiment (score)Usage (score)Contract (score)Total (before weighting)
Acme Corp.3015531010118 → 84.30 after applying weights
(Explanation)2 tickets → 301 open → 15Avg 47 → 53 (100‑47)Usage 1200/1500 → 10150 days left → 10(Weight applied)

The final Risk Score is the weighted sum of the above components, capped at 100 then rounded to two decimals.

6. Error Handling

  • File Not Readable: Record “Error – File unreadable” and skip.
  • Missing Field: Record “Error – Missing <Field Name>” and skip.
  • Unexpected Format: Record “Error – Unexpected format” and skip.

All error cases should be logged in a separate Processing Log (not part of the SOP output) for follow‑up by the operations team.


Additional Notes

  • Data consistency is crucial: ensure the Account ID used in the metadata matches the one referenced in the PDF file name (if applicable).
  • When working with a large batch of accounts, batch the PDFs but still treat each account individually—do not mix ticket data between different accounts.
  • If a Customer Metadata entry contains extra fields that are not needed for the risk calculation (e.g., “Customer Loyalty Score”), ignore those fields for the purposes of this SOP.
  • The Risk Scoring weights can be updated once a quarter based on analysis of churn outcomes. Keep the Risk Scoring Weights table up‑to‑date in Appendix C.
  • If the High‑Risk Account Flags output is empty (no high‑risk accounts), still return the table header and an explanatory note: “No high‑risk accounts identified in this run.”

**

We build it

Analyze Churn Risk

Upload support log PDFs and customer metadata to analyze churn risk and flag high-risk accounts.

Churn Risk Analysis Input

Upload support log documents and enter customer metadata for analysis.

Try me

The hidden cost of missed churn signals

When churn goes undetected, it isn’t just a lost sale—it’s a cascade of hidden expenses:

  • Revenue loss that appears on the bottom line weeks later.
  • Re‑engagement effort that drains time from high‑value activities.
  • Team morale that suffers when preventable exits happen repeatedly.

Even the most diligent CSM can’t manually track every ticket, sentiment shift, or contract date across a growing portfolio. The result is a reactive approach that waits until it’s too late.

From raw support logs to actionable insight

Support interactions are rich with clues—frequency of tickets, unresolved issues, tone of conversation. Turning that unstructured data into a clear, repeatable risk score is where the real value emerges. The workflow ingests PDFs of recent tickets, extracts key fields, combines them with account metadata, and calculates a weighted risk score that surfaces the most vulnerable accounts in seconds.

Early warning matters

A risk score of 80 or higher isn’t just a number; it’s a clear call to action that transforms vague intuition into a concrete, prioritized outreach plan.

How the Churn Risk Analyzer works for you

  • Early warning – CSMs receive a concise list of high‑risk accounts before renewal meetings, allowing proactive outreach.
  • Prioritization – The risk score ranks accounts, so you spend time where it matters most.
  • Objective decision‑making – Quantitative scores replace subjective gut feelings, making performance tracking reliable across teams.
  • Scalable consistency – Run the analysis quarterly or monthly with a single click; the results are always formatted the same way, ready for your CRM or reporting dashboard.

Real‑world value at a glance

AspectManual ProcessChurn Risk Analyzer
Data sourceIndividual ticket screens, spreadsheets, email threadsPDF tickets + metadata list
Time to insightHours to days per review cycleSeconds per run
ConsistencyVariable, prone to human errorFixed algorithm, repeatable
ActionabilityNarrative notes, no clear rankingRanked table with risk score and reasons
FrequencyLimited by analyst capacityQuarterly, monthly, or on‑demand

Building confidence in your customer success strategy

Because the workflow follows a transparent scoring formula, you can audit the components—ticket volume, open tickets, sentiment, usage, contract proximity—and adjust weights as your business evolves. The “Reasons for Flag” column spells out exactly why each account is flagged, giving your team the context needed for a targeted conversation. Over time, the score becomes a trusted metric that aligns the entire organization around churn reduction.

Quick takeaways

  • Turn chaotic support logs into a single, actionable risk score.
  • Focus CSM effort on the accounts most likely to churn.
  • Replace guesswork with data‑driven early warnings.
  • Deploy the analysis on any schedule that matches your renewal cadence.

By embedding the Churn Risk Analyzer into your routine health‑check or quarterly business review, you move from reactive damage control to proactive relationship building—protecting revenue and strengthening the trust your customers have in your service.

Ready to Automate?

Get started with this workflow template in minutes. No complex setup required.

View Documentation