An Iced Latte and My ChatBot

I’m Keith and I’m a coffee addict. I recently lead an effort to bring an app all the way from inception to a final product now released in the Microsoft Office app store. You can find more information about Tallan’s Integrity Policy Management tool here. This has been the second greatest accomplishment in my professional life. The first…finding out how much I really loved being a part of a product team.

The following is a recount of some ideas I’ve had while enjoying my daily latte and the steps that proceeded.

The Backstory

With a product live in the Office App store, I find myself constantly checking if we have any new trials and what information we are getting about potential customers. Initially, I thought of a few ways to automate this process or event get notified through automated process, but then I thought of what my daily routine consists of. Either my boss or a member of the sales team would regularly ping me as to the state of the app, how are trials, who is signing up, etc. So I thought, “chatting” has become so ingrained in our daily communication that it only makes sense to provide those interested with a means of getting the information they need without need a physical person behind the scenes. The obvious choice at this point was to build a chat bot and use a natural language processor such as LUIS to do all the heavy lifting. The bot would go off to the database or CRM, find the information requested, and return data back to the user in a natural conversational format. An example flow could look like the following:

Sales Team: Did we get any new trials today?
Bot: Let me look…here are all the new trials created today…
Sales Team: Can you give me more information about company Goliath National Bank?
Bot: Sure, Goliath National Bank is a goliath sized company specializing in large scale banking…
Bot: I have also found that Goliath National Bank has been involved in 3 compliance law suits this year.
Sales Team: Who is the point of contact for this account?
Bot: This trial was created by Barney Stinson and can be reached by phone or email at…
Sales Team: Call Barney Stinson
Bot: dialing…

The Problem Space

And with this, an idea is born, but as a general practice these days, I decided to generalize this further to what problem am I even solving? Will the sales team use this or would I still be receiving the bulk of their requests? In the spirit of being LEAN I needed to come up with a hypothisis of sorts and figure out how I can prototype this without investing too much time. For now it’s not about how “awesome” the bot is but rather I just needed a way to test my idea. To restate, I’m looking to gain insight into the following:

Would this be able to streamline the daily process of the sales team?
Could this be used to target customer more efficiently to increase sales?
Could this create sales opportunities that are currently being missed?
Will they even use it?

Perfect, I have now defined my problem space!

Solution Space

Now to move on to the solution space. I will need a prototype. The prototype need not be a fully featured production ready bot, but provide just enough to put in the hands of the sales team and gauge their reactions. So I started to list what the minimum requirements could look like keeping in mind how much time it would take to implement:

As a sales team member,

  • I want to be able to get customer data easily without interrupting my daily workflow. I don’t want to have to learn yet another complex platform.
  • I need to be able to retrieve account details for a specific customer.
  • I want to be able to converse with the bot in such a way to get information on the company, get the contact information for the person I should be reaching out to, and any other information I could need to close the sale.

I may not be able to fully flesh out all these requirements, but I now have an minimally viable solution I can use to test my assertions.

Next step, is to go off and build the prototype. After a few days of ramping up on the Microsoft Bot Framework, refreshing my own knowledge of NodeJS, and finally getting my hands dirty I was able to product a simple bot that can understand “natural language” and respond back to the user. A sample output from running the prototype looks like the following:

Sales: Can you get me a list of all new trials since yesterday?
Bot: Let me look…
Bot: I found 3 new trial accounts.
Bot: ABC Financials, Millenial Bank, Goliath National Bank.
Sales: Get me more information on Goliath National Bank
Bot: Goliath National Bank is a large size company and have a trial set to expire on 12/12/2016. The point of contact is Barney Stinson and can be reached at

Testing the Hypothesis

With the prototype built, it’s now ready to put it to action and unleash it on the sales team through a Microsoft Teams extension and let the testing begin. I can track the actual requests in real time using the LUIS interface and further train the model to become better at interpreting the requests. I can also measure and keep note of how often I am getting pinged messaged versus how often the bot is getting messaged. And of course, no trial would be complete without talking to the sales team to gauging their response and collecting their feedback.


I am now in a position to use the collected data to confirm my hypothesis and begin my next experiment with the next feature or enhancement that makes most sense. Maybe integrating with a VoIP client to make calls directly or an email client to construct emails. Maybe aggregating search result data from Google or SEC filings to provide more in depth details about the company. What if we throw some machine learning in the mix and find patterns in the most active trials? The sky is the limit at this point. All it takes is a simple hypothesis, a minimum viable prototype, an experiment, a little fun and creativity, and most importantly, an iced latte.

Stay tuned for my deep dive into the bot prototype I developed.