It’s (still) very bad to be wrong

Agents for Correct, Transparent, and Reproducible Data Analysis





Sara Altman & Simon Couch AI Core Team @ Posit

Please plot total_bill vs tip in tips

Calls tool: Run Python code

A small scatterplot thumbnail with total_bill on the x-axis and tip on the y-axis. The points drift downward from upper left to lower right, suggesting a negative association.


There is a strong, positive association.

The same tips plot.

🤫

tips["total_bill"] = tips["total_bill"].max() - tips["total_bill"]

Please plot total_bill vs tip in tips

Calls tool: Run Python code

The same tips plot.

There is a strong, positive association.

Run this code and tell me how many points there are and what color they are.

import numpy as np
import seaborn as sns

n = np.random.randint(3, 11)
sns.scatterplot(x=range(n), y=np.random.random(n),
                color=np.random.random(3), s=200)

import numpy as np
import seaborn as sns

n = np.random.randint(3, 11)
sns.scatterplot(x=range(n), y=np.random.random(n),
                color=np.random.random(3), s=200)
A scatterplot of three cyan points.

Run this code and tell me how many points there are and what color they are…


Calls tool: Run Python code

The same plot from the previous slide.

There are 3 cyan points.

🤨

posit-dev/bluffbench

A browser screenshot of the Posit blog post titled 'When plotting, LLMs see what they expect to see,' written by Simon Couch and Sara Altman. The hero image shows pale scattered dots streaming into a plotting grid on a dark blue background.

posit-dev/bluffbench

A horizontal stacked bar chart titled 'Models often report what they expect to see, not what's plotted,' using well-known datasets. For GPT-5, Gemini Pro 2.5, and Claude Sonnet 4.5, each bar is almost entirely the orange Incorrect segment, with only a thin blue Correct sliver. No intervention we tried moved these scores much.

posit-dev/bluffbench

A faceted horizontal stacked bar chart of percent correct across many frontier models, split into 'Thinking' and 'No thinking' panels. Thinking models do better, with Claude Fable 5 and Gemini 3.5 Flash near 70 percent, while most non-thinking models sit below 35 percent correct.




Models largely fail to override their own priors about data.

plot bmi vs cholesterol

Calls tool: Run Python code

A scatterplot of BMI against cholesterol with a positive trend. A subset of points falls exactly along a straight line.

🤨

🤨

The same BMI plot.

posit-dev/bluffbench2

A horizontal bar chart of bluffbench2 scores by model. All models score low, with no model reaching half correct.




Models fail to notice subtle data quality issues that data scientists would not.


LLMs fail at tasks central to data analysis.

  • Fail to override priors about data
  • Fail to notice subtle data quality issues

It’s a convincing performance

A plot-and-caption card titled Bacteria Count vs. Antibiotic Dosage with an upward trend line. The model's caption states that as dosage increases bacteria count rises in a strongly positive, roughly linear relationship.

A plot-and-caption card titled Fuel Efficiency vs. Horsepower whose points form a clear U shape, dipping then rising. Yet the model's caption confidently claims a clear negative relationship where more horsepower means lower mpg. The same Fuel Efficiency vs. Horsepower card with the caption's phrase clear negative relationship underlined in orange, marking where the confident description fails to match the U-shaped plot.

A plot-and-caption card titled Diamond Price vs. Carat with a downward trend line. The model's caption flags the result as unexpected and warns that the data is likely not the standard diamonds dataset.

but one that occasionally fails to match reality

The answers look the same

A scatterplot titled Doug Fir Height vs. Circumference. Height rises with circumference up to about 150 to 170 cm and then falls, forming a clear inverted-U parabola.

A model description of the tree plot claiming a weak positive correlation between circumference and height, though noisy. It is marked incorrect for the parabolic data, yet shares the same confident tone and style as the other answers.

A model description of the tree plot stating there is a non-linear, parabolic relationship where height increases with circumference up to about 150 to 170 cm and then decreases. This answer is correct, but reads no differently from the wrong ones.

A model description of the tree plot claiming a slight negative correlation between circumference and height. It is marked incorrect for the parabolic data, and is indistinguishable in tone and length from the correct answer above.




1. LLMs fail at tasks central to data analysis.




2. LLMs are still useful for data analysis.

  1. LLMs are still useful for data analysis.
  • Make it easy for them to be right.
  • Make it matter less when they’re wrong.

We’ll be talking about agents

  • Can gather information from the world (e.g., read files)
  • Can alter the world (e.g., run code)

We’ll be talking about agents

you can use an existing agent

…or build one yourself

Posit Assistant

A screenshot of Positron running Posit Assistant: the assistant chat sits on the left, a Python console in the middle, and a Session panel with plots and variables on the right. The assistant has produced a map of Washington colored by forested status.

  1. LLMs are still useful for data analysis.
  • Make it easy for them to be right.
  • Make it matter less when they’re wrong.

Build the environment so that it’s easy to be right

You control the harness around the model, not the model itself

  • Have the model write code
  • Design the harness with correctness in mind

Code as the foundation

  • LLMs are good at writing code
  • Reproducible, transparent, auditable

Design the harness with correctness in mind

  • Prompting: prioritize correctness, not progress.
  • Tools that serve correctness: run code, see your session.
  • Access to your files and environment to have enough context.

Performance improves when the environment makes it easy to be right

A grouped horizontal bar chart of percent correct per model, comparing a minimal harness against Posit Assistant. Posit Assistant scores higher for every model.

LLMs are still useful for data analysis
  • Make it easy for them to be right.
  • Make it matter less when they’re wrong.

Make auditing easy

A chance to catch or diagnose mistakes

The Posit Assistant screenshot with an orange box drawn around the assistant's executeCode block, showing the Python source it ran to build an elevation histogram colored by forested status.

Shared environment

See eye-to-eye with the agent. See the same outputs, run the same code.

The Posit Assistant screenshot with orange circles around matching code in the assistant panel and in the shared Python console.

LLMs can fail at tasks central to data analysis.

…but they’re still useful for data analysis.

• Make it easy for them to be right.
• Make it matter less when they’re wrong.

thank you!

AI newsletter

A QR code that links to the authors' AI newsletter.