> For the complete documentation index, see [llms.txt](https://docs.slatecx.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.slatecx.com/guides/review-insights.md).

# Review insights

Two reporting surfaces exist. **Dashboard** (`/dashboard`) is Slate-centric; **Insights** (`/insights`) is aggregate.

## Dashboard

```
GET  /tenants/:tenantId/dashboard/summary
GET  /tenants/:tenantId/dashboard/slates
GET  /tenants/:tenantId/dashboard/slates/:slateId
GET  /tenants/:tenantId/dashboard/slates/:slateId/quick-scan
```

You can star, unstar, archive, and unarchive Slates, open a read-only preview session, and link a Slate to a HubSpot contact.

## Insights reports

| Report           | Range applies to                                                               |
| ---------------- | ------------------------------------------------------------------------------ |
| Slate Funnel     | Slate creation, with qualifying viewed cohorts evaluated through the range end |
| Wave Prompts     | Wave events                                                                    |
| Card Performance | Each card-signal timestamp                                                     |
| Conversations    | User-message timestamps, before grouping whole conversation rows               |

## Time ranges

Every primary query uses a fixed-UTC `period` contract.

| Value          | Meaning                                                                    |
| -------------- | -------------------------------------------------------------------------- |
| `all_time`     | Everything                                                                 |
| `last_7_days`  | Rolling 7 days                                                             |
| `last_30_days` | Rolling 30 days. This is the default                                       |
| `last_90_days` | Rolling 90 days                                                            |
| `custom`       | Requires both `rangeFrom` and `rangeTo` as RFC 3339 instants ending in `Z` |

Custom ranges are half-open `[rangeFrom, rangeTo)`. Presets reject custom bounds. A future end is clamped to report generation time. Responses return the effective boundaries and `timeZone: "UTC"`. No tenant-selected timezone is supported.

## Comparisons

The four top-level reports accept `comparisonMode`:

| Mode              | Meaning                                                                                    |
| ----------------- | ------------------------------------------------------------------------------------------ |
| `previous_period` | The immediately preceding equal-duration range                                             |
| `custom`          | Requires one earlier `comparisonRangeFrom`; the server derives the end and rejects overlap |

Comparison is unavailable for `all_time`, and never appears in drilldowns, transcripts, exports, or analysis evidence.

## Drilldowns

Drilldown routes take the parent response's exact `rangeFrom` and `rangeTo` rather than a relative period, so the snapshot cannot drift.

```
GET /tenants/:tenantId/insights/slate-funnel/:slateId/user-messages
GET /tenants/:tenantId/insights/card-performance/:tenantCardId/contributors
GET /tenants/:tenantId/insights/card-performance/:tenantCardId/surveyjs-results
GET /tenants/:tenantId/insights/conversations/:threadId/user-messages
```

## Conversation analysis

```
GET /tenants/:tenantId/insights/conversations/analysis
GET /tenants/:tenantId/insights/conversations/analysis-runs/:runId/evidence
```

TODO: Describe the conversation analysis categories and how a run is triggered.

## Export user messages

Two paths:

```
GET  /tenants/:tenantId/insights/user-messages/export
POST /tenants/:tenantId/insights/user-messages/export-download-tickets
```

An export ticket freezes the effective custom bounds, so redemption cannot drift from what you saw.

## See also

* [Goals](/concepts/goals.md)
