Kippino: a Slack bot that tracks your company KPIs

tl;dr; Kippino is a Slack bot that will periodically collect metrics from your team mates and store them in a shared Google Spreadsheet. From there you can build dashboards, analyze trends and trigger alerts. It’s a very simple but effective way to start being a data-driven organization.

You can find source code and installation instructions on Github.

Kippino was born out of frustration. We wanted to start collecting metrics right now but we didn’t have time to build automated scripts and integrations. If this situation sounds familiar, keep reading!

The hassle of being a data-driven company

At Measurence, one of our core values is driving decisions based on data instead of opinions. When you’re a data-driven company, one of the most difficult and boring tasks is to gather and track all the metrics that describe how your product, company and team are performing over time.

You want to do that because you’d like to have one of those nice company dashboards that you can pull up on a monitor in your office or because you need to setup alerts if some metric goes above or below a certain threshold or simply because you want to know what’s going on in your business.

Whatever the reason, you should start collecting metrics from the places where the metrics exist already (e.g. accounting systems, proprietary databases, external services) or often you’ll want to collect metrics that are not yet stored anywhere but exist unstructured in your team mates’ heads or (when you’re lucky) in their laptops (e.g. how many leads have been contacted, how many customers signed up, how many support emails have been received, how many system outages, etc…).

One of the usual approaches that companies follow is to start automating the collection process by building a ton of scripts to track signups, users, server uptime, etc… This is indeed the right long term strategy but unfortunately this approach pays back in a (usually) very long time: it takes time to build and maintain all these scripts and integrations and it’s usually a task with low priority.

Another possible and most effective approach is to create a shared spreadsheet and ask every person that owns a certain metric to write down the value of that metric on the spreadsheet every day, week or month. This is a very low tech but effective approach that usually works very well in the first few days, or weeks if you’re lucky, but after a while people start forgetting to update the spreadsheet or they procrastinate and the spreadsheet becomes a forgotten place.

So, to keep people on track and help them update the spreadsheet, we created Kippino, a Slack bot that will help your team collect metrics in zero time and with (almost) zero effort.

Welcome Kippino

Kippino was born out of frustration. We wanted to start collecting metrics right now but we didn’t have time to build automated scripts and integrations. We knew that most of the metrics we wanted to collect were already stored somewhere and there was at least one person for each metric that knew where to look and that already checked up that metric periodically. So the solution was just a matter of asking that person to give us the value of that metric every day, week or month.

Kippino automates this process, asking them for you.

How it works

For the installation instructions, check out the project’s README on GitHub.

Defining the KPIs you want to track

Once you have Kippino running in your Slack organization and configured with your shared Google Spreadsheet, you will be able to setup the KPIs you want to track. When Kippino runs for the first time, it will create two worksheets in your shared spreadsheet: KPIs and Data.

The KPIs worksheet is where you configure the metrics you want to track, and the Data worksheet is where Kippino stores the value provided by your team.

You add a KPI by adding a row to the KPIs worksheet. Each KPI must have the following attributes:

  • name: an alphanumeric unique identifier for the KPI
  • question: this is the text that gets used to create the question together with the period (for instance if the question field is set to “How many customer signed up” and the period is “May 1st, 2016”, then Kippino will ask the user “How many customer signed up on May 1st, 2016?”)
  • owner-slack: the Slack username of the user that will be asked about this KPI (this may be different from the name that you see in the chat, you can look up the username on the Slack profile of the user)
  • frequency: how often to collect the value of this KPI (daily, weekly, monthly)
  • since: the date (YYYY-MM-DD) since you want to track this KPI - in case of weekly KPIs it must be the Monday of that week, in case of monthly KPIs it must be the 1st day of that month.
  • kippino-enable: set this to true or yes if you want to enable this KPI.

So, in the following example we’re tracking:

  • Customers that signed up (weekly)
  • Spending on infrastructure (monthly)
  • Burnrate (monthly)
  • Months of runway (monthly)

Configuring KPIs

Until a KPI is not enabled, Kippino will just ignore it. When you add, remove or change a KPI, you can tell Kippino to read them with the command sync KPIs (the sync will happen automatically every hour).

Once you ask Kippino to sync the new KPIs, it will start asking to the owners the values of each metric for each period since the first configured one.

Configuring KPIs

Each time a user answers with a value, Kippino will append a row to the Data worksheet.

Configuring KPIs

Each data point has the following attributes:

  • timestamp: ISO formatted timestamp for when the value was captured
  • kpi: the KPI name
  • value: the KPI value
  • for: the date associated to the period that this value refers to (same convention used by the since attribute)
  • source: the user that provided this value

Commands

Commands can be sent by direct message, or by mention in a channel where Kippino has been invited.

Kippino currently accepts the following commands:

  • help provides a brief description of the bot and the list of commands
  • sync KPIs reloads the list of KPIs (this is also done every hour)
  • sync users reloads the list of Slack users (this is also done every hour)
  • list KPIs lists the configured KPIs
  • pending lists the users that have pending questions (i.e. the bot asked them for a KPI but they haven’t responded yet)

Building a dashboard

Now that we’re collecting metrics we can start building a company dashboard where we can track each KPI over time. Most dashboard SaaS tools can fetch data from Google Spreadsheet, but for a first version you can directly work within the spreadsheet.

To extract a single KPI from the Data worksheet you can use the powerful Pivot Table.

This excellent article by Douglas Watson explains how you can extract individual metrics from the Data worksheet and build your own dashboard.

What’s next

Automating the collection of KPIs

Now that you have a quick way to collect metrics, there’s no excuse to not build a dashboard and share KPIs across your team or company. But as easy as it sounds, you’ll eventually want to automate the collection of certain KPIs instead of relying on humans.

So what are you going to do with the nice dashboard that you built on top of Kippino’s spreadsheet?

There’s actually nothing to worry about, because to automate a metric, you’ll just have to build a script that appends a row to the Data worksheet and tell Kippino to not track that metric anymore by setting the kippino-enable column to false. Kippino will just ignore that metric and the values collected by Kippino will coexist with the values collected by your automated scripts.

This approach makes it really easy to start with a manual collection process and slowly migrate to a more automated one over time.

Check out the gotchas

In case Kippino doesn’t work as expected, please check out the Gotchas section on the project’s README. In case you find a bug, please open an issue (PRs for bugfixes are also very welcome).

Share the love

Please tell us how you’re using Kippino to track your KPIs and how you’re building your team or company dashboard on top of it. You can find us on Twitter @measurence

Subscribe now to get updates on our IoT technology!