ChatGPT

Verified against ChatGPT · 2026-07-24

Audit an uploaded dataset in Code Interpreter before it produces a single chart

Forces a data-quality pass — types, nulls, duplicates, outliers, and join integrity — on an uploaded file before Code Interpreter runs any analysis or chart request on it, so a confident-looking chart doesn't quietly rest on a column full of silently miscoerced values.

ChatGPT (Code Interpreter)ChatGPT (Data Analysis)4 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

You are auditing a dataset uploaded here, using Code Interpreter, before doing any actual analysis, chart, or summary statistic on it. Run this audit first and show the results before touching the actual question — do not skip ahead to answering it on unverified data.

DATASET
orders_export.csv — 14 months of e-commerce order records exported from Shopify, roughly 40 columns.

WHAT I ULTIMATELY WANT TO ANALYZE
Monthly revenue trend by product category, to spot which categories are actually growing versus flat.

KNOWN QUIRKS IN THE SOURCE DATA
Refunded orders sometimes show up as a second row with a negative amount instead of modifying the original row — need to confirm whether that's still true in this export.

EXPECTED SCALE
Should be somewhere around 60,000-80,000 order rows based on known order volume for this period.

AUDIT STEPS
Run and show the actual code for each of these checks, not just a prose summary of what the data probably looks like — column names, inferred dtypes, and whether each dtype actually matches what the column should logically be, such as a date column read in as a string, a numeric ID column read in as a float that silently drops a leading zero, or a currency column that's a string because of a stray dollar sign or comma. Row count and a check against the expected scale given — if the actual row count is off by an order of magnitude from what was expected, stop and flag it before proceeding, since that's usually a sign the whole file loaded wrong, not that the data itself is just smaller than expected. Null counts per column, and for any column with unexpected nulls, show a few actual example rows rather than just the count, to distinguish a real gap from a load artifact. Duplicate rows, and separately, duplicate values in whatever column should logically be a unique identifier — these are different problems and need to be reported separately, since a duplicate full row is often a genuine data issue while a duplicate ID with different row contents usually means a join or ingestion bug upstream. Obvious outliers in any numeric column central to the analysis goal — values off by orders of magnitude from the rest of the column, more often a unit mismatch or a data-entry error than a genuine extreme value. If known data quirks were given, verify explicitly whether each one is still present in this specific file, rather than assuming it applies uniformly — a quirk mentioned as historical may already be fixed in this particular upload.

OUTPUT FORMAT
A findings table: Check | Result | Row/column examples if relevant | Severity (blocks analysis, should fix first, informational only). After the table, one paragraph naming anything that should stop the actual analysis until resolved, or an explicit confirmation that nothing found blocks moving forward — do not proceed to the actual analysis goal in the same response unless nothing blocks it.

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

Code Interpreter runs real Python in a sandbox and will happily produce a chart or a summary statistic from whatever pandas infers about a column's dtype without flagging the inference as uncertain, so a currency column read in as a string because of a stray dollar sign will silently be excluded from a sum or average, or a numeric ID with a leading zero will get coerced to a float and lose it — unless the audit explicitly checks inferred dtype against what the column logically should be, that kind of silent miscoercion produces a chart that looks entirely normal while resting on wrong or partial data underneath it. Requiring the actual code to run and be shown, rather than a prose description of what the data probably looks like, matters because a model can describe a dataset's likely shape based on column names alone and produce a plausible-sounding summary that was never actually checked against the real loaded file — showing the executed code and its literal output is what turns "probably fine" into a verified claim. Separating duplicate full rows from duplicate unique-identifier values addresses two genuinely different root causes that get conflated by a single "check for duplicates" instruction: a repeated full row usually indicates a re-export or accidental double-upload, while a duplicate ID with different row contents usually indicates an upstream join or ingestion bug, and the fix for each is different, so collapsing them into one finding hides which problem is actually present. The order-of-magnitude row-count check against an expected scale catches the single most common and most consequential loading failure — a wrong delimiter, a truncated file, a header row misread as data — before any analysis compounds the error; a chart built on a file silently missing most of its rows can show a trend in the exact opposite direction of what the complete data would show.

Verified against

ChatGPT GPT-5.1 (Code Interpreter) · 2026-07-24

Changelog

  • 2026-07-24 — Initial publish, verified against ChatGPT GPT-5.1 Code Interpreter.

Building this for real?

This is a free starting point. If you'd rather have what Scult builds built and running for your business, that's Scult's day job.

EXPLORE WHAT SCULT BUILDS
All ChatGPT prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY