Designing the experience for a full-fledged reporting interface
One of the main reasons Avocarrot Demand Platform was made for, was to satisfy DSPs (or Demand Side Partners) reporting needs. For context, DSPs are the advertisers, who want to advertise their products/services on Avocarrot Exchange’s apps. Example advertisers were companies like Coca-Cola and RedBull.
Their reporting needs were multi-dimensional. A classic scenario, would be something like this: the DSP would filter for a specific timeframe (e.g yesterday) and then split by apps and countries. This query, conceptually, would return the yesterdays numbers (ad spend, impressions etc) for each app he advertised on splitted by countries he advertised in. In a nutshell, they wanted to see how much money they are spending on Avocarrot Exchnage and where they are spending them at.
At the time, we were solving this need with weekly mails. The Avocarrot Account Manager who had established relationship with the DSP, would send every week a spreadsheet with the week’s numbers. We had an active feedback loop there; DSPs were asking for more or less data in that spreadsheet, so we had to provide a customized spreadsheet per DSP. The good thing here, was the fact that we had many insights on how DSPs wanted to view their reports and what made sense for them. So, we made a big list with all the cases and custom requests DSPs had from Avocarrot.
Our problem was clear; we had to create a self-serve interface that covers the listed DSP reporting needs. We had an initial list of metrics (e.g ad spend, impressions etc) and a set of dimensions (e.g apps, countries), and we had to design an interface that would present a potential big chunk of data. Essentially, we had to fit in 3 high level categories:
From early meetings with the engineering team we listed a bunch of technical constraints. We were messing around with big data. That means, complex queries would have a high process and respond time. Data requested was making a huge journey from our infrastructure and data-centers, to end up in the front-facing interface. We should somehow manage the user expectations on the interface, while the data is being loading.