> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulate.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Customer Retention

> Surface churn signals, dissatisfaction, and save opportunities on every call.

Surface the moments that decide whether a customer stays — cancellation intent, dissatisfaction, competitor mentions, and save opportunities — so teams can act before churn.

Churn is just one lens. The same conversational signals surface upsell readiness, loyalty, and product feedback — so you can aim the package at whatever outcome your team owns. Use this package as a starting point — add or swap in any [preset from the catalog](/velma/behaviors/using-behaviors#listing-available-presets), or [define your own behaviors](/velma/behaviors/custom-behaviors) to fit your use case.

**This package includes:** 6 conversation types · 5 participant roles · 23 behaviors.

## Use this package

The config below is ready to use as-is — download or copy it and pass it as the `config` payload in a Velma Triage request. Its `behaviors` are [preset references](/velma/behaviors/using-behaviors): the API expands each `preset:<identifier>` into its full definition at request time, so you don't need the criteria inline to run the package.

<a className="dp-download" data-target="cfg-customer-retention" data-filename="customer-retention.json" href="#">Download customer-retention.json</a>

<Accordion title="View / copy full config">
  <div id="cfg-customer-retention">
    ```json theme={null}
    {
      "conversation_types": [
        {
          "conversation_type_uuid": "11111111-1111-4111-8111-111111111003",
          "name": "Enterprise IT support",
          "short_description": "Any call to assist an employee in accessing or managing internal IT resources",
          "detailed_description": "business-operationsitprofessional"
        },
        {
          "conversation_type_uuid": "11111111-1111-4111-8111-111111111008",
          "name": "General Customer Support Call",
          "short_description": "Any call where a customer is contacting a business to assist them with the use of a service or goods provided by the business",
          "detailed_description": "customer-supportprofessional"
        },
        {
          "conversation_type_uuid": "11111111-1111-4111-8111-111111111027",
          "name": "Finance Account Support",
          "short_description": "Any call to support the configuration, management, or cancellation of financial accounts",
          "detailed_description": "customer-supportprofessional"
        },
        {
          "conversation_type_uuid": "11111111-1111-4111-8111-111111111028",
          "name": "Consumer Technical Support",
          "short_description": "Any call to assist a customer in using a business's software or website",
          "detailed_description": "customer-supportitprofessional"
        },
        {
          "conversation_type_uuid": "11111111-1111-4111-8111-111111111029",
          "name": "Insurance Policy or Claims Management",
          "short_description": "Any call to check on the status of, change, cancel, or check on the status of a claim for an insurance policy.",
          "detailed_description": "customer-supportinsuranceprofessional"
        },
        {
          "conversation_type_uuid": "11111111-1111-4111-8111-111111111031",
          "name": "Retail Customer Support Call",
          "short_description": "A call to coordinate the delivery or transfer of goods to a consumer",
          "detailed_description": "customer-supportprofessionalretail"
        }
      ],
      "participant_roles": [
        {
          "participant_role_uuid": "22222222-2222-4222-8222-222222222004",
          "name": "Support Specialist",
          "short_description": "Someone who works with employees or contractors to solve problems with things like IT, logistics, or communication",
          "detailed_description": ""
        },
        {
          "participant_role_uuid": "22222222-2222-4222-8222-222222222005",
          "name": "Employee",
          "short_description": "someone who is employed by company and exists in professional settings",
          "detailed_description": ""
        },
        {
          "participant_role_uuid": "22222222-2222-4222-8222-222222222012",
          "name": "Customer Service Representative",
          "short_description": "A representative from a business who is assisting a customer with an issue they are having",
          "detailed_description": ""
        },
        {
          "participant_role_uuid": "22222222-2222-4222-8222-222222222014",
          "name": "Insurance Agent",
          "short_description": "A customer support representative from an insurance company",
          "detailed_description": ""
        },
        {
          "participant_role_uuid": "22222222-2222-4222-8222-222222222017",
          "name": "Customer",
          "short_description": "The recipient of a service or good",
          "detailed_description": ""
        }
      ],
      "behaviors": [
        "preset:complaints",
        "preset:vishing",
        "preset:account_impersonation",
        "preset:action_plan_created",
        "preset:cancelled_order",
        "preset:service_churn",
        "preset:off_topic_discussion",
        "preset:coercion_manipulation",
        "preset:return_fraud_attempt",
        "preset:feigned_ignorance",
        "preset:bargaining_manipulation",
        "preset:pre_established_professional_relationship",
        "preset:rapport_building",
        "preset:customer_gratitude",
        "preset:inclusive_practices",
        "preset:unaddressed_question",
        "preset:refund_or_credit_issued",
        "preset:issue_not_resolved",
        "preset:inappropriate_speech",
        "preset:discriminatory_practices",
        "preset:issue_resolved",
        "preset:threat_based_harassment",
        "preset:sexual_harassment"
      ]
    }
    ```
  </div>
</Accordion>

### Expand the full criteria

To produce a self-contained config with every behavior's full criteria inlined — for review, customization, or pinning a snapshot — fetch the live [preset catalog](/velma/behaviors/using-behaviors#listing-available-presets) and merge it into the downloaded config. The catalog is the source of truth for detection criteria.

<CodeGroup>
  ```bash curl + jq theme={null}
  curl -s https://platform.modulate.ai/api/velma-2-batch/list-presets \
    -H "X-API-Key: $MODULATE_API_KEY" \
  | jq --slurpfile cfg customer-retention.json '
      [ $cfg[0].behaviors[] | ltrimstr("preset:") ] as $ids
      | { conversation_types: $cfg[0].conversation_types,
          participant_roles:  $cfg[0].participant_roles,
          behaviors: [ .presets[] | select(.identifier as $i | $ids | index($i)) ] }
    ' > customer-retention.full.json
  ```

  ```python Python theme={null}
  import os, json, requests

  cfg = json.load(open("customer-retention.json"))
  ids = {b.removeprefix("preset:") for b in cfg["behaviors"]}

  catalog = requests.get(
      "https://platform.modulate.ai/api/velma-2-batch/list-presets",
      headers={"X-API-Key": os.environ["MODULATE_API_KEY"]},
  ).json()["presets"]

  cfg["behaviors"] = [p for p in catalog if p["identifier"] in ids]
  json.dump(cfg, open("customer-retention.full.json", "w"), indent=2)
  ```
</CodeGroup>

`customer-retention.full.json` keeps the same `conversation_types` and `participant_roles` and replaces each preset reference with its full behavior definition — drop it into the `config` payload exactly like the preset version.

## Conversation types

The interaction contexts this package expects to see.

| Name                                  | What it is                                                                                                                    |
| ------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| Enterprise IT support                 | Any call to assist an employee in accessing or managing internal IT resources                                                 |
| General Customer Support Call         | Any call where a customer is contacting a business to assist them with the use of a service or goods provided by the business |
| Finance Account Support               | Any call to support the configuration, management, or cancellation of financial accounts                                      |
| Consumer Technical Support            | Any call to assist a customer in using a business's software or website                                                       |
| Insurance Policy or Claims Management | Any call to check on the status of, change, cancel, or check on the status of a claim for an insurance policy.                |
| Retail Customer Support Call          | A call to coordinate the delivery or transfer of goods to a consumer                                                          |

## Participant roles

The speaker roles the package distinguishes.

| Name                            | What it is                                                                                                         |
| ------------------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Support Specialist              | Someone who works with employees or contractors to solve problems with things like IT, logistics, or communication |
| Employee                        | someone who is employed by company and exists in professional settings                                             |
| Customer Service Representative | A representative from a business who is assisting a customer with an issue they are having                         |
| Insurance Agent                 | A customer support representative from an insurance company                                                        |
| Customer                        | The recipient of a service or good                                                                                 |

## Behaviors

The 23 signals this package detects. Each maps to a reusable `preset:<identifier>` you can drop into the `behaviors` array of any [BatchConfig](/velma/behaviors/using-behaviors) — the config above already references them.

<Note>
  Full detection criteria are not duplicated here. The live preset catalog is the source of truth — retrieve the exact criteria for any behavior by name from the [`list-presets` endpoint](/velma/behaviors/using-behaviors#listing-available-presets).
</Note>

| Behavior                                  | What it detects                                                                                                                                                                                                                                               | Preset                                             |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------- |
| Complaints                                | Customer expresses dissatisfaction or grievance. We detect this through elevated volume, sharp intonation, frustration markers, accelerated pacing, and emotional intensity.                                                                                  | `preset:complaints`                                |
| Vishing                                   | Attempts to elicit sensitive information through deceptive voice interactions. We detect vishing based on abnormal call pacing, probing question patterns, stress-induced pitch shifts, and background noise suggesting call centers or spoofed environments. | `preset:vishing`                                   |
| Account Impersonation                     | Fraudulent attempt to access another's account. We detect this through identity inconsistencies, rehearsed responses, stress-induced vocal shifts, and abnormal verification behavior.                                                                        | `preset:account_impersonation`                     |
| Action Plan Created                       | Explicit agreement on next steps or follow-up. We detect this through structured enumeration, decisive tone, slowed pacing, confirmation cues, and reduced ambiguity in delivery.                                                                             | `preset:action_plan_created`                       |
| Cancelled Order                           | Customer cancels a previously placed order. We detect this using finality in tone, decisive pacing, administrative phrasing, and reduced emotional engagement after confirmation.                                                                             | `preset:cancelled_order`                           |
| Service Churn                             | Customer decides to cancel an ongoing service. We detect this through resignation tone, conclusive phrasing, disengaging cadence, and emotional withdrawal.                                                                                                   | `preset:service_churn`                             |
| Off-topic Discussion                      | Conversation largely unrelated to call purpose. We detect this using semantic drift paired with relaxed pacing, reduced task-oriented urgency, and tonal divergence from initial intent.                                                                      | `preset:off_topic_discussion`                      |
| Coercion Manipulation                     | Social engineering through intimidation or threats. We detect this using dominance-oriented tone, reduced empathy markers, pressure timing, and aggressive pacing.                                                                                            | `preset:coercion_manipulation`                     |
| Return Fraud Attempt                      | Fraudulent product return behavior. We detect this using scripted explanations, defensive tone, timing irregularities, and emotional mismatch with stated circumstances.                                                                                      | `preset:return_fraud_attempt`                      |
| Feigned Ignorance                         | Pretending towards ignorance to garner fraudulent sympathy. We detect this using inconsistent knowledge signals, exaggerated confusion tone, strategic pauses, and implausible vocal uncertainty.                                                             | `preset:feigned_ignorance`                         |
| Bargaining Manipulation                   | Social engineering through cajoling and persuasion. We detect this through pressure-based tone, strategic silence, inconsistent emotional signaling, and coercive pacing changes.                                                                             | `preset:bargaining_manipulation`                   |
| Pre-established Professional Relationship | Evidence of prior interaction between speakers. We detect this through shorthand references, reduced formalities, synchronized turn-taking, familiarity in tone, and absence of introductory framing.                                                         | `preset:pre_established_professional_relationship` |
| Rapport Building                          | Positive alignment forming a professional relationship. We detect this through reciprocal tone matching, affirming backchannels, relaxed pacing, and increasing conversational ease.                                                                          | `preset:rapport_building`                          |
| Customer Gratitude                        | Customer expresses satisfaction or appreciation. We detect this using positive emotional tone, softened volume, upward inflection, reduced tension markers, and closing politeness cues.                                                                      | `preset:customer_gratitude`                        |
| Inclusive Practices                       | Respectful language promoting inclusion and equity. We detect this through careful word choice reinforced by respectful tone, measured pacing, non-dismissive intonation, and calm emotional delivery.                                                        | `preset:inclusive_practices`                       |
| Unaddressed Question                      | Failure to adequately respond to a posed question. We detect this through avoidance pauses, topic-shifting intonation, increased filler usage, and prosodic signals of deflection.                                                                            | `preset:unaddressed_question`                      |
| Refund or Credit Issued                   | Confirmation that financial remediation occurred. We detect this using transactional tone, formal cadence, confirmation phrasing, system-interaction pauses, and reduced customer tension.                                                                    | `preset:refund_or_credit_issued`                   |
| Issue Not Resolved                        | Customer's problem remains unresolved. We detect this through lingering frustration, repeated issue framing, unresolved tonal tension, and absence of closure cues.                                                                                           | `preset:issue_not_resolved`                        |
| Inappropriate Speech                      | Unprofessional or unsuitable spoken content. We detect this using aggressive tone, boundary-crossing language, emotional volatility, and contextual mismatch with professional norms.                                                                         | `preset:inappropriate_speech`                      |
| Discriminatory Practices                  | Subtle prejudicial decision-making indicators. We detect this through biased framing, dismissive tone shifts, unequal politeness levels, and coded language delivered with emotional distance.                                                                | `preset:discriminatory_practices`                  |
| Issue Resolved                            | Customer's problem successfully addressed. We detect this using relief markers, positive tonal shift, relaxed pacing, confirmation language, and conversational closure cues.                                                                                 | `preset:issue_resolved`                            |
| Threat-based harassment                   | Targeted threats toward an individual in a professional context. We detect this using aggressive volume, hostile prosody, explicit threat markers, and sustained emotional intensity.                                                                         | `preset:threat_based_harassment`                   |
| Sexual Harassment                         | Unwanted sexualized speech or advances. We detect this through suggestive intonation, boundary-testing pauses, inappropriate familiarity, and discomfort responses from others.                                                                               | `preset:sexual_harassment`                         |
