The gimmick era is over. Modern models can read thousands of rows, admit what they don't know, and cite their work - when you ask correctly. The watchouts are real. They are also solvable. This deck is how.
Modern context windows ingest 10k+ rows in a single pass. The "AI can only handle toy data" excuse is dead.
Today's models will say "Not answerable from the data" when you give them permission. That single sentence kills the worst kind of hallucination.
Ask for source rows and the formula, you get them. Every claim becomes auditable. The work becomes defensible.
Ask any model to "analyze this data" and you'll get a polished summary. Some of the numbers in it never existed. Models bluff fluently when they don't have permission to say "I don't know."
Only use values from the file. No invented rows, dates, or numbers. Ever.
"Use ONLY values that appear in the uploaded file. Never invent rows, dates, names, or numbers."
"Not answerable from the data" is a valid answer. Without permission to refuse, models invent.
"If a question cannot be answered from the file, reply 'Not answerable from the data.' Do not estimate."
Every claim names its source rows, column, and the formula or aggregation used.
"When you state any number, cite the source: row indices used, column name, formula or aggregation."
Force the model to inspect the data before answering anything.
Claim · Evidence · Calculation · Confidence. Every finding.
Build charts yourself. AI-rendered charts hallucinate axes.
Insight · Why · Citation · Next step. Decision-ready.
Most hallucinations happen because the model bluffs about data it never inspected. Force it to load the file and describe what's there before any analytical question.
You are a careful data analyst. I am uploading a CSV file. Before any analysis, do the following and stop. STRICT RULES (apply to every response in this thread): 1. Use ONLY values that appear in the uploaded file. Never invent rows, dates, names, or numbers. 2. If a question cannot be answered from the file, reply "Not answerable from the data" and explain what is missing. Do not estimate. 3. When you state any number, cite the source: row indices used, column name, and the formula or aggregation. 4. When uncertain, say "uncertain" and explain why. Do not round into false precision. 5. Never extrapolate beyond the date range in the file. TASK: A. List every column name exactly as it appears, with the inferred data type (date, integer, float, text, categorical). B. Report the row count, date range (min and max date), and the number of missing values per column. C. Flag any data quality issues: duplicate rows, mixed timezones, inconsistent text casing, suspicious zero values, columns where the type is mixed. D. Show the first 3 rows verbatim so I can confirm the load looks right. Do NOT analyze yet. After you finish A through D, wait for my next prompt.
The four-part structure makes hallucinations visible. If the Calculation line is missing or vague, the claim is suspect - send it back.
Continuing from the same file. Same strict rules apply: ground every answer in the data, cite source rows, say "Not answerable from the data" when it isn't there. Do not extrapolate beyond the date range. TASK: Find time-based patterns AND rank categories, in one pass. Before you begin, restate two things back to me: - PRIMARY METRIC: the column you will treat as the headline number. - GROUPING COLUMN: the column you will rank by. If either is ambiguous, ask. Do not assume. OUTPUT FORMAT - use this structure for every finding: - Claim: one sentence, specific - Evidence: rows used (e.g. rows 12 to 18), column, aggregation - Calculation: the actual math (e.g. "sum of [primary metric] rows 12-18 = 4,210; prior period = 1,450; change = +190%") - Confidence: high / medium / low, and why PART A - TIME PATTERNS 1. Highest period for the primary metric (which week or day, exact total, what records drove it) 2. Lowest period 3. Largest period-over-period percentage change, both up and down 4. Any sustained trend (3+ consecutive periods moving in the same direction) 5. Any anomaly that breaks the trend, with a one-line cause hypothesis (label it HYPOTHESIS)
PART B - CATEGORY RANKING First, list the categories present in the grouping column. Use only values that appear in the data. If there is no clean grouping column, infer one ONLY when you can state the rule explicitly. State the rule. If you cannot infer categories, stop and say so. Then rank by: - Mean of the primary metric per record - Median of the primary metric per record - Sample size (n=) per category. Flag any category with n < 5 as low-confidence. For the top category vs the bottom category, give: - Concrete ratio (e.g. "Category A averaged 2.3x Category B on the primary metric") - One example record from each (cite row index) - Two specific observable differences between the two example records PART C - SELF-CONSISTENCY CHECK Recompute the headline number from Part B a second way (if you used mean, also try total of the primary metric per category divided by total records per category). If the two methods disagree, report both and explain. PART D - GAPS List 3 things you cannot determine from this data alone and what additional data would resolve them. Do not use vague qualifiers like "strong," "mixed," "notable," "performing well." Every finding needs a specific number.
AI-rendered charts hallucinate axis labels and invent data points. Specs you build yourself in Tableau, Excel, or Looker don't lie.
Continuing from the same file. Same strict rules. TASK: Generate publication-ready chart specifications I can build in Tableau, Excel, or Looker. I want specs, not code, unless I ask. For each of the 3 charts below, output: 1. Chart type (bar, line, scatter, area, etc.) and why this type 2. X axis: column name, label text, tick format 3. Y axis: column name, label text, tick format, whether to include zero 4. Series / color encoding (and the exact color hex codes if you suggest a palette) 5. Title (specific, not generic - include the actual finding, e.g. "Category A delivered 2.3x the primary metric vs Category B, Mar–Apr") 6. Subtitle that gives context (sample size, date range, source) 7. The 1–2 annotations you would add (with exact data point coordinates) 8. The single number that should be the visual focal point CHARTS: 1. Primary metric over time, with the highest and lowest periods annotated 2. Category performance comparison (use the rankings from the prior step) 3. ONE more chart you choose, based on what you found. Justify the pick in one sentence. CONSTRAINTS: - Do not suggest a pie chart unless there are exactly 2 or 3 categories - Do not stack multiple metrics on one axis - Every chart needs a clear "so what" in its title - Cite the rows / aggregation used for each chart so I can rebuild it
The structure forces the AI past surface-level filler into something with a business goal and a concrete next step.
For each visualization I describe below, write a four-part insight brief. Same strict rules: ground every claim in the data, cite rows, say "Not answerable from the data" when needed. OUTPUT FORMAT (exactly this, for each chart): 1. THE INSIGHT (one sentence, specific number) - Bad: "Category A performed well." - Good: "Category A outperformed Category B by 2.3x on the primary metric across 47 records in March–April." 2. WHY IT MATTERS (one sentence connecting to a business goal) - Tie it to acquisition, retention, revenue, margin, awareness, or efficiency. - If you cannot tie it to a goal, say so. 3. DATA CONNECTION (cite the numbers) - Sample size, time range, the calculation, the source rows. - If the sample size is small (n < 30), flag it. 4. NEXT STEPS (one concrete action) - Bad: "Invest more in Category A." - Good: "Run a 4-week test allocating 50% of budget to Category A and 50% to Category B on matched audiences, measure the primary metric, target a 1.5x lift to declare significance." Charts to write briefs for: 1. [PASTE CHART 1 DESCRIPTION + KEY NUMBERS] 2. [PASTE CHART 2 DESCRIPTION + KEY NUMBERS] 3. [PASTE CHART 3 DESCRIPTION + KEY NUMBERS] Do not pad. If a section cannot be filled honestly, write "Cannot answer from this data" and move on.
Every number must come with source rows and the formula. No cite, no trust.
Give the model permission to refuse. Without it, models invent.
Have the model recompute the headline a second way. Disagreement is a flag.
Make the model describe the file before asking analytical questions.
Run the same finding through a second AI. Disagreements between models are signal.
"Performance was mixed" gets sent back. Demand a number or a deletion.
Add "do not extrapolate beyond the data" to every prompt. Every time.
A polished claim with no citations is the most dangerous output. Verify one headline by hand before citing anywhere.
I just ran the analysis below in another AI tool. Audit it against the same data file (which I am uploading here). STRICT RULES: 1. Use ONLY values from the data file. Never trust the other tool's numbers without verification. 2. For every claim, label it: - VERIFIED: I recomputed and got the same number. Show your calculation. - DISAGREES: I recomputed and got a different number. Show both. - UNCHECKABLE: The claim is too vague to verify, or the data isn't in the file.
TASK: A. Audit each numerical claim using the labels above. B. List any claim the other tool made that you would not make from this data, and why. C. List any insight in the data that the other tool missed. D. Final verdict: which findings are reliable, which need more data, which to discard. Pasted output from the other tool: """ [PASTE THE FIRST TOOL'S OUTPUT HERE] """ Be blunt. If the other tool hallucinated, call it out by row.
Best at careful reasoning, citations, and refusing when uncertain. Use for schema checks and analysis where admitting "I don't know" matters.
Best at code generation and fast iteration. Use for generated Python or R, pivot-table breakdowns, ad-hoc transforms.
Free, integrates with Google Sheets. Use when the data already lives in Sheets and you don't want to export.
Runs Python under the hood and returns plots inline. Use for quick exploratory charts when you want to look, not export.
Live web search with sources. Use to benchmark your numbers against industry data - not to analyze the file itself.
How five roles plug the playbook into their own data. Different metric column. Different categories. Different stakes.
Strict prompts, citations, self-consistency checks, and cross-model audits are not paranoia. They are the only way to get AI analysis you can defend out loud.
Same four prompts. Whatever your role. Whatever your data.