> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zelinqa.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Progress and qualification

> Understand when a dimension is covered and how qualification levels change the required depth.

**A dimension is a topic; an intent is what a question seeks to learn.** The selected level determines how many distinct intents must be addressed in each dimension.

## Essential, Balanced, Deep

| Level | Intents to cover per dimension | Purpose |
| - | - | - |
| **Essential** (`essential`) | **1** | Get an initial understanding of the topic. |
| **Balanced** (`balanced`) | **2** | Examine two distinct aspects of the topic. |
| **Deep** (`deep`) | **3** | Explore the topic further. |

The threshold is capped by the available intents: if a dimension contains only two, Deep requires two. It does not require inventing a third question.

### Example: the Budget dimension

| Question | Intent |
| - | - |
| “What budget have you planned?” | Learn the amount. |
| “What funding have you set aside?” | A close rephrasing that may belong to the same intent. |
| “Can that amount change?” | Understand flexibility. |
| “Has that budget been approved?” | Learn its approval status. |

If the first two questions are grouped in the published version, answering both **does not cover two intents**. Addressing the amount and flexibility, however, covers two distinct aspects.

## When is an intent covered?

* A question belonging to that intent has an answer recorded as `asked_answered`.
* Or the sought information is already known: confirmed or not-applicable data, or a sufficiently covered exploratory topic.

For the second case, an exploration is satisfied at a coverage of `0.70` or above. **Merely asking a question, receiving a refusal, or getting no answer is not enough.** An answer already recorded as `asked_answered` counts even if analysis did not extract every possible detail.

Grouping of close questions depends on the published version. The client does not manually supply an intent list on every call.

## Read a dimension's status

| Computed status | Meaning |
| - | - |
| `not_started` | No progress recorded. |
| `in_progress` | The topic has been started, but the intent threshold is not met. |
| `covered` | The level's threshold is met and no data in this dimension is conflicted. |
| `blocked` | A data contradiction remains unresolved, even if the intent threshold is met. |

`computed_status` reflects that calculation. `effective_status` also takes an explicit decision from your integration into account, such as excluding a dimension.

<Note>Progress percentage and status are not interchangeable. A dimension may be `covered` without showing 100%: its threshold is met, without exhausting all its questions or data.</Note>

## A covered dimension versus overall success

**Covering a dimension does not guarantee that all required data has been collected.** For example, at Essential level, budget has been addressed but an email address declared as success information is still missing. The dimension may be covered while overall qualification remains incomplete.

Without an explicit override from your integration, overall success also checks:

* that success information in non-excluded dimensions is confirmed or not applicable;
* that data in mandatory dimensions is concluded;
* that average coverage of contributing dimensions meets the selected level: no additional minimum for Essential, **80% for Balanced**, **100% for Deep**.

This average measures data and intent coverage, **not the percentage of questions asked**. An optional role imposes no coverage threshold, but information explicitly declared as necessary for success must still be collected.

<Info>A mandatory dimension with no data to collect does not, on its own, prevent overall success. Choose the [information to collect](/en/studio/success-information) carefully rather than relying only on a role's name.</Info>

## Who decides to stop?

`objective_achieved` and `max_turns_reached` are warnings, not automatic stops. Your application decides whether to continue or conclude. `action: "stop"` means no question is available. See [decision signals](/en/api-reference/decision-signals).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.