---
title: "Verify an AI-Generated Dashboard From a Template"
url: https://www.insulin.dev/blog/verify-an-ai-generated-dashboard/
canonical: https://www.insulin.dev/blog/verify-an-ai-generated-dashboard/
type: Blog
description: "Five checks to verify an AI-generated dashboard. Two need a starter template, and View query appears only in apps created from one since September 14."
---

# Verify an AI-Generated Dashboard From a Template

> Canonical HTML version: https://www.insulin.dev/blog/verify-an-ai-generated-dashboard/

1.  [Home](/)
2.  /
3.  [Blog](/blog/)
4.  /
5.  Verify an AI-Generated Dashboard From a Template

# Verify an AI-Generated Dashboard From a Template

Five checks to verify an AI-generated dashboard. Two need a starter template, and View query appears only in apps created from one since September 14.

![Sophia Faria](/authors/sophia-faria.jpg)

Sophia Faria

Sep 24, 2026

 ![Verify an AI-Generated Dashboard From a Template](/images/blog/verify-an-ai-generated-dashboard/hero.png)

Explore AI Summary

 [![](/logos/company/openai.svg)](https://chat.openai.com/?q=Read%20and%20summarize%20https%3A%2F%2Fwww.insulin.dev%2Fblog%2Fverify-an-ai-generated-dashboard%2F%2C%20then%20cite%20the%20source.%20Focus%20on%20what%20it%20says%20about%20Custom%20Apps%2C%20Trust. "Summarize with ChatGPT")[![](/logos/company/anthropic.svg) ](https://claude.ai/new?q=Read%20and%20summarize%20https%3A%2F%2Fwww.insulin.dev%2Fblog%2Fverify-an-ai-generated-dashboard%2F%2C%20then%20cite%20the%20source.%20Focus%20on%20what%20it%20says%20about%20Custom%20Apps%2C%20Trust. "Summarize with Claude")[![](/logos/company/gemini.svg)](https://www.google.com/search?udm=50&aep=11&q=Read%20and%20summarize%20https%3A%2F%2Fwww.insulin.dev%2Fblog%2Fverify-an-ai-generated-dashboard%2F%2C%20then%20cite%20the%20source.%20Focus%20on%20what%20it%20says%20about%20Custom%20Apps%2C%20Trust. "Summarize with Gemini")[](https://www.perplexity.ai/search/new?q=Read%20and%20summarize%20https%3A%2F%2Fwww.insulin.dev%2Fblog%2Fverify-an-ai-generated-dashboard%2F%2C%20then%20cite%20the%20source.%20Focus%20on%20what%20it%20says%20about%20Custom%20Apps%2C%20Trust. "Summarize with Perplexity")

Table of Contents

-   [Does your app have View query?](#does-your-app-have-view-query)
-   [The five checks, in order](#the-five-checks-in-order)
-   [How do you know the number on screen is real?](#how-do-you-know-the-number-on-screen-is-real)
-   [What question does the number answer?](#what-question-does-the-number-answer)
-   [Does the number match your records?](#does-the-number-match-your-records)
-   [Frequently asked questions](#frequently-asked-questions)
-   [Takeaways](#takeaways)

_Verifying an AI-generated dashboard means checking each number against the question that produced it and against records you already trust. In Insulin, View query puts that question on screen, but only in apps created from a starter template since the September 14, 2026 release._

* * *

A revenue total on a dashboard the AI built looks exactly as finished as one an analyst built by hand. Before it goes into a forecast or a board deck, someone should be able to say what it counts and where it came from.

Insulin’s builder compiles every version of an app, checks it for unsafe patterns and placeholder data, and can review the rendered preview against what you asked for. None of that compares a figure with your own records, or tells you what question the figure answers. The five checks below cover both, on a dashboard created from one of the four starter templates. Three of them work on any Custom App; two need the template. How the builder writes and checks an app in the first place is covered in [building an internal dashboard with AI, no code](/blog/build-a-custom-app-in-plain-english/).

## Does your app have View query?

**Only if it was created from one of the four starter templates since the [September 14, 2026 release](/changelog/).** Establish that first: check 3 needs the button, and check 4 needs the template. The templates are **Revenue Analytics**, **Offer Metrics**, **Private Offer Analytics** and **Co-Sell Analytics**, and you create each one as a new app from the **New App** panel.

Template code is copied into an app when you create it, so an app created from a template before View query shipped doesn’t have the button. The test takes seconds: open the app and look for **View query** on a KPI, chart, action card or table.

-   **No button, and the app came from a template:** create a new app from the same template, which is the documented route to the button. The new app starts from the template’s code, so changes you made to the older app don’t carry over.
-   **No button, and you built the app from a prompt:** View query comes with the starter templates. Checks 1, 2 and 5 still apply.

Moving off the legacy Analytics dashboards? The templates cover the same ground, but existing dashboards aren’t moved across automatically. The Analytics page keeps working until a removal date is announced, and none is committed yet.

## The five checks, in order

**Run them top to bottom: checks 1 and 2 ask whether there’s a real number on the screen, checks 3 and 4 what question it answers, and check 5 whether it matches your records.**

#

Check

Where to look

What it rules out

Works on

1

Is the preview real and current?

Whether the app is saved; any mock data warning; the builder’s reply to your last change

A preview that can’t show real data yet, placeholder data the check flags, or an older version

Any Custom App

2

Did anything fail?

The **Runtime** drawer’s badges: _N errors_, _N failed requests_

An empty table that is a failure, not a finding

Any Custom App

3

What question produced it?

**View query** on the widget

A figure that answers a different question: another dataset, filter, period or currency

Starter-template apps created since September 14, 2026

4

What does the label count?

The metric’s definition, such as **Accepted or Active**

A current-status snapshot read as a history

Starter-template apps

5

Does it match your records?

**Download CSV**, beside an export from your own system

A figure your own records don’t support

Any app with the export controls

**Any Custom App:** checks 1, 2 and 5. **Starter-template apps only:** checks 3 and 4, and check 3 only in an app that shows the View query button.

## How do you know the number on screen is real?

**Confirm the preview is saved, current and reading real data, then read the Runtime drawer for anything that failed.** Checks 1 and 2 work on any Custom App, template or not.

### 1\. Is the preview real and current?

**Before an app’s first save, its preview isn’t showing real data.** An app with server procedures needs to be saved before those procedures can be routed, so Insulin warns you outright when you preview an unsaved one, rather than rendering plausible-looking blanks. Save it, then read the preview. Saving lets real data reach the preview; it doesn’t show that any figure is right.

**Placeholder data gets a warning of its own.** Template code starts out vetted, but every change you ask the builder for is new code, compiled and checked before it renders or saves. A **mock data warning** means that version appears to rely on hardcoded or placeholder data, so treat its figures as illustrations, however tidy they look.

**Then make sure you’re looking at the version you asked for.** Two builder replies say you aren’t:

-   **The change wasn’t applied.** If the AI security review couldn’t run on a change you asked for in the builder chat, the builder replies that it couldn’t apply the change, and the preview still shows your last working version. That isn’t a verdict on your code, and the message says what to do: retry in a moment, or connect a provider.
-   **The change saved but didn’t load.** When a change the builder said worked then fails to load, it amends that reply: _The app was saved, but the preview failed to load:_ followed by the error.

Either way, the preview isn’t showing the change you asked for, so don’t check a number against it yet.

### 2\. Did anything fail, or is it genuinely empty?

**Read the Runtime drawer’s badges before you believe an empty table.** The collapsible **Runtime** drawer has a **Console** tab for the running app’s console output and a **Network** tab for the requests it made and which of them failed. Its badges, _N errors_ and _N failed requests_, are visible while the drawer is still closed, so a table that is empty because its fetch failed no longer looks like a table with nothing to show.

When the app can’t render at all, it says so instead of painting a blank box: _This app failed to render_, with the sandbox’s own message, above the drawer. Both apply to a saved app you’re running and to the preview in the builder. Response bodies are never shown, so the drawer tells you that a request failed, not what it carried.

A missing badge isn’t a clean bill of health. It rules out the failures the drawer counts, and says nothing about whether the query asked the right question. That’s check 3.

## What question does the number answer?

**In a starter-template app created since the September 14, 2026 release, View query tells you, widget by widget.** Checks 3 and 4 are the template-only half of the routine.

### 3\. What question produced this figure?

**View query opens the definition of the query behind a widget, as plain text rather than SQL.** It sits on each KPI, chart, action card and table, and **Hide query** closes it. Read it against the question you think the figure answers:

Field

What to ask

**Dataset**

Is this the source you’d have used?

**Metrics**

Is this the measure the label implies?

**Dimensions**

Is the figure split the way the widget suggests?

**Filters**

Would you apply every one of these conditions? Is one missing?

**Time column**, **Granularity**, **Time range**

Are these the date and the period your records use?

**Order by**, **Row limit**, **Widget cap**

Is this everything, or the top of a list?

**Display currency**

Is this the currency your records are kept in?

**Rows returned**

Has it reached the Row limit?

The last row matters for check 5. If **Rows returned** equals the **Row limit**, the widget can’t tell you whether more rows exist, and neither can a CSV exported from it.

### 4\. What does the label actually count?

**Exactly what its definition says, which the label only summarizes.** The templates’ offer KPI is the documented case: it reads **Accepted or Active**, where it used to read _Accepted_, because that is what it counts.

**Accepted or Active is** a count of offers whose _current_ status is accepted or active. It’s a snapshot of status, not a history of acceptances: an offer that was accepted and has since moved on to a later status isn’t in the figure. Set it beside a count of offers accepted over the same period in another system, and the two can differ in either direction:

-   **The KPI can be higher**, because it includes offers whose current status is active, which a count of acceptances may leave out.
-   **The KPI can be lower**, because an offer accepted in the period that has since moved on to a later status has dropped out of it.

An app created from a template before the relabel may still say _Accepted_; the count is the same, and only the label is older. Every other label deserves the same question, and in an app with View query, its **Metrics** and **Filters** answer it.

## Does the number match your records?

**Export the widget’s data with Download CSV and compare it with an export from your own system of record, for the same scope.** Check 5 works on any Custom App whose tables and charts carry the control.

-   **Tables:** **Download CSV** exports the rows currently shown, using the columns currently visible, and appears whenever the table has data. If a column you need is hidden, show it before you export.
-   **Charts:** on charts plotted over time, the **≡** button in the chart’s header holds **Download CSV**, which saves the data behind the chart, and **Download SVG**, which saves the chart itself. The CSV option is greyed out when the chart has no data.
-   **Older apps:** the table control is generated into the app, so an older saved app may not have it until you regenerate it in the builder.

In an app with View query, take the scope from it, so both sides use the same dataset, filters, date field, period and currency. Compare row counts before totals: a missing row explains a wrong total faster than a column sum does. If the two still disagree, look first at the fields from check 3 and the definition from check 4.

## Frequently asked questions

### Which Insulin apps have the View query button?

Apps created from one of the four starter templates, Revenue Analytics, Offer Metrics, Private Offer Analytics or Co-Sell Analytics, since the September 14, 2026 release. Template code is copied into an app when it’s created, so older template apps don’t have it.

### How do I get View query on an older template app?

Create a new app from the same template, which is the documented route. The new app starts from the template’s code, so changes you made to the older app don’t carry over to it.

### Does an unsaved preview show real data?

No. An app with server procedures has to be saved before those procedures can be routed, so a preview before the first save isn’t showing real data, and Insulin warns you rather than rendering plausible-looking blanks. Saving doesn’t prove a figure is right.

### What does Accepted or Active count?

Offers whose current status is accepted or active. It’s a snapshot of status, not a history of acceptances, so an offer that was accepted and has since moved on to a later status isn’t in the figure.

### Why is a table on my dashboard empty?

Check the Runtime drawer’s badges first. N errors or N failed requests means something failed, so the table may be empty because its fetch failed. With no badge, read the filters and time range in View query, if the app has it.

### What does Download CSV export?

From a table, the rows currently shown, in the columns currently visible. From a chart plotted over time, the data behind the chart, through the ≡ button in its header. An older saved app may lack the table control until you regenerate it.

## Takeaways

-   Start by checking for **View query**: only apps created from a starter template since the September 14, 2026 release carry it.
-   On any app: a saved, current preview with no mock data warning, no failure badges in the **Runtime** drawer, and a CSV that matches your own export.
-   On a template app, two more: the query behind the figure, and what its label counts.
-   **Accepted or Active** counts current status, not a history of acceptances, so it can miss your own count in either direction.
-   Saving an app lets real data through. It doesn’t make any number right.

For what else [Custom Apps in Insulin](/custom-apps/) can build on the data you’ve connected, start with the product page. The [Custom Apps documentation](https://doc.fours.com/insulin/custom-apps/) covers View query, the Runtime drawer and the export controls in full.

## Sources

Primary sources for the platform rules cited above. Last verified September 24, 2026. Cloud providers change fees, eligibility, and program terms without notice — check the source before relying on a figure.

-   [Insulin Custom Apps — Fours Doc](https://doc.fours.com/insulin/custom-apps/) — The four starter templates and the Accepted or Active offer KPI (current status, not a history of acceptances); View query, the widgets that carry it, its fields, and that template code is copied into an app when it is created; the unsaved-preview warning; the compile results, including Mock data warnings and Security review unavailable, and the builder's replies when a change is not applied or its preview fails to load; the visual review; This app failed to render and the Runtime drawer's badges; Download CSV and Download SVG, and older saved apps without the table control; the legacy Analytics deprecation with no removal date committed

## Keep reading

-   [TrustOWASP Agentic Top 10: An AI Workspace ChecklistOct 8, 2026](/blog/owasp-agentic-top-10-checklist/)
-   [TrustWhy AI Gives Different Answers to Different PeopleOct 7, 2026](/blog/same-question-different-answer/)
-   [TrustHow to Stop Work in Insulin: Replies, Goals, Jobs and InboxSep 29, 2026](/blog/how-to-stop-work-in-insulin/)
-   [Custom AppsAI-Built App Data Storage: What Survives a ChangeSep 28, 2026](/blog/ai-built-app-data-storage/)

[Browse every post on the Insulin Blog](/blog/)

### Stay Updated

New posts, product updates and marketplace strategy are shared on LinkedIn as they publish.

[Follow Fours on LinkedIn](https://www.linkedin.com/company/suger-inc)
