Summarize a support conversation into a structured agent-handoff brief, grounded only in the thread.
Condense a support conversation into a structured agent-handoff brief — customer_issue, key_points, actions_taken, pending_items, customer_sentiment, handoff_notes — so the next agent understands a thread cold in seconds. Strict JSON, not prose.
Built for shift changes, escalations, and tier-2 handoffs: the parts a colleague actually needs, separated cleanly (what's been done vs. what's still pending), and grounded only in the conversation itself.
| Entrypoint | Renders | Inputs |
|---|---|---|
system | Summarization instructions + handoff structure + embedded output schema | optional maxPoints |
user | The delimited conversation block to summarize | text |
text (string, required) — the conversation/thread. Turns labeled by speaker (Customer: / Agent:) summarize best.maxPoints (integer, optional) — cap on the number of key_points. Omit to let the model decide.{
"customer_issue": "Customer was double-charged for their May subscription and wants the duplicate refunded.",
"key_points": ["Charged twice on May 3", "Verified both charges are for the same plan"],
"actions_taken": ["Confirmed the duplicate charge", "Submitted a refund request to billing"],
"pending_items": ["Refund confirmation from billing (3-5 business days)"],
"customer_sentiment": "mixed",
"handoff_notes": "Customer was frustrated at first but calmed down once the refund was started; reassure them on timing."
}
customer_issue is the core problem in a sentence or two — not the back-and-forth.actions_taken vs. pending_items: a promise that hasn't been fulfilled is pending, not taken. The prompt enforces this split so nothing falls through a handoff.customer_sentiment is positive / neutral / negative / mixed; mixed is reserved for genuinely contrasting sentiment across the thread (e.g. started angry, ended satisfied).handoff_notes is the free-text "what you should know" line. Empty string when there's nothing extra.{{{text}}}) so special characters in the thread are never HTML-escaped.customer_issue, empty arrays, neutral sentiment, empty handoff_notes (specified, not left to chance).additionalProperties: false, closed enum for sentiment, complete required.Verified by local render and a live battle-test (correctly splits a fulfilled action from a still-pending refund). Suggested default model claude-sonnet-4-6 at temperature: 0.