Task
BootLoader is a mobile app that helps people crowdfund their creative projects. Anyone with an idea, dream, and 2-minute video can post their project on BootLoader. Others then donate money to the project to help bring it to fruition.
Dennis Ridesalot, a BootLoader user, has a new concept for a 3-speed bicycle made from recycled parts with a $20 price point. The BootLoader team wants to send a push notification to their users, prompting them to fund the project. However, they don't want to send a message to all of their users--only those who they think would be interested.
That's where you come in. You're the resident data expert at BootLoader. You'd like to create a visualization that helps answer: what kinds of users would be interested in the bicycle project?
Luckily, you've been collecting analytics data on how your users fund projects. You also have software that can send push notification to segments of users, based on attributes like location, age range, gender, and mobile device.
For example, you can send a push notification to all iOS users in Chicago, IL that says "Deep dish lovers unite! Help fund the largest pizza in the world on BootLoader."
Solution - target your campaign in three steps
1. Filter your data
Only events from selected categories will be used in the analysis.
2. Select dimensions
Decide how you want to segment your customers. Choose as many dimensions as necessary and experiment with their order. The more dimensions you select the more partitions you will find in the visualization which may become difficult to navigate but may offer much more precise targeting of your campaign.
3. Choose metric
Finally, select the metric you wish to visualize. The higher the value of the metric for given segment the darker its color.
Details of the selected segment:
Interpretation
This visualization represets a treemap which a method of visualizing hierarchical datasets in a fixed size rectangle by recursively diving the space into smaller segments.
In this example space is divided into segments selected by you in step 2. Size of each segment is proportional to the number of users in the segment i.e. segments with many users will be visible as big rectangles on the map. Color of the segment depends on the metric chosen by you in step 3. The darker it is the higher the value of the metric.
For example (if you have not changed any settings) you should see one significantly darker segment in the visualization. Even though it is small and has only 7 users (at least in our sample) the average donation made by user is the highest amongst all other segments. Mouse over it and you will see all details - those are android users in AR with average donation per user of 67.14$. Maybe that's where we want to send the push notification. We can identify many interesting segments like this depending on budget of our campaign and metrics that are important for us. Give it a try and find other interesting segments!
You can also easily identify anomalies in your data. Select State, Device and Gender as the dimensions (in this exact order) and choose Fund project event/View Project event a metric. You will see few odd segments where projects were funded even though there was no View Project event associated.
Technical details
This interactive visualization represents a treemap and was done using D3.js starting from this template.
Due to significant size of the data.json file it was filtered and only events from Sports and Environment categories were kept.
To run locally on your own machine download project archive, extract it and point your favourite web server to the project folder. You can do it for example by running python -m SimpleHTTPServer
inside the main folder (folder which contains index.html file) and then pointing your favourite browser to http://localhost:8000/
If you have any suggestions for improvement, new metrics or any other idea do not hesitate to contact me.
The Data
Your analytics software tracks the events: "View Project" and "Fund Project," for when a user views details about a project and for when they fund a project. The events also have the following attributes:
-
category
: what the project is about, e.g. "Sports", "Fashion", "Technology", etc. -
client_time
: a UNIX timestamp of when the event occurred. -
amount
: how much the user donated (for "Fund Project" only)
Note: The bicycle project belongs to two categories: "Sports" and "Environment."
Additionally, you know some information about each user on your site, that they supplied in a survey when they signed up. Specifically, you know:
-
session_id
: unique identifier for each user -
age range
: one of ['18-24', '25-34', '35-44', '45-54', '55+'] -
gender
: one of ['M', 'F'] -
location
:-
city
: a city in the United States -
state
: a state in the United States latitude
longitude
-
-
marital_status
: one of ['single', 'married'] -
device
: one of ['iOS', 'android']
From past experiments, you know that each user generally likes projects from the same category. For example, User A almost always views and funds projects from the "Technology" category. The bicycle project belongs to two categories: "Sports" and "Environment."
You have a sampled time series of 50,000 events from one month this year in a JSON blob. User data is added into every event. Note that BootLoader has more users than are represented by this sample.
Here's an example of two events by the same user:
{
"event_name": "View Project",
"gender": "M",
"marital_status": "single",
"session_id": "98ccfbe8c29845c0a44f8e56213d1def",
"device": "android",
"tag": "Technology",
"age": "25-34",
"client_time": 1393632024,
"location": {
"latitude": 33.786594,
"city": "Covina",
"state": "CA",
"longitude": -118.298662,
"zip_code": "91723"
}
}
{
"event_name": "Fund Project",
"gender": "M",
"marital_status": "single",
"session_id": "98ccfbe8c29845c0a44f8e56213d1def",
"device": "android",
"amount": 20,
"tag": "Technology",
"age": "25-34",
"client_time": 1393632301,
"location": {
"latitude": 33.786594,
"city": "Covina",
"state": "CA",
"longitude": -118.298662,
"zip_code": "91723"
}
}