AI Support Guide

Simpli Summary

AI-powered conversation summarization and entity extraction for customer support.

Summary condenses multi-turn conversations into concise summaries with key points, action items, and structured handoff briefs. Agents get instant context without reading entire threads.

Simpli Summary generates summaries, handoff briefs, and entity extractions from support conversations using LLM-powered analysis.

Configuration

VariableDefaultDescription
APP_PORT8008Server port
LITELLM_MODELopenai/gpt-5-miniLLM model for summarization
MAX_SUMMARY_LENGTH500Maximum summary length in characters
INCLUDE_ACTION_ITEMStrueInclude action items in summaries
CORS_ORIGINS*Allowed CORS origins (comma-separated)

Start the server

simpli-summary serve

API endpoints

All endpoints are under the /api/v1 prefix.

POST /api/v1/summarize

Generate a summary from a conversation.

Request:

{
  "ticket_id": "T-789",
  "conversation": [
    {"role": "customer", "content": "I can't access the billing portal"},
    {"role": "agent", "content": "Let me check your account permissions"},
    {"role": "customer", "content": "I've tried resetting my password 3 times"},
    {"role": "agent", "content": "I see the issue — your account permissions were reset during our migration"}
  ],
  "max_length": 300
}

The role field accepts values from the AuthorType enum: customer, agent, or system.

Response:

{
  "summary_id": "s-abc123",
  "summary": "Customer unable to access billing portal after multiple password reset attempts. Agent identified root cause as account permissions being reset during a system migration.",
  "key_points": [
    "Billing portal access blocked",
    "Customer attempted 3 password resets",
    "Root cause: permissions reset during migration"
  ],
  "action_items": [
    "Restore account permissions",
    "Confirm billing portal access"
  ]
}

POST /api/v1/handoff

Generate a structured handoff brief for agent transfers.

Request:

{
  "ticket_id": "T-789",
  "conversation": [
    {"role": "customer", "content": "I can't access billing"},
    {"role": "agent", "content": "I've tried a few things but need to escalate"}
  ],
  "from_agent": "agent-1",
  "to_agent": "agent-2"
}

Response:

{
  "brief_id": "b-def456",
  "brief": "Customer has been unable to access the billing portal. Initial troubleshooting included password reset and cache clearing, but the issue persists.",
  "customer_sentiment": "frustrated",
  "open_issues": ["billing portal access"],
  "attempted_solutions": ["password reset", "cache clearing"]
}

POST /api/v1/extract

Extract entities, issues, and action items from a conversation.

{
  "ticket_id": "T-789",
  "conversation": [
    {"role": "customer", "content": "The export feature in the analytics dashboard is broken"}
  ]
}

GET /health

Health check.

Integration example

import httpx

client = httpx.Client(base_url="http://localhost:8008")

# Summarize a conversation
summary = client.post("/api/v1/summarize", json={
    "ticket_id": "T-456",
    "conversation": [
        {"role": "customer", "content": "How do I export my data?"},
        {"role": "agent", "content": "Go to Settings > Export"},
        {"role": "customer", "content": "I don't see that option"},
    ],
}).json()

print(summary["summary"])
print(summary["action_items"])

# Generate a handoff brief
handoff = client.post("/api/v1/handoff", json={
    "ticket_id": "T-456",
    "conversation": [
        {"role": "customer", "content": "How do I export my data?"},
    ],
    "from_agent": "agent-1",
    "to_agent": "agent-2",
}).json()

print(handoff["brief"])

Next steps

On this page