# Turn Raw Numbers Into a Chart Spec and a Short Narrative

> Check whether your data supports your message, then get a precise chart spec anyone can build and a three-sentence narrative for your audience.

- **Author:** [Jessica Nguyen (@jessica_nguyen)](https://promptabide.com/jessica_nguyen)
- **Tested on:** Claude · Opus 5.5
- **You fill in:** `audience`, `data`, `message`
- **Published:** 2026-07-26
- **Updated:** 2026-09-24
- **Tags:** `data-analysis`, `research`, `design`, `business-strategy`
- **Keywords:** turn data into a chart and story, chart specification prompt, data storytelling for leadership, choose the right chart for data, write chart narrative from data
- **Views:** 1775
- **Likes:** 26

**Best for:** Analysts, ops leads and founders preparing a slide or report for leadership who want one honest chart instead of five decorative ones.

## Prompt

```
Turn this data into one chart and a short narrative for {{audience}}. Choose the chart for the message, not for decoration.

Data: {{data}}
The point I think the data makes (it may be wrong): {{message}}

1. Check the message: does the data support it? If it's only partly true, rewrite it so it's accurate.
2. Chart choice: the chart type, and one sentence on why it beats the obvious alternative.
3. Chart spec, precise enough for someone to build in Excel, Sheets or a plotting library:
   - title that states the takeaway (max 12 words)
   - x-axis and y-axis: field, label, units, scale, and whether y starts at zero (with the reason)
   - series, sort order and colour (one highlight colour at most, the rest grey)
   - annotations: at most 2, with the exact text and where they go
4. Narrative: 3 sentences covering what happened, why it matters to this audience, and what to do or watch next. Every number must come from the data.
5. One thing the chart could mislead a reader about, and how the spec prevents it.
```

## Variables

- `{{audience}}` — Who will see the chart (e.g. the leadership team)
- `{{data}}` — The data as a small table or CSV (e.g. month,tickets,median_first_response_hrs,share_answered_by_ai...)
- `{{message}}` — The point you believe the data makes (e.g. The AI agent cut our response times in half.)

## Example input

```
audience: the leadership team
data:
month,tickets,median_first_response_hrs,share_answered_by_ai
Jan,3120,9.5,0%
Feb,2980,10.2,0%
Mar,3350,11.0,0%
Apr,3410,6.1,22%
May,3290,4.0,38%
Jun,3600,3.6,41%
Jul,4480,5.9,35%
Aug,4710,6.8,33%
(AI support agent launched 1 April 2026)
message: The AI agent cut our response times in half.
```

## Output

*Produced by Claude · Opus 5.5.*

```
**1. Is the message true?**
Partly. The median first response averaged 10.2 hours from January to March and 5.3 hours from April to August, about 48% lower, so "roughly halved" holds on average. But it hit its lowest point in June (3.6 hours) and has risen since, to 6.8 hours in August. Over the same period, ticket volume rose 31% (3,600 to 4,710) and the AI's share fell from 41% to 33%.

**A more accurate message:** "Response times roughly halved after the AI agent launched, but they've been rising since June as ticket volume grew."

**2. Chart choice**
Two stacked panels sharing one month axis: a line for response time on top, bars for ticket volume underneath. This is better than one chart with two y-axes, where the choice of scale can make the lines appear to cross wherever you like.

**3. Spec**
- **Title:** "Response times halved after AI launch, but are rising again"
- **Top panel:** x = month (Jan-Aug 2026, in order). y = median first response in hours, from 0 to 12. Starting at zero keeps the size of the drop honest. The line is grey for Jan-Mar and a highlight colour from Apr to Aug.
- **Bottom panel:** x = the same months. y = tickets, from 0 to 5,000. Bars are grey, with Jul and Aug in the highlight colour.
- **Annotation 1:** a vertical dashed line between Mar and Apr labelled "AI agent launched, 1 Apr".
- **Annotation 2:** by the Aug point in the top panel: "6.8 hrs, up from 3.6 in Jun".

**4. Narrative**
After the AI agent launched in April, median first response time fell from 11.0 hours in March to 3.6 hours in June. Since then it has climbed back to 6.8 hours, while tickets rose from 3,600 to 4,710 a month and the share answered by AI fell from 41% to 33%. We should find out why the AI is handling a smaller share of a growing volume before counting on these gains.

**5. How it could mislead**
"First response" may count an instant AI reply as a response even when the problem isn't solved, which would pull the median down on its own. A footnote should say how first response is defined, and ideally you'd add time to resolution as a second chart.
```

## Why it works

**Checking the message first** is the step most chart requests skip, and here it changes the story: the headline is true on average but hides a trend reversing. A **title that states the takeaway** makes the chart readable in the three seconds a leadership audience gives it. **One highlight colour, the rest grey** stops charts where everything competes for attention. **Every number must come from the data** blocks invented context in the narrative. The **"how could it mislead"** step catches problems like dual axes or a y-axis that doesn't start at zero.

## When not to use it

For exploratory analysis, where you don't know the message yet, plot several views yourself first. A single chart can't carry a complex argument with many variables; use a short report instead. If your audience has a house chart style or a BI tool with fixed templates, adapt the spec to that rather than following it exactly.

---

Canonical HTML: https://promptabide.com/bides/turn-raw-data-into-a-chart-spec-and-narrative
Agent guide: https://promptabide.com/llms.txt · https://promptabide.com/agent-instructions.md
Sitemap: https://promptabide.com/sitemap.xml
