Simpli Insights
Theme discovery and pattern analysis for customer support cases.
Insights helps support teams understand what customers are really asking about. Cluster cases into themes, detect emerging topics, suggest category taxonomies, and analyse distribution patterns — all powered by LLM analysis.
Simpli Insights provides theme discovery, trend detection, and category analysis for support case data.
Configuration
| Variable | Default | Description |
|---|---|---|
APP_PORT | 8012 | Server port |
LITELLM_MODEL | openai/gpt-5-mini | LLM model for analysis |
MAX_CLUSTERS | 20 | Maximum number of theme clusters |
MIN_CLUSTER_SIZE | 3 | Minimum cases per cluster |
CORS_ORIGINS | * | Allowed CORS origins (comma-separated) |
Start the server
simpli-insights serveAPI endpoints
All endpoints are under the /api/v1 prefix.
POST /api/v1/themes
Discover themes from a batch of support cases.
Request:
{
"cases": [
{"id": "c-1", "subject": "Can't log in", "content": "Password reset not working"},
{"id": "c-2", "subject": "Login broken", "content": "Getting 403 on sign-in page"},
{"id": "c-3", "subject": "Account locked", "content": "Too many failed attempts"}
]
}Response:
{
"audit_id": "i-abc123",
"total_cases": 3,
"themes": [
{
"theme_id": "t-1",
"name": "Authentication Issues",
"description": "Login, password, and account access problems",
"case_count": 3,
"case_ids": ["c-1", "c-2", "c-3"],
"sample_subjects": ["Can't log in", "Login broken"]
}
],
"uncategorized_case_ids": []
}POST /api/v1/emerging
Detect emerging topics by comparing recent cases against a baseline.
{
"recent_cases": [
{"id": "c-10", "subject": "SSO not working", "content": "SAML error after update"}
],
"baseline_cases": [
{"id": "c-1", "subject": "Password reset", "content": "Standard password issue"}
]
}POST /api/v1/categories
Suggest a category taxonomy from case data, or validate existing categories.
POST /api/v1/distribution
Analyse how cases distribute across existing categories.
GET /health
Health check.
Integration example
import httpx
client = httpx.Client(base_url="http://localhost:8012")
# Discover themes
themes = client.post("/api/v1/themes", json={
"cases": [
{"id": "c-1", "subject": "Billing question", "content": "Charged twice"},
{"id": "c-2", "subject": "Double charge", "content": "Two charges on card"},
{"id": "c-3", "subject": "Wrong amount", "content": "Billed $99 instead of $49"},
],
}).json()
for theme in themes["themes"]:
print(f"{theme['name']}: {theme['case_count']} cases")
# Detect emerging topics
emerging = client.post("/api/v1/emerging", json={
"recent_cases": recent_cases,
"baseline_cases": last_month_cases,
}).json()
for topic in emerging["topics"]:
print(f"NEW: {topic['topic']} ({topic['case_count']} cases, +{topic['growth_rate']:.0%})")Next steps
- Executive Reporting — Feed Insights data into executive dashboards
- Integration Overview — Connect Insights to your ticketing system
- Model Selection — Choose the right model for clustering accuracy