Building a Bot to Collect Accurate Delivery Data.

4 min read - Development

TL;DR: Accurate delivery data and timeframes are an essential part of any successful product development process. But the later you leave your time-tracking, the less accurate it is. That’s why I built a bot that lets our product teams be more proactive with their reporting. It integrates with our project management software, our holiday-booking system and Slack to deliver daily reminders to our developers and designers. This lets them quickly log any time unaccounted for, improving the accuracy of our delivery data and empowering our product managers to precisely plan every sprint.

Delivery data drives so much of what we do at Sonin. The more information we can give our product managers, the easier it is for them to plan successful sprints and accurately forecast deliverables. But it’s also invaluable for everyone to have this insight during agile retrospectives and reviews after each sprint – letting us base decisions and estimates on facts instead of assumptions. Without that, you’re just working on educated guess-work.

I built an AI bot for better delivery data

Time is the Most Important Metric

The most important metric on any given project is time. It doesn’t matter if you’re measuring throughput, cycle time or velocity. Every measurement relies on the timeframe in some way or form.

At Sonin, every member of a product team logs all of their time in our project management system. The final deadline for submitting our time is every Friday. But as anyone who’s tracked their time knows, the longer you leave it the less accurate your data is.

That’s why, over the past couple of days, I’ve been working on a bot that makes it easy for other developers as well as designers and QA, to be more proactive when it comes to reporting their time.

How does it work?

The bot I built plugs into our PM software to check the number of hours that everyone’s logged at the end of the day. At the same time, I also made that it integrates with our holiday-booking system. This way, we can cross-reference and cancel out anything that’s been booked in.

Based on this, the bot works out if anyone on the team has any time unaccounted for. I then added a Slack integration to send each individual a message letting them know how much time is missing. Each message includes a quick link letting them log the leftover in our PM software.

Behind the Scenes

To run the bot, I chose AWS Lambda. It lets me run code without having to provision or manage any servers. And at the same time, there’s no software or runtime to install, maintain, or administer.

But most importantly, with serverless architecture, you only pay for the compute time you consume. Think a scalable PAYG set-up vs subscribing to a set amount of server capacity – whether you use it or not. This keeps the product cost-effective but also makes it easy to quickly add new features and integrations.

Making the Bot More Human

During the first phase of testing, I quickly found getting the same stock reminder at the same time every single day leads to a huge drop-off in engagement. It just wasn’t personal enough. So to fix this, I added a few variables.

The delivery time is randomised between quarter-past and half-past five. All messages pull in names so they’re addressed to individuals personally. And the template switches between a set of different messages – all, of course, with their own emojis.

To do this, I worked closely with our design team who helped me to improve the UX writing of the bot. The more personal, playful microcopy has helped maintain engagement from day-to-day.

Final Thoughts

Delivery data is essential to plan successful product development sprints. And accurate time-reporting plays a huge part in this. I’ve found automation to be a great way of ensuring this data is recorded right, faster. But even a short development sprint with user testing has shown just how important it is for automated interactions to feel human.

Written by Henry Dennis – Web Developer at Sonin