You are here:
Case Catch-Up & Insights Prompt Templates
Review the prompt templates that populate data in the Case Catch-Up & Insights card.
Required Editions
| View supported editions. | |
This article applies to: |
Service Assistant for Case with dynamic and guidance plans. |
This article doesn't apply to: |
Service Assistant for Messaging. |
Each insight has a base prompt template to populate data in the Case Catch-Up & Insights card. You can edit the prompt templates to add additional data to meet your business requirements. The prompt templates are only available for use within Case Catch-Up & Insights.
Prompt Template: Summarize Case Engagement
The Summarize Case Engagement prompt template generates a summary of the customer's intent, the case, and any relevant interaction history so reps can quickly understand why the customer is reaching out. The subject and description are included as default inputs. You can modify the template to add data and resources.
-----INSTRUCTIONS-----
Provide a concise summary of the following case record.
Subject: {!$Input:Case.Subject}
Description: {!$Input:Case.Description}
- Assuming case data is available, summarize the core issue or request described by the customer.
- If both subject and description are available, summarize based on both.
- If only the subject is available, summarize based on the subject alone.
- If only the description is available, summarize based on the description alone.
- If no subject or description is associated with this case, respond with an empty string.
-----Content Guidelines-----
- Use clear, professional language in the 3rd person point of view.
- Keep the summary concise— 2 to 5 sentences.
- Don't include markdown, JSON formatting, or any non-user friendly format.
- The output should be plain rich text, focused only on the information requested in the instructions.
Prompt Template: Summarize Related Account
The Summarize Related Account prompt template generates a summary of the customer's account information. The account name and description are included as default inputs. You can modify the template to add data and resources.
-----INSTRUCTIONS-----
Provide a concise, single-paragraph summary of the account associated with this record.
Account Name: {!$Input:Case.Account.Name}
Account Description: {!$Input:Case.Account.Description}
- If account data is available, always include the account name and account description. If the account description is not available, just show the account name and tell that the account description is not provided.
- If no account is associated with this record, return an empty string.
-----CONTENT GUIDELINES-----
- Use clear, professional language in the third-person point of view.
- Keep the summary concise (2 to 5 sentences).
- Do not include markdown, JSON, or any non-user-friendly formatting.
- Output plain text only.
- Focus strictly on the requested information.
Prompt Template: Calculate Case Health Score
The Calculate Case Health Score prompt template generates a case health score (0 to 100) based on case data such as age, reopens, and escalations. The score also incorporates service level agreement and customer sentiment data when those features are configured. If Service Level Agreements and Customer Signals Intelligence aren't set up, then the score is based only on the case data metrics.
You can modify the template to provide additional metrics or modify the default scoring logic for each metric, such as the weight of each metric.
# INPUT DATA
Input String: {!$Input:InputText}
# EXTRACTION RULES
Parse the following variables from the Input String (formatted as Key=Value|Key=Value):
- TicketAgeHours (Numeric)
- CustomerSentimentScore (String: POSITIVE, NEGATIVE, NEUTRAL, MIXED)
- ReopenCount (Numeric)
- SLAStatus (String)
- NextSLATimeRemaining (String: e.g., "5 Days", "18 Hours", "30 Minutes")
- IsCurrentlyEscalated (Boolean)
- HasPastEscalation (Boolean)
# SCORING LOGIC
1. Ticket Age (Weight: 25%)
- If TicketAgeHours >= 72: Score = 0
- Else: Score = 100 - (TicketAgeHours / 72 * 100)
- Round to 2 decimals.
Status: GREEN if score > 80, YELLOW if 40-80, RED if < 40
2. Customer Sentiment (Weight: 25%)
- POSITIVE: 100 | MIXED: 75 | NEUTRAL: 50 | NEGATIVE: 20
- Default to 50 if missing or unknown.
Status: GREEN if > 80, YELLOW if 50-80, RED if < 50
3. Reopens (Weight: 10%)
- 0 Reopens: 100
- 1 Reopen: 60
- 2+ Reopens: max(0, 10 * (3 - ReopenCount))
Status: GREEN if 100, YELLOW if 60, RED otherwise
4. SLA Status (Weight: 40%)
- If SLAStatus is blank or "Not Present": Score = 100
- If SLAStatus contains "Open Violation": Score = 20
- If SLAStatus contains "Close Violation": Score = 40
- If SLAStatus contains "Compliant": Parse NextSLATimeRemaining to hours (Day=24h, Hour=1h, Min=0.016h).
- hoursRemaining <= 0: Score = 20
- 0 < hoursRemaining <= 4: Score = 40
- 4 < hoursRemaining <= 24: Score = 75
- hoursRemaining > 24: Score = 100
Status: GREEN if >= 80, YELLOW if 40-79, RED if < 40
# FINAL CALCULATION
1. Base Composite Score = (TicketAgeScore * 0.25) + (SentimentScore * 0.25) + (ReopenScore * 0.10) + (SLAScore * 0.40).
2. Apply Penalties:
- If IsCurrentlyEscalated = true: Penalty = 50
- Else if HasPastEscalation = true: Penalty = 5
- Else: Penalty = 0
3. Final Case Health Score = max(0, Base Composite Score - Penalty). Round to the nearest whole number.
4. Status Mapping:
- GREEN: Score >= 70
- YELLOW: Score 40-69.99
- RED: Score < 40
# OUTPUT INSTRUCTIONS
Return ONLY valid JSON.
{
"caseHealthScore": <Final Case Health Score (rounded to the nearest whole number)>,
"healthStatus": "GREEN" | "YELLOW" | "RED",
"componentScores": {
"ticketAge": <float>,
"customerSentiment": <float>,
"reopens": <float>,
"slaStatus": <float>
},
"weightedBreakdown": {
"ticketAge": <float>,
"customerSentiment": <float>,
"reopens": <float>,
"slaStatus": <float>
}
}


