At Punchkick, we’re constantly looking for ways to operate more efficiently and consistently across every part of the business. From proprietary systems that accelerate our deployments and quality assurance processes, to optimizing our marketing automation workflows to more quickly engage with customers, the Punchkick team has always subscribed to the maxim that “automation is everything.”
One area that recently received automation attention was our sales operations, and the various systems that contain codependent information about our pipeline, team allocation, and client communications. We found that even with a sales team completely aligned on the process and focused on consistency, data inconsistency and repetitive tasks still crept through.
Even with a totally aligned team, repetitive administrative tasks open the door for data inconsistency and lost time.
So we set out to automate these processes to reduce repetitive human tasks and ensure data normalization across systems—and in the process, found inventive new ways to make conversational UI and chat bots in Slack work for us.
Defining an MVP
Punchkick uses Slack for pretty much everything, so it was only natural that we build a chat bot that could coexist with all of our existing files and conversations. Designers, strategists, and developers at Punchkick are fascinated by the possibilities with chat bots and conversational UI, so many of our internal processes rely on home brewed bots—from updating JIRA tickets to sending invoices to clients.
Conversational UI allows the user to express their needs and ideas in their own language, and can be designed to accept a wide range of different responses and formats. It’s also fun to infuse a little personality and familiarity to a bot, to make it relatable and comfortable to talk to. For this project, we settled on the name OppBot, for opportunity bot.
Conversational UI allows the user to express their needs and ideas in their own language—and it’s easy to make repetitive tasks feel fun.
OppBot would automate the tasks that salespeople and project managers conduct every time Punchkick takes on a new project, like standing up a new project in Harvest, creating new folders in Google Drive, and generating a new deal in HubSpot, our CRM and marketing automation solution. Not only that, OppBot would ensure consistent nomenclature and normalize data across these systems, so we could analyze trends with other tools later.
Building the Chat Bot Conversational Model
The first big task for OppBot was to define a conversation tree that would account for the many different project types Punchkick takes on—including our various products, services, and mix of new and existing client relationships. Beyond that, it’s important to identify the disciplines that will need to be involved with each stage of the project so it can be staffed appropriately—is it an iOS app? A user research project? A TUX implementation? A new middleware and orchestration layer?
Narrowing the various options down into a conversation tree that was neither too generalized nor too tedious took time, but ultimately our developer for the project, JC Gibson, was able to bring it to life in code. Because of some of the wrinkles of how the Slack chat bot SDK handles ongoing conversations, JC needed to build an AI backend for OppBot, which he named Pennyworth after the last name of Batman’s butler Alfred. Soon, Pennyworth will be smart enough to power even more sales operations and business intelligence tasks at Punchkick—but more on that later.
Perhaps the most important part of a conversational UI chat bot is error handling—being forgiving and helpful when users don’t respond how you expected them to.
Because multi-faceted chat bots can sometimes feel intimidating, it was essential to write helpful hints and error text to guide users along. Even though the audience today was a half-dozen sales and marketing people we work closely with every day, the scope of OppBot was broad enough to necessitate help text for future team members. Perhaps the most important part of chat bots is error handling—being forgiving and helpful when users don’t respond how you expected them to. The best way to predict this is user testing—which, with our captive audience of colleagues, was easy to organize.
Data Normalization across HubSpot, Harvest, and Drive
Luckily, most of the tools we use at Punchkick offer APIs that allow us to deeply integrate with our data there and create the new records we need. Over the course of a few days, JC was able to make the API integrations OppBot needed and solve for some of the common project metadata across systems—like kickoff dates, project durations, team members, and more.
One of the core objectives of the project was data normalization, as we look to better visualize and use data about how our projects are operating over time. Punchkick has always had a loose system of project codes, applied haphazardly across clients and projects in different systems. Generally, project codes include a few letters for the client name and a few numbers for the project. But when you have multiple parties generating project codes across various systems without a common source of truth, overlaps and inconsistencies happen.
When you have multiple parties generating project codes across various systems without a common source of truth, overlaps and inconsistencies happen.
Since project codes had been unevenly used and enforced over time, it was necessary to first define an ideal process for project codes, and then apply them retroactively across past projects. The solution ended up being a simple string of numbers and letters that kept distinct projects separate and allowed connected projects to be visually connected—like early discovery projects and subsequent maintenance projects.
Retroactive consistency seemed a daunting task, but some quick scripts were able to apply our new project code nomenclature consistently across Google Drive folders, HubSpot deals, and Harvest projects. And in order to prevent future conflicts or inconsistencies, JC wrote the project code logic and database into Pennyworth, meaning the system can act as a common record of truth for anything we build later. And if someone sees a project code they don’t recognize? Just ask OppBot, and he’ll look it up for you.
If someone sees a project code they don’t recognize? Just ask OppBot, and he’ll look it up for you.
What’s Next for OppBot & Friends
We were excited to introduce OppBot to our sales and marketing teams, but we wanted to dive into the next stage of automating common processes. Next, now that we have consistent nomenclature across necessary systems, we’re finding ways for OppBot and Pennyworth’s data to integrate with data visualization tools like Domo and Geckoboard, or to print information like invoicing schedules to a Google Sheet.
The possibilities for automation are always limitless, but grounding the end user experience in something delightful—chatting with a friendly chat bot in Slack—is a surefire way to ensure adoption and a positive reaction from team members. And lofty goals like data normalization are easier pills to swallow when the automated system saves everyone on your team lots of time every day.