> For the complete documentation index, see [llms.txt](https://docs.klink.cloud/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.klink.cloud/advanced-setup/workflow-automation/ai-csat-scoring-workflow.md).

# AI CSAT Scoring Workflow

How to score CSAT (and sentiment) with AI when a conversation closes.

{% hint style="danger" %}
**Do not use the old five-workflow pattern** (one workflow per CSAT label, all on close). Multiple competing score workflows can overwrite each other; the last one to run wins. Use **one** workflow with **AI Conditions (Advanced)** and **Branch by AI output** instead.
{% endhint %}

## Recommended setup

Follow [**Sentiment and CSAT on close**](/advanced-setup/workflow-automation/recipe-sentiment-and-csat-on-close.md) (Recipe 4):

1. **Trigger:** **When a chat room is closed** (so the AI sees the entire conversation).
2. **Condition:** **AI Conditions (Advanced)** with a prompt that returns a single label (and "Reply with only the label"). Test on real chat history.
3. **Actions:** **Branch by AI output** for each label with **Set CSAT Score** (and **Set Sentiment Score** if you want both). Add an **Else** branch with **AI CSAT Score** and **AI Sentiment Score** as fallback.

### Score labels (CSAT)

Workflows can set CSAT from **Very satisfied** to **Very unsatisfied** via **Set CSAT Score**, or let AI choose via **AI CSAT Score**.

### Sentiment

**Set Sentiment Score** uses Positive / Neutral / Negative. **AI Sentiment Score** lets AI read the transcript and set sentiment.

## Why the old multi-workflow guide is outdated

Earlier docs described five separate workflows, each with a simple **AI Conditions** prompt and **Set CSAT Score**, ordered by priority. That approach is fragile:

* Several rules can match the same closed chat.
* Later workflows can **overwrite** earlier CSAT or sentiment values.
* Polite wording mid-conversation can mis-score if you do not score the **full** transcript at close with a single branched rule.

The product troubleshooting note is the same: use one close-triggered Advanced condition with branching; avoid multiple competing rules; re-score history from the CX Log.

## Re-score past cases

Use a **manual** workflow (trigger **When run manually**) with the same Advanced prompt and branching, then run it from **CX Log, then Run workflow** on selected cases. Step-by-step: [Manual Workflows Shortcut](https://docs.klink.cloud/advanced-setup/setup-workflow-automation/manual-workflows-shortcut) (Example 2).

## Viewing scores in the CX Log

* Open **CX Log** from the left menu.
* Filter by **Sentiment score** (Positive / Neutral / Negative) and **CSAT score**.
* Columns include **Sentiment score** and **CSAT score**.
* Edit scores inline when your role allows.
* Summary CSAT and sentiment also appear on the Analytics Dashboard Summary tab.

## Related

* [Sentiment and CSAT on close](/advanced-setup/workflow-automation/recipe-sentiment-and-csat-on-close.md)
* [Setup Workflow Automation](/advanced-setup/workflow-automation.md)
* [Manual Workflows Shortcut](https://docs.klink.cloud/advanced-setup/setup-workflow-automation/manual-workflows-shortcut)
