# Analyzing Results

Every dataset you bring into BoundaryAI — a survey, an Excel upload, a Freshdesk-connector import, a Trustpilot-scraper run, a stack of interview PDFs — gets its own **Analysis** page. The page is **source-agnostic**: the same set of tabs, the same AI-driven themes, the same sentiment model, the same flag review and the same export tools work whether you're looking at 200 NPS comments or 5,000 scraped reviews.

This page covers the analysis surface for a single dataset. For the cross-dataset roll-up across a whole project — Super-Themes, AI Insights across all sources, scheduled reports — see [Feedback Groups](/boundaryai-docs/basics/feedback-groups.md). For the inputs that feed it, see [Creating a Survey](/boundaryai-docs/basics/surveys.md), [Uploading Data](/boundaryai-docs/basics/uploading-an-existing-dataset.md), [Connectors](/boundaryai-docs/basics/connect-to-your-existing-systems.md), and [Web Scraping & Social Listening Agents](/boundaryai-docs/basics/social-listening.md).

***

### Where the Analysis page lives

You reach the Analysis page from any dataset card in a Feedback Group:

* A survey — *Open analysis* on a published survey.
* An upload — *View analysis* on the upload card after processing completes.
* A connector survey — *Open analysis* on the connector card; updates live as new tickets sync.
* A scraping agent's output — *Open analysis* on the agent's data-source card.

***

### The four tabs

| Tab           | What it's for                                                                                             |
| ------------- | --------------------------------------------------------------------------------------------------------- |
| **Overview**  | Executive summary + headline metrics for the dataset. The first thing every reader sees.                  |
| **Thematics** | What the AI surfaced as recurring themes, with drill-down into representative comments and sub-themes.    |
| **Raw Data**  | Every individual response with search, sentiment filter, and click-through to the full respondent record. |
| **Flags**     | The signals you defined up front (safety, churn, feature request, etc.) matched against this dataset.     |

A **data-source card** sits at the top of the Overview tab whenever the dataset came from a connector or a scraper, showing connection status, last/next import timestamps, persisted filters, and a *Fetch new data* button. For native surveys and uploads the card is hidden so the Overview goes straight to insights.

The same page renders for every source. The only differences you see are source-specific affordances — *Build a report* and *Raw data* shortcuts on scraper outputs, *Fetch new data* on connectors — and which question types the dataset actually contains.

***

### Overview tab

#### Executive summary

A short, AI-generated narrative that reads like a one-paragraph briefing: what the dataset is about, what's emerging, what stands out. It's\
regenerated whenever you re-run the analysis or significantly change the data. If generation fails (rare — typically a transient issue with the AI provider), the tab surfaces a *Retry overview* button instead of pretending nothing happened.

#### In-depth summary

A *Show in-depth* toggle expands the summary into a longer multi-paragraph briefing. The first time you click it, the system queues an\
asynchronous generation; the result is cached and persists across sessions, so the next visitor sees it instantly. The job runs in the background — you can keep navigating while it produces.

#### Headline metrics

Two cards side-by-side:

* **Themes** — total themes detected, with a sentiment breakdown across positive / neutral / negative.
* **Comments** — total open-ended responses analysed, also with a sentiment breakdown.

Each card has a button that drops you directly into the relevant deeper tab (Thematics or Raw Data).

#### Key insights

A two-column block listing what the AI considered the **most positive aspects** and the **most negative aspects** of the dataset, with markdown-rendered context paragraphs. This is what most stakeholders read first, and it's the single block most likely to end up in a screenshot.

***

### Thematics tab

The Thematics tab is where you actually understand what people are saying.

#### Theme list

A side panel lists every theme the AI identified, sorted by mention count. Each row shows:

* The theme **name** (a short, human-readable label).
* The **comment count** for that theme.
* The **sentiment level** — one of *Very positive*, *Positive*, *Neutral*, *Negative*, *Very negative*, or *Unsure* — colour-coded so you can\
  scan the list visually.
* A **criticality score** (low / medium / high / critical) for themes the AI considers operationally important, not just frequent.
* A **consistency indicator** flagging themes whose internal evidence the AI considers contradictory, so you can review them by hand.

#### Theme drill-down

Selecting a theme opens its detail view:

* A **summary** paragraph in plain language.
* An **in-depth summary** that you can generate on demand for a deeper read; the result is cached and shared across viewers.
* **Representative quotes** — actual respondent comments selected by the AI as illustrative, with their individual sentiment scores.
* **Sub-themes** — finer-grained categories within the theme (see below).
* A **comment count** with a click-through to the matching slice in Raw Data.

#### Sub-themes

Themes are intentionally coarse — what's emerging at the *topic* level. **Sub-themes** are the finer-grained breakdown. They surface automatically for themes that warrant them, and you can also click *Generate sub-themes* on any theme to produce a fresh AI-driven set. Sub-themes inherit their parent theme's evidence and let you triage at a granularity that matches your team's response model — *"price"* might split into *"too high overall"*, *"per-seat licensing"*, and *"hidden costs at renewal"*.

#### Sentiment levels

The platform uses a **six-level sentiment scale** consistently across the entire app: *Very positive*, *Positive*, *Neutral*, *Negative*, *Very negative*, and *Unsure* (used when the model can't make a confident call). Every sentiment chip, every breakdown bar, every theme colour uses the same palette.

***

### Raw Data tab

The Raw Data tab is the un-mediated view of every comment.

* A **list of every response** in the dataset, with the comment text, its sentiment chip, and any segmentation context.
* **Search** by substring within comments.
* A **sentiment filter** to narrow down to just the very-negatives, just the very-positives, etc.
* Click any row to open a **Respondent answers** modal showing every question that respondent answered, plus their metadata fields — useful when you want to understand what else a critical commenter said in the same submission.
* A **Download raw data** action that exports the entire dataset to Excel for offline analysis, sharing, or compliance archiving.

The list updates live as you apply segmentation tags elsewhere on the page.

***

### Flags tab

If your team defined Flags on the dataset's open-ended questions, this tab is where you review what matched.

For each flag you see:

* The **count** of flagged comments and a sub-flag breakdown.
* The **comment list** for each flag, with the AI's short explanation of why each comment matched.
* Per-comment actions: **mark reviewed**, **reassign sub-flag**, **dismiss**, **add note**.
* Segmentation works on flagged comments the same way it does on themes and raw data.

The Flags tab is **plan-gated**; on plans without flag access the tab is replaced with an upgrade prompt, but the rest of the analysis continues to work normally.

***

### Quantitative analysis

When the dataset contains structured questions — Single Choice, Multiple Choice, Linear Scale, NPS, or any rating column from a connector or scraper — the analysis page renders inline visualisations alongside the qualitative tabs.

| Question type                       | What you see                                                                                                                     |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| **Single Choice / Multiple Choice** | Bar chart with response counts and percentage shares; sortable by frequency or by option.                                        |
| **Linear Scale**                    | Distribution chart across the configured range, with mean and median callouts.                                                   |
| **NPS**                             | A dedicated NPS module: score, promoter / passive / detractor split, distribution across the 0–10 scale, and trend across cycles |
| where available.                    |                                                                                                                                  |

Quantitative visualisations participate in segmentation just like the qualitative tabs — apply a filter and the bars update in place. Source-side metadata (status, priority, ticket type from a connector; rating, source, country from a scraper) is also available for segmentation, even if there is no formal "question" behind it.

***

### Segmentation

Segmentation is the lens through which the same dataset becomes ten different reports. Any structured or metadata field can be turned into a filter:

* **Click any value** in a chart, a metadata column, or a respondent-answer modal to add it as an active tag.
* Tags appear as **chips** at the top of the page; click to remove individually, or clear all at once.
* Filters propagate to **every tab in real time** — Overview metrics, Thematics counts, Raw Data list, Flags rollup, all update without a page\
  reload.
* Combine **multiple tags** to drill in further (default behaviour is intersect — *"users in EU AND on Premium plan"*).
* Compare **side-by-side**: with two segments selected, charts render comparison views automatically.

Segmentation works identically across sources. Survey demographics, upload metadata columns, connector ticket fields (status, priority, assignee, ticket type), and scraper metadata (country, rating, platform) are all valid axes.

***

### AI augmentation

Beyond the always-on AI that drives themes and sentiment, the analysis page offers on-demand AI features:

* **Generate in-depth summary** for the dataset overall, when the default executive summary isn't enough for your readers.
* **Retry overview** if the initial generation failed — surfaced with a clear error state, never a silent gap.
* **Generate sub-themes** within any theme, surfacing finer-grained categories on request.
* **In-depth theme summaries** — multi-paragraph narratives per theme, generated once and cached.

All on-demand AI runs as a **background job** — you can navigate freely while it produces. The job state is persisted in browser storage, so a\
page refresh or browser restart in the middle of a long generation won't lose it; you'll see it complete with a toast when it lands.

***

### Cross-source roll-ups

The Analysis page is **per-dataset**. When you want to look across every dataset in a project — surveys *and* uploads *and* connector tickets *and* scraped reviews together — you go up one level to the Feedback Group page:

* **Super-Themes** group similar themes across every source, so a theme that shows up in customer support tickets and in Trustpilot reviews collapses into one row.
* **AI Insights** at the group level produces a plain-language briefing across the whole project.
* **Reports scoped to the group** roll every analysis up into a single PDF / HTML / JSON document for stakeholders.

Per-source analysis and cross-source roll-up are designed to be used in concert: the Analysis page is for understanding one input deeply; the\
Feedback Group view is for understanding the project as a whole.

***

### Exports and reporting

From the Analysis page you can:

* **Download raw data** — every response, every metadata field, every sentiment label, exported as Excel for offline use.
* **Build a report** — opens a customisation dialog where you choose which sections (Overview, Thematics, Raw Data) to include, pick the styling, and generate a PDF. The same flow can be scheduled at the Feedback Group level if you need a recurring readout.
* **Per-section export** — sections that lend themselves to it (themes lists, NPS modules, flagged comments) have their own export button at the section level for ad-hoc sharing.

Exports always **respect the active segmentation**, so an "EU customers, last 30 days" export only contains the matching subset.

***

### Empty and error states

Analysis is robust to incomplete or noisy data, but a few situations show distinct UI:

* **No responses yet** — dataset cards show a placeholder; the Analysis link only activates once at least one response has flowed through the\
  pipeline.
* **Analysis failed** — a full-page Alert with a clear retry path; underlying data is preserved so you don't lose anything by retrying.
* **Overview generation failed** — the Overview tab shows a soft amber banner and a *Retry overview* button. The rest of the tabs continue to\
  work.
* **Plan-locked sections** — Flags and some advanced AI surfaces show a blurred preview with an upgrade prompt; everything else stays\
  accessible.

***

### Best practices

* **Treat the Overview as your reader's first stop.** It's what stakeholders screenshot. If the auto-summary doesn't capture the angle you want, generate the in-depth version once — it persists and serves every viewer afterwards.
* **Drill down by clicking, not searching.** The fastest way to investigate a sentiment dip or a theme spike is to click the relevant chip / bar and let segmentation do the rest.
* **Use sub-themes when triage diverges.** If your team handles every theme the same way, the parent theme is enough. Sub-themes pay off when *price*, *support quality*, and *onboarding speed* go to different owners.
* **For cross-source storytelling, jump up to the Feedback Group view.** A single Analysis page is per-dataset; project-level narrative belongs at the group level.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://boundaryai.gitbook.io/boundaryai-docs/basics/interactive-blocks.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
