Measure your team happiness with some software tinkering!

For the challenge of finding creative uses of Pingdom I have created an office happiness monitoring web app that uses the microphone to listen in for a set of positive and negative words spoken, and then determines what the office mood is like.

Imagine being able to know when your team morale starts to decline, and ordering a pizza just in time! And maybe another pizza when it goes through the roof!

The initial idea was to use a completely dedicated mini computer for this task (Raspberry Pi) and have an offline speech recognition. However, I soon discovered a Javascript port of an offline recognition software called “pocket sphinx js” which gave me the idea of doing all of this inside a web browser. Unfortunately, it has proven to be difficult to make it reliably detect speech, so I have instead opted to use speech recognition API in the Chrome browser, that offloads it to Google via encrypted connection. Obviously, this is not ideal in the long run (unlike the offline method) for any privacy reasons, but as a fun concept, it works great.


Using a computer (or an Android phone) with an inbuilt microphone like iMac works ok, but you might need to speak relatively loudly.

In a nutshell, the speech is continuously sent, and whatever comes back gets split up into words and checked against a list of positive, negative and neutral words. If there is a match, it puts the word into a database, and pushes updates to the screen in real time, updating both the graphic and XML feed.

This feed is then used to set up a custom check in Pingdom, and allows having a nice- looking chart of the mood level. I have used the response time to mean a percentage that corresponds to the happiness level. So 50% or more results in a happy smile, and an OK status. Anything lower results in a DOWN status, and a sad face.

moodping_shart (1)

The formula looks at the words detected in the last 15 minutes, and because the live percentage is displayed on the page, it is quite fun to watch people bark at the computer as they try to up the percentage!

With Pingdom, you can see the ups and downs over a longer period of time, and the percentage is reflected as a ms value in the chart.

For testing, I have piped some radio stations into the app, hoping to see the percentage changing. The app seems to prefer BBC Radio 4 or some comedy stations, giving a steady happiness level of around 60% while playing a random Charles Dickens audiobook I had in my library caused a dive to 40%. Oh dear!

Try it for yourself here:

The app was made using Meteor javascript framework, and hosted on their free hosting service (it can sometimes be slow, so apologies for that). Meteor uses something called websockets, which allows having multiple sessions open on multiple computers, which all push into the same database, and which all update live on the screen.

In addition to figuring out a general mood in the office, the app can be adapted to have trigger words for anything else you can think of, and can send an alert to different people. There is really no limit to how this app can be used with Pingdom.

I’d like to highlight some particular useful features of Pingdom, which are:

Custom check – Allows to plug an XML feed, which reports on the status and a numerical value.

Priority levels – Assigns a higher importance alert for when the mood declines/increases.

Feature suggestion for Pingdom:

It would be great to have the ability to push to an endpoint, or url. And Pingdom should send an alert if periodic pings stop. So a reverse pingdom, in effect. That way, firewalls are irrelevant, since normally outbound traffic is allowed, and it would allow a myriad of applications.

Source code:


About the Author:

George is a UI and interactive product designer. He lives in West London where he recently founded CopyIO ( – a copywriting and proofreading “micro-service” used by bloggers, designers and developers. You can tweet him at @georgety

Leave a Reply

Comments are moderated and not published in real time. All comments that are not related to the post will be removed.