Skip to content

Ask Artifacts

An Ask Artifact is a visualization the Ask agent composes inline inside an answer. The agent selects building blocks as it writes, so an answer can contain none, one, or several, in any order, interleaved with prose.

Every artifact is populated from values the agent’s data tools returned for the grounded source. There are nine types.

A titled chart with a category or time axis and one or more named series.

FieldRenders as
typeline, area, or bar for series across the x-axis; donut or pie for share-of-whole
titleHeading above the chart
xKeyThe row field used for the x-axis; for donut and pie, the category-label field
seriesOne entry per plotted series: data key, display label, and color
dataThe plotted rows

For donut and pie, the first series’ key names the numeric value field and any further series are ignored. Y-axis and tooltip values are grouped below 10,000 and shown compactly (1.2M) above it. X-axis category labels longer than 14 characters truncate with an ellipsis. The chart carries an accessible description naming the chart type and its series labels.

A sortable table.

FieldRenders as
columnsHeader cells; each has a key, a label, an optional align (left, center, right), and an optional format
rowsBody rows, keyed by column key
sortBy / sortDirThe initial sort; without them the table renders unsorted
titleOptional heading

format is number, percent, or text. Numeric and percent columns are formatted to at most two decimal places, right-aligned by default, and sorted numerically — including numeric strings. Percent columns append %. Missing, null, or empty cells render as an em dash and sort last.

Clicking a header sorts by that column and toggles direction. At most 15 rows render; any beyond that are summarized below the table.

A grid of stat tiles.

FieldRenders as
kpis[].labelThe tile caption
kpis[].valueThe figure — numbers are thousands-grouped, strings shown verbatim
kpis[].unitOptional suffix beside the value
kpis[].deltaOptional signed change against the prior period, shown with an up, down, or flat arrow
kpis[].deltaDirectionGoodIsup (default) or down — which direction counts as an improvement
titleOptional heading above the grid

A delta is colored and labelled by whether it improved: green and “better”, red and “worse”, or grey and “unchanged”. deltaDirectionGoodIs: "down" inverts that, so a falling figure reads as an improvement. The delta’s accessible name states the value, that it is versus the prior period, and the improvement word — colour is never the only signal.

A side-by-side comparison of the same question across groups. Each column carries:

  • a title and an n=N badge giving how many responses the group contributed
  • mini-stat tiles, each with a label, a value, an optional suffix, and an optional signed delta
  • a stacked sentiment bar over positive, neutral, and negative
  • theme rows, each with a name, a mention count, and a 0–100 bar fill
  • an optional quote with its attribution

Up to three columns render side by side on desktop; more wrap. Each column renders at most eight theme rows, with the remainder summarized below.

Horizontal mention-rate bars, rendered under a Themes heading. Each bar has a label, a 0–100 percentage driving the fill width, and a formatted value string such as 5 of 8.

An optional tone sets the fill colour and adds a matching icon beside the label, with the tone word appended to the bar’s accessible name:

ToneFillIcon meaning
defaultBrand
okGreenPositive
warnAmberWarning
badRedNegative

Percentages outside 0–100, and non-numeric ones, clamp to the range. Blank labels fall back to an em dash; long labels truncate with the full text on hover. At most 15 bars render, with a “+N more themes” note for the rest. An optional footer line sits below the bars, typically stating sample size or confidence. An empty payload renders “No data”.

A single verbatim quote, rendered as a block with a left border coloured by sentiment.

FieldRenders as
textThe quote body; blank falls back to an em dash
whoAttribution; blank falls back to “Anonymous”
roleOptional role shown in the meta row
sentimentpos, neu, or neg — sets the border colour and a smiley, neutral, or frown icon
tagsOptional pills in the meta row

The sentiment icon carries a text label, so the colour is not the sole signal. At most six tags render; the rest collapse into a “+N more” pill.

A Conflict Signal is an amber callout surfacing a divergence the agent found — groups whose views differ on the same theme, presented rather than averaged away.

FieldRenders as
themeThe theme in question, shown as an “On:” caption
summaryA one-line plain-language statement of the disagreement
groupsOne row per clustered group: its label and a one-line summary of its position
quoteOptional supporting quote, inlined beneath the groups with its own sentiment icon and label

Clustering happens server-side. An empty groups list leaves the summary standing alone; blank group labels fall back to an em dash.

The Grounded in panel: a row of numbered chips naming the responses an answer cites.

Each chip has a number, a label, and optionally the id of the response it points at. Chips carrying a response id are clickable; chips without one render but do nothing. Each chip’s accessible name is Source {n}: {label}, so the number is never the only cue. At most 12 chips render, with a “+N more” note beyond that. Long labels truncate with the full label on hover, blank labels fall back to an em dash, and an empty panel renders “No data”.

A Tool use panel listing the steps the agent took for that turn. Each step has a label and a status:

StatusShown as
DoneGreen check, labelled “Done”
In progressSpinning indicator, labelled “In progress”
QueuedEllipsis glyph, labelled “Queued”

Steps may carry a duration. The panel stays expanded while the turn is streaming and collapses once it completes; clicking the header toggles it, and a manual expand is not overridden afterwards. When the answer carries tool-call data, the trace is built from that data in preference to any trace the agent emitted itself.

Within an answer’s prose, [Evidence N] markers render as small numbered chips. Clicking one scrolls to the matching chip in that answer’s Sources panel and briefly highlights it. Resolution is scoped to the answer it appears in, so source 2 in one answer never jumps to source 2 in another.

A marker with no matching Sources entry in the same answer still renders, but is inert and labelled “Source detail unavailable”.

StateShown as
Payload still streamingA “Rendering…” placeholder in the artifact’s position
Payload complete but unrenderableAn inert message naming the type, such as “Invalid chart data”

An unrenderable artifact never removes the surrounding prose — the rest of the answer renders normally.

The copy action under an answer serialises prose, headings, bullets, and markdown tables. Ask Artifacts are skipped rather than copied as their underlying data.