From 3D pies to heatmaps: the new Orders report

From 3D pies to heatmaps: the new Orders report

More than twenty releases of e-shop.report have shipped this year, and I would like to start showing regularly what happens under the hood. This is part one of the Building e-shop.report series — and we start with the oldest page in the whole app: the Orders report.

The starting point: ~2010 called, it wants its report back

The Orders report was the last page of the oldest generation. Charts in amCharts 3, 3D pie charts (yes, the tilted ones), four separate SQL queries for four numbers with no trends whatsoever, texts hardcoded in Czech — and two charts even ignored the selected period and drew the entire history of the e-shop no matter what you picked in the date picker. Bonus: every page view wrote the e-shop's performance history three times.

The Orders report before and after

What changed

A section-by-section tour of the new report

The product ships in four languages; the approved design below shows the Czech version.

Approved design of the new Orders report

KPI tiles with trends

The four numbers you want first: orders, revenue excluding VAT, average order and items per order. Every tile shows a daily average and two comparisons — against the previous 30 days and the same period last year. The arrow tells you the trend before you finish reading the number. And instead of dead "Explanation" links, every section has a live "What does this mean?" hint.

Orders over time

One chart, three metrics — orders, revenue, average order — switchable with one click. A dashed line shows the previous period, so the comparison is always in front of you. And crucially: the chart finally respects the period selected in the date picker.

What an order's value is made of

A stacked chart splits every day into goods, shipping, payment and VAT. You see at a glance how much of your revenue is actual product and how much is the "wrapping" around it.

When customers buy

A day × hour heatmap instead of a 3D pie. Darker cell = more orders — and the report writes the conclusion for you: "Strongest hours: Monday and Tuesday 8–10 pm — a good time for campaigns and newsletters." That is what a report you don't have to decipher looks like.

Carrier and payment shares

Flat donuts with the TOP 8 carriers and payment methods plus an "Other" row. Each item shows count, share and the trend in percentage points against the previous window — you see not just the state but the movement. Click through to the detailed views.

Major changes in sales

Which products, categories and brands grow or decline — with the impact in money, not just percentages. A summary on top: total impact of changes, positive and negative separately. The table filters by type and clicks through to product or category detail.

AI order summary

A human-readable paragraph: what happened in the period, who drives it, who is losing and what to do about it — generated by AI from your data and anchored in real numbers. Plus an "Ask AI about this chart" button under every chart.

Related dashboards

A footer with follow-up dashboards — straight from insight to action, no menu hunting.

Production always surprises

The mockup passed approval and an independent review, we deployed — and the first production screenshot showed a carrier legend with hundreds of rows. Why? Some e-shops include the specific pickup point in the carrier name: "Zásilkovna – Praha 4", "Zásilkovna – Brno"… and every branch pretended to be its own carrier.

The fix: normalize names to the carrier, aggregate, and show TOP 8 + an "Other" row — in the chart, in the legend and in the data passed to AI (a language model should not get hundreds of rows as input either). A lesson as old as BI itself: people approve your mockup, but only real data tests it.

How we build with AI at our side

The whole rewrite was a human + AI (Claude) tandem. The process that works for us: first a mockup, which I approve before a single line of code exists. Then implementation, followed by an independent review by another AI agent — this time it caught one critical finding that would have hurt in production. Two automated code audits run before every deploy. AI writes, the human decides — and the result is a rewrite that would previously have taken me weeks.

What to take away

Modernizing an old report is not about prettier charts. It is about every number having context (a trend), every chart answering a question, and the page not straining the system. And if you are curious what we build next — a new part of this series lands every week.

You will find the Orders report in e-shop.report — and if you have your own experience modernizing old reports, message me on LinkedIn.