Tempo
Royalty analytics that independent musicians can read in a minute
Streaming statements are a wall of numbers across seven platforms. Tempo answers the two questions artists actually ask.
- Role
- Product design, data visualisation
- Timeline
- 7 weeks
- Platform
- Responsive web
- Year
- 2025

(The brief)
Freelance work for a two-person distribution startup who had the data pipeline working and a dashboard nobody was opening twice.
(The problem)
Their first version showed everything: fourteen metrics, seven platform breakdowns, a date range picker set to all time. Artists opened it, could not tell whether the month had gone well, and went back to the CSV export. The product was not missing data, it was missing a point of view about which numbers mattered.

Two questions, asked every time
I sat with six independent artists while they opened their own statements. Regardless of catalogue size, they asked the same two things within the first thirty seconds. Did I earn more or less than last month, and which track is doing it. Everything else, platform splits, territory data, skip rates, was interesting but never urgent. That gave me a hierarchy to design against instead of a feature list.
One number, then the context
The dashboard now opens on a single earnings figure for the current month, the change against the previous month in plain language rather than a bare percentage, and a sparkline for the last twelve. Below that, the tracks that moved most, up and down. Platform and territory breakdowns moved to a second view that is one click away and genuinely useful once you know what you are looking for.
Making a bad month readable
Earnings dip for boring reasons: a playlist rotation ends, a platform reports late. The old design showed a red arrow and left the artist to panic. I added a short explanatory line under the headline figure that names the likeliest cause when the data supports it, and a clear note when a platform has not reported yet, so a partial month never reads as a collapse. Colour alone never carries the meaning, since red and green fail for a meaningful share of users.
States nobody had drawn
The original file had one screen. I delivered the full set: a new artist with no earnings yet, a catalogue of one track, a month with a failed platform sync, a loading skeleton that matches the final layout so nothing jumps, and an error state that tells you which platform failed and when it will retry. That work was unglamorous and it was the part the engineers thanked me for.

(Key decisions)
- A single headline figure, with change described in words
- Movers list replaces a full sortable table on the landing view
- Never encode meaning in colour alone
- Partial reporting flagged explicitly so dips are not misread
- Every empty, loading and error state specified before handoff
(Outcomes)
- Metrics on the landing view
- 14 to 4Metrics on the landing view
- Artists interviewed with their own data open
- 6Artists interviewed with their own data open
- Interface states specified for handoff
- 9Interface states specified for handoff
- To reach any deeper breakdown
- 2 clicksTo reach any deeper breakdown
What I took from it
Removing twelve metrics was harder to argue for than adding a feature would have been. Watching an artist answer their own question in eight seconds settled it.
(Next project)
Wayfare
Transit wayfinding for the moment you have thirty seconds and no signal
