> For the complete documentation index, see [llms.txt](https://docs.saleschat.pro/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.saleschat.pro/application/ai-analytics.md).

# AI Analytics

How to read your AI agent's analytics — what a session is, what the AI tells you about each one, and how to use it.

A lead messages you at 11:40pm asking whether you have a 2BHK available in Powai. Your AI answers, checks availability, learns their budget and move-in date, and routes them to your sales team — all before anyone on your side wakes up.

The next morning you want to know: **did that go well?**

That is what AI Analytics is for. Open your AI agent and go to the **Analytics** tab. It has two views: **Overview**, the charts, and **Sessions**, the list of individual conversations. This page explains what you are looking at in both.

{% hint style="info" %}
Elsewhere in this documentation, "agent" means a person on your team. On this page we always say **AI agent** or **the AI** when we mean the AI, and **your team** when we mean people.
{% endhint %}

## Start with one conversation

Everything in AI Analytics counts one thing: a **session**. One row in the Sessions list is one session.

A session is one stretch of your AI working with one lead — from the moment it picks up the conversation to the moment it finishes, hands over, or the lead goes quiet.

One thing about sessions surprises people, so it is worth saying plainly: **a returning lead starts a new session.** If that Powai lead comes back a week later, that is a second session with its own row and its own result. The AI still remembers them — it will not re-ask questions it already asked — but for counting purposes it is a fresh conversation.

{% hint style="info" %}
So **Total AI Sessions** of 50 means fifty stretches of AI work, not fifty different people. The **AI Runs per Lead** chart shows you how those sessions spread across leads.

**Active AI Sessions** is the exception to the date range at the top of Overview: it is always "right now", and the card says so.
{% endhint %}

## What we tell you about each session

When a session ends, the AI looks back over the whole conversation and answers four separate questions. Three of them are columns on the Sessions list — **Verdict**, **Goal** and **Category**. The fourth, **Qualification**, sits inside the session itself.

| Question          | What it tells you                   | Who decides what it means                  |
| ----------------- | ----------------------------------- | ------------------------------------------ |
| **Verdict**       | What happened to the conversation   | Fixed by SalesChat — the same for everyone |
| **Goal**          | Did the AI do the job you gave it   | You configure your goals                   |
| **Qualification** | Is this lead worth your team's time | You write the criteria                     |
| **Category**      | What the conversation was about     | You define the labels                      |

These are four different questions, and the answers do not follow from each other. Your AI can resolve someone's question beautifully and still miss its "book a site visit" goal. It can hit the goal with a lead who was never going to buy. Keeping the four apart is the whole point — if one were calculated from another, you would be looking at the same number twice.

{% hint style="warning" %}
The most common mistake is reading the Verdict as a report card on your AI. It is not. The Verdict says what happened to the **conversation**. The Goal says how your **AI** did. Read them side by side.
{% endhint %}

## The Verdict — what happened

Every finished session gets exactly one Verdict. It is the coloured chip in the **Verdict** column, and the headline of the **Verdict** card when you open a session. The whole list:

| Verdict                | You'll see this when                                                                                                 |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------- |
| **Resolution**         | The lead's question or need was actually dealt with.                                                                 |
| **Procedural handoff** | The AI finished its part and passed the lead to your team, as designed.                                              |
| **Qualified**          | The lead meets the bar you set.                                                                                      |
| **Disqualified**       | The lead was checked against your bar and does not meet it.                                                          |
| **Escalated**          | Someone on your team had to step in — the ask was out of scope, the lead demanded a person, or a teammate took over. |
| **Spam**               | Junk, a bot blast, abuse, or gibberish.                                                                              |
| **Abandoned**          | The lead was genuinely engaged, then stopped replying.                                                               |
| **No outcome**         | Nothing meaningful happened — a bare "hi", or a question the lead never came back to answer.                         |
| **Pending**            | A rare bookkeeping value on older sessions. It means no verdict was ever worked out.                                 |

A session that is still running has **no chip at all** — the column is empty and the card reads "Not yet judged". The verdict is worked out when the conversation finishes.

Open a session and the Verdict card also shows the facts behind the chip: **Close reason**, **Handoff reason** and **Triggered by**.

{% hint style="info" %}
**Procedural handoff and Escalated both send a lead to a person. The difference matters.**

**Procedural handoff** is success — the AI did what you designed it to do and routed the lead onward, by the procedure you gave it. **Escalated** is the fallback — the AI could not carry on, or someone took the conversation off it.

A rising Procedural handoff number is usually good news. A rising Escalated number is where you go looking for problems.
{% endhint %}

#### Why a "qualify then route" reads as Qualified

If your AI qualifies a lead and then hands them to sales, you will see **Qualified**, not Procedural handoff. That is deliberate. The valuable fact about that conversation is that you got a qualified lead out of it — the routing is just how it was delivered.

## Goals — did the AI do your job

A **goal** is a milestone you give an AI agent under **Build → Goals**: "book a site visit", "collect a phone number", "get the renewal confirmed". Each one is a **Name** and a **Prompt** telling the judge how to decide it was met. You can set several; each is judged independently when the session ends.

The **Goal** column shows one of two chips — **Achieved** or **Not achieved** — or a dash. Open the session and the Goal card either shows the chip with the AI's reasoning underneath, or says "Not yet judged".

{% hint style="warning" %}
**A session is Achieved if the lead met any one of the AI agent's goals** — not all of them. If you have configured five goals and see "Achieved", it means at least one landed, not five. (The Goal card says the same thing if you hover it.)
{% endhint %}

A dash is not a failure. It means we could not judge the session — there was nothing to go on, or no goal was configured. We would rather tell you nothing than tell you something wrong.

On Overview, the **Goals** chart is a different cut: it breaks sessions down by *which* goal was achieved, and gathers everything else into one bar labelled "no goal achieved".

## Qualification — is this lead worth your time

Goals ask whether your **AI** did its job. Qualification asks whether the **lead** is worth pursuing. They are kept apart on purpose, so a completed goal on a hopeless lead does not flatter either number.

Under **Build → Qualification** you define what "qualified" means for this AI agent as a set of named criteria — Budget, Timeline, Decision maker, Location, whatever your team actually uses. Each criterion takes a **Name** and a **Prompt** describing what evidence in the conversation means it was met, plus two hints for the judge: **Required**, for a criterion a lead really should not miss, and **Weight**, its relative emphasis. The AI weighs them together and the result comes back on the session as the **Qualified** or **Disqualified** verdict.

There is no Qualification column on the list. Open a session and the Verdict card carries a **Qualification criteria** list, each criterion marked **Pass**, **Fail** or **not evaluated**, with a line explaining the call. That is how you answer "we're losing leads — is it budget or timing?" On a session with no breakdown recorded, the card says so rather than showing an empty list.

{% hint style="info" %}
Two things to know:

**Qualification stays switched off until you write criteria.** No criteria, no Qualified or Disqualified verdicts — ever.

**Disqualified is a finding, not a gap.** It means the AI checked your criteria and the lead genuinely does not meet them. If the conversation never produced enough to judge, the criterion reads "not evaluated" instead. We never turn missing information into a rejection.
{% endhint %}

## Categories — what it was about

Categories are your own labels for what a conversation was about: `billing`, `site visit`, `renewal`, `not interested`. You define the list under **Build → Categories**, each one a **Name** and a **Prompt** telling the classifier when a conversation belongs in it.

A category gets attached one of two ways: the AI picks one during the conversation, or, if it did not, we work out the best fit when the session closes. Every session gets at most one, so the **Categories** chart on Overview always adds up to your session total.

If a conversation genuinely does not match anything on your list, the Category column shows a dash rather than forcing it into the nearest label.

## What doesn't get counted

Some conversations deliberately stay out of your numbers:

* **Playground sessions.** Testing your AI agent is not real traffic and must never move a real number. Playground sessions appear in the Sessions list — filter the **Origin** dropdown to **Playground** to find them, and note that they are never judged or summarised — but they never reach any Overview chart.
* **Mock leads.** The test personas you create for the playground never reach real CRM or analytics — the Mock leads page says so at the top.
* **Retried messages.** If a message had to be retried internally, only the one that actually went out is counted.

## Reading the numbers honestly

A few things that will otherwise trip you up.

> **Sessions that are still running have no verdict yet.**
>
> Compare finished sessions with finished sessions. The **Status** filter separates Active from Ended.

> **"Not achieved" is not the same as "we couldn't tell".**
>
> The **Goal** filter on the Sessions list has three options — **Achieved**, **Not achieved** and **Unknown**. Unknown sessions are the ones nobody could judge, not goals your AI missed. If a goal number looks harsher than you expected, filter to Unknown and see how many are sitting there.

> **Overview and Sessions are not counting the same rows.**
>
> The Sessions list shows everything, playground included. Overview shows real traffic only. And a chart can be scoped tighter still — **Handoff Reason** says on the card that it covers only sessions whose end reason was a handoff. Read the card's own note before comparing it to a total.

> **Older sessions were judged by earlier rules.**
>
> We have improved how goals are aggregated and how categories are assigned since the earliest sessions were recorded, and we do not rewrite history. Sessions from before the verdicts existed carry **Pending**. Comparing this month to a year ago is not always comparing like with like; recent periods are sound.

> **An empty chart tells you which kind of empty it is.**
>
> **No data yet** means this has never happened for your AI agent — no handoffs to break down, no goals judged. **No data for this range** means it has happened, just not in the dates you picked. Widen the range before concluding anything.

> **A busy AI agent and an effective one are not the same thing.**
>
> **Total AI Sessions** tells you volume. The **Verdict** chart tells you value. Read them together.

## Glossary

| Term              | Meaning                                                                                    |
| ----------------- | ------------------------------------------------------------------------------------------ |
| **AI agent**      | The AI that handles conversations for you. Configured per use case.                        |
| **Session**       | One stretch of AI work with one lead. One row in the Sessions list.                        |
| **Verdict**       | What happened to the conversation. One per finished session.                               |
| **Goal**          | An objective you set for an AI agent under Build → Goals.                                  |
| **Qualification** | Whether the lead meets your criteria.                                                      |
| **Criterion**     | One named test inside qualification, e.g. Budget.                                          |
| **Category**      | Your own label for what the conversation was about.                                        |
| **Handover**      | Passing a lead from the AI to a person on your team. Shown on the session's Handover card. |
| **Playground**    | Where you test an AI agent. Listed in Sessions, never counted on Overview.                 |
