Signals and mood
See how contacts feel about your agent, and which replies made it worse.
Keiki reads every user turn shortly after it ends. It gives the contact's message a mood score and checks it against a fixed set of signals. You don't need to set anything up: the results show up on the agent's Quality tab and in Conversations as turns are reviewed.
Mood
Each user turn gets a mood score from 0 to 4:
| Score | Mood |
|---|---|
| 0 | Angry |
| 1 | Annoyed |
| 2 | Neutral |
| 3 | Satisfied |
| 4 | Delighted |
A user's message is read as a reaction to the agent's previous reply. When the mood falls by 1.5 or more since the contact's last turn, or falls to annoyed or lower, the turn is a mood drop. The reply that came before it is then judged, and the reason is shown next to the drop. When the mood climbs back the same way, the turn is a recovery.
If a turn couldn't be read, it shows as not classified. It never counts as neutral. Turns with no message from a person aren't scored: loop turns, staff steers, internal notes, and API turns that only send back client tool results.
Signals
| Signal | Comes from |
|---|---|
| Praise | The contact's message |
| Frustration | The contact's message |
| User correction | The contact's message |
| Task failure | The contact's message and the agent's reply |
| Unsupported claim | The agent said it did something it had no tool call for |
| Scheduled action error | A reminder or scheduled action didn't happen |
| Positive / negative reaction | Message reactions |
| Runtime faults | Errors, failed tools, spent budgets, stalls, repeat replies |
Where to see it
- Quality tab → Signals: each signal over the last day, 7, 30 or 90 days. It shows the number of events, the share of users who hit it, and the change against the period before. Select a signal to see the turns it fired on. Biggest mood drops lists the sharpest falls along with the judge's reason.
- Conversations: the Mood column shows each contact's latest mood, with an arrow when it just dropped or recovered. Filter on Mood dropped (7 days) to find conversations that went wrong this week. Inside a conversation, the mood strip has one point per user turn. Select a point to jump to that message and open the reply behind it.
Retention and billing
Mood and signals are kept for 90 days. That's why the 90-day range has no period-over-period change. Scoring uses the same OpenRouter key as your quality reviews: your organization's own key if one is saved, otherwise Keiki's.