WorkestraDocs
ModulesSupport

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:

  1. Sends the message to your workspace's configured AI provider
  2. Receives a sentiment label and a numeric score
  3. Stores both on the ticket
  4. 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

LabelScore rangeMeaningCommon triggers
Positive0.5 to 1.0The customer is happy, grateful, or complimentary"Thanks!", "This works perfectly", "Love it"
Neutral-0.2 to 0.5Routine question or status request"How do I do X?", "What's the status?"
Negative-0.7 to -0.2Frustrated, disappointed, or annoyed"This is broken", "I've been waiting", "Disappointing"
Urgentbelow -0.7Demanding 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

SurfaceBehavior
Tickets listColor-coded badge per row + a Sentiment filter chip in the toolbar
Ticket detail headerSingle badge next to status and priority, with the score in a tooltip
WebhooksThe ticket.sentiment_changed event fires when the label moves between buckets
Saved viewsA view can pin a sentiment value as a filter
DashboardAggregate sentiment trend (when enabled in the analytics dashboard)

Disabling Sentiment

Permission required: workspace Admin or Owner.

To turn sentiment off for the workspace:

  1. Go to Support > Settings
  2. Find Sentiment scoring
  3. 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