More room for your next idea. Membership from $9.99/month.Take a look
All guides
Guide

Turn a CSV into a Report You Can Verify

Define a metric, build a traceable report and reconcile it with the source CSV. Use multiple views for different questions while keeping exclusions and exact values visible.

Fastest way

Ask your AI to do it

Paste this into the AI agent you already use:

Use CSV Story Report on my supplied CSV. Ask which question, dimension, metric, aggregation and unit I need. Inspect headers and invalid rows before calculating. Use a new output folder, reconcile the total and two groups independently, and show source lines and quality notes. For multiple views, check each view separately. Do not silently exclude rows or infer revenue or causality.

What does a verified CSV report include?

CSV Story Report produces an interactive report, browser slides, grouped CSV, exact summary and quality notes. The multi-view workflow supports 2–8 views. Optional PowerPoint is a separate export with Python dependencies and a separate visual review.

Define the question before calculating

Choose the grouping dimension, numeric column, aggregation, unit and reporting period. Inspect unique headers, row widths, missing values and duplicated events. The parser supports UTF-8 CSV up to 2 MiB, 10,000 data rows and 100 groups; it does not establish what a business metric means.

Choose count, sum or average deliberately

A fictional three-row check you can calculate by hand
OperationMeaning for values 2, 4 and 9Check before using it
Row count3 rows; not automatically 3 unique customersDefine the event represented by a row
Additive sum15 in the supplied unitDo not sum percentages or mixed currencies
Row-weighted average15 divided by 3 equals 5Do not confuse it with an unweighted mean of group averages

Run one question, then add views

Read references/input.md and review the included generator. From the installed package folder, use Node.js 24+ to run the fictional example below. For several questions, read references/workspaces.md and start from examples/workspace.json. Keep monthly grouping distinct from a claim about growth.

node scripts/build-report.mjs --input examples/report.json --csv examples/data.csv --output ./practice-report

Reconcile totals and two groups independently

  • Compare summary.json and groups.csv with the original CSV lines. Check the numerator and denominator for averages.
  • Inspect data-quality.md. Fix rejected values; exclude rows only with an explicit decision and retain the recorded exclusions.
  • Test search, sort and slide navigation. A display filter does not remove groups from the underlying summary.
  • Import group labels as text and retain protective prefixes. Exact values are in JSON; displayed rounding may differ.

What the report cannot establish

A sum of catalog list prices is not sales revenue. A monthly count is not proof of adoption. The output describes the supplied rows; duplicate-event auditing, causal explanations and source-system accuracy require separate work. Deliver the source, exact calculations and quality notes with the report.

All guides