← All work

Gift Trade Ledger

A scroll-driven data story and market explorer built on a UK retailer's full year of invoices.

D3.js · Scroll storytelling
Gift Trade Ledger
Role
Solo build
Stack
Python, pandas, D3.js, JavaScript
Data
UCI Online Retail dataset, 541,909 invoice lines
Period
December 2010 to November 2011
Context

Why it mattered

A UK online gift wholesaler logged every line of every invoice for a year: 541,909 rows from the UCI Online Retail dataset. Transaction logs like this hold a business's real story, but almost nobody reads them.

I built a scroll-driven story on top of it, with animated charts and a world map, followed by an explorer that rewrites its KPIs, charts and executive brief for any market you pick.

The question
What does a year of invoices say about seasonality, customers, markets and concentration risk, and can anyone explore it without help?
  • When does the business make its money?
  • Is growth coming from new or returning customers?
  • How much revenue rides on a few accounts?
Approach

How I solved it

01 · Source

One table, verified.

The full UCI dataset, checked against its published counts: 25,900 invoices, 4,372 customers, 38 country labels.

541,909 invoice lines4,372 customers38 country labelsPython preppandas, one script
02 · Clean

Simple, stated rules.

Twelve full months, sales only, merchandise only, aggregated to a small JSON file the page loads instantly.

Window12 full monthsSales onlynocancellationsMerchandiseno postage orfeesAggregatecompact JSON
03 · Story

The chart follows the reader.

As each paragraph scrolls into view, the sticky chart beside it changes: seasonal bars, new against returning customers, a world map, a concentration curve.

sticky chart changes per step
04 · Explain

A brief for any market.

Pick a market and the brief compares it with the whole business and labels what matters.

MARKETNetherlandsAVG ORDER£3,024CUSTOMERS9RULEScompare withall markets,pick the labelGENERATED TEXTFew accounts. Only 9known customers.Orders average £3,024against £509 overall:these buyers orderlike wholesalers.
Outcome

What it delivers

£9.66Mmerchandise sales across 12 months
37%of sales landed September to November
60%of revenue from the top 10% of customers
36markets to explore, each with its own brief
Demo

See it for yourself

The live page runs in your browser, and a short recording walks through it.

Open the live story
Gift Trade Ledger preview