Sentiment Scoring
Auto-detect frustrated customers from inbound ticket replies and triage by mood, not just by SLA.
Sentiment scoring runs each inbound customer message through your workspace's AI provider and labels the ticket with how the customer is feeling. Use it to spot upset customers before they churn, prioritize negative-sentiment tickets in your queue, and watch for sudden trends after a release.
Sentiment is on by default and can be disabled per workspace.
How It Works
Every time a customer message arrives — through the portal, the widget, an inbound email, or the public API — Workestra:
- Sends the message to your workspace's configured AI provider
- Receives a sentiment label and a numeric score
- Stores both on the ticket
- Caches the result so identical messages don't re-bill the LLM
The work happens in the background. The ticket is created and visible immediately; the sentiment badge appears within a few seconds.
Sentiment Labels
| Label | Score range | Meaning | Common triggers |
|---|---|---|---|
| Positive | 0.5 to 1.0 | The customer is happy, grateful, or complimentary | "Thanks!", "This works perfectly", "Love it" |
| Neutral | -0.2 to 0.5 | Routine question or status request | "How do I do X?", "What's the status?" |
| Negative | -0.7 to -0.2 | Frustrated, disappointed, or annoyed | "This is broken", "I've been waiting", "Disappointing" |
| Urgent | below -0.7 | Demanding immediate action or escalation | "I need this fixed NOW", "This is unacceptable", "I'm cancelling" |
Score values are stored too, so dashboards and exports can sort by raw negativity rather than only by bucket.
Where Sentiment Appears
| Surface | Behavior |
|---|---|
| Tickets list | Color-coded badge per row + a Sentiment filter chip in the toolbar |
| Ticket detail header | Single badge next to status and priority, with the score in a tooltip |
| Webhooks | The ticket.sentiment_changed event fires when the label moves between buckets |
| Saved views | A view can pin a sentiment value as a filter |
| Dashboard | Aggregate sentiment trend (when enabled in the analytics dashboard) |
Disabling Sentiment
Permission required: workspace Admin or Owner.
To turn sentiment off for the workspace:
- Go to Support > Settings
- Find Sentiment scoring
- Toggle the Enabled switch off
When disabled:
- New inbound messages are not sent to the LLM
- Existing sentiment labels stay in place (historical data isn't deleted)
- The sentiment filter chip still works against historical data
- The daily backfill job stops scoring untagged tickets
You can re-enable at any time. The backfill job will resume scoring untagged tickets the next day.
Backfill for Existing Tickets
When you first turn sentiment on, you may have many tickets without scores. A daily backfill job picks up to 200 untagged tickets per workspace per run and scores them in chronological order (newest first).
A workspace with 10,000 untagged tickets will fully backfill in ~50 days. If that's too slow, contact support to request a manual catch-up run.
Cost and Caching
Each sentiment scoring call goes to your workspace's configured AI provider (OpenAI, Moonshot, xAI, or Deepseek) and uses your API key — Workestra doesn't bill for the inference itself.
Identical messages are cached by SHA-256 hash for 30 days. A customer who pastes the same complaint into ten tickets only triggers one LLM call.
Sentiment uses a small, fast model on each provider. Typical cost: less than $0.01 per 100 tickets.
Privacy Notes
- The customer's message text is sent to your AI provider in full, exactly as the customer wrote it
- No identifiers (email, ticket ID, account) are sent — just the message body
- Cached results live in your workspace's database, never shared across workspaces
- Disabling sentiment removes the LLM from the ingestion path entirely
When NOT to Trust the Label
Sentiment is a signal, not a verdict. The model has known weaknesses:
- Sarcasm. "Oh great, another bug" may be tagged neutral or positive
- Technical language. Stack traces and error messages often score negative even when the customer is calm
- Short messages. "Help" or "?" produce noisy results — too little signal
- Non-English messages. Accuracy drops on languages other than English; treat as a rough hint
Always read the message itself before acting on the label.
Next Steps
- Tickets — How sentiment surfaces in the ticket list and detail
- Saved Views — Save a "negative sentiment" view for daily triage
- Webhooks — React to sentiment changes in real time