My experience at Bounce: Building a Business Intelligence Dashboard

How I built a BI dashboard (both the data science part and the web development part), and how I saw data science can be integrated with a business

Luca Palonca
Bounce
3 min readSep 27, 2018

--

Overview

I worked at Bounce Technologies as a Data Science Intern for 8 weeks. Bounce is a mental health company, and through its Facebook Messenger’s chatbot allows you to boost your optimism and makes you feel better every day with the power of positive psychology.

Here I am going to explain what I did during this period.

Bounce has been operating for 18 months, but they never had the chance to exploit their data. So they hired me as a Data Scientist Intern to start that chapter.

Data science is very generic and a bit off a buzz word nowadays. In practice Bounce were interested in two kinds of outcomes:

  • User analytics (or business intelligence)
  • Machine learning features

In both cases the use of data, code and algorithms should lead to a better user experience with the chatbot, through personalisation, for example.

We decided to prioritise the work as follows. The highest priority was to build a BI dashboard, essential for operating the business, then if I had some time left I could focus on the machine learning features. There were two main reasons for this:

  1. Creating the BI dashboard would deliver value straight away to the business
  2. Due to the internship being two months, we felt we could take the BI dashboard from idea to product, then add additional machine learning if we had time

To reach the goal, I built a user analytics dashboard. The architecture of the dashboard has two main components: backend and frontend.

For the first layer of the backend I used Flask, which is a Python framework. It allowed me to expose some APIs to the frontend. For a much cleaner code, I divided the backend into two separated scripts. The first one, defines all the API endpoints, and returns the data generated by functions defined in the second script. The second script is the core of the backend. This script implements the logic that gets the data from the APIs. Here I used Python libraries, such as Pandas, Numpy and Requests, to communicate with the Bounce API.

For the frontend, I used HTML, CSS and jQuery and chart.js.

My workflow was pretty easy. First of all, talking with the founders and my mentor to understand what insights the company needed the most. Second of all, using a Jupyter Notebook as a playground, I reshaped or extracted the data in the most useful form. When I had the result that I was expecting, I could finally refactor the code into the backend logic script.

Features

The dashboard has a total of 10 charts.

  • Daily new users over the past 30 days
  • Daily active users over the past 30 days
  • Monthly active users over the past 3 Months
  • The history of the average stickiness
  • The stickiness distribution
  • Hourly distribution of exercises
  • The N-Day retention curve
  • Retention analysis (estimate the app’s usage interval)
  • Retention lifecycle (new, active, churned and resurrected users)
  • Exercise distribution

Here some of the most significant screenshots of the dashboard.

Learnings

  • Git and Github : branching, PRs, hooks to slack
  • Python data science stack: pandas, scikit-learn
  • Web development with python: flask, jQuery, HTML/CSS
  • Visualization libraries: chartist.js, chart.js
  • Structure of a BI dashboard

--

--

Luca Palonca
Bounce

Computer Science student, aspiring Data Scientist, traveller and music lover