BHF Shop Bot

I wanted to build a shopping Chatbot for the British Heart Foundation.

Charity shops run on three engines; stock donations, volunteer helpers, and customers to buy things. So I wanted the bot to be able to offer something for all three aspects

Find a shop

The ‘Find a shop’ flow is about helping the user find a shop nearby to donate unwanted items to.

Ebaybot- Find a shop

The bot asks for the users location and then queries the Google Places API for places that match the preset search term of “British Heart Foundation”. The results are displayed to the user as a set of three cards showing the nearest three BHF shops.

It relies on the information in Google Places being correct, which it isn’t always, and interestingly, the Google Places API only returns results of places that are open, which may work well if you’re looking for a place to eat right now but if you search for charity shops on a Saturday evening you get no results. If I was doing it again I’d want to host the shops location and opening times somewhere like a Google Sheet so that the bot can provide more useful info about which shops are nearby, their opening times and what kinds of things they want to be donated.

Another useful feature might be using Google Maps to show the route from the user to the shop they select.

Search our eBay store

The ‘Search our eBay store’ is about allowing the user to find out if the BHF eBay store has any of what they are looking for, and it was the most complicated and fun to build.

As it is a simple search it relies on the user knowing what they are looking for (which I think most people using eBay do). It doesn’t provide any kind of recommendations.

The eBay API’s are very comprehensive and there are multiple API’s available to accomplish different things. I used the ‘’ API as I could specify that only results for the British Heart Foundation store are returned.

The first part of the flow is about finding out what the user wants to search for and calling the API to return matching items.

Ebaybot - Search for guitar
EbayBot - Found items

The data that comes back includes a count of how many results there are. We can use this later but for now it’s useful to tell the user how many items we’ve got matching the search term to set their expectations about how helpful the next few steps will be in them finding what they are looking for.

Sometimes there are no matches to the search term and so the count is 0. This gives us something specific to filter on and means we can ask the user if they want to search again. If they say no then the flow ends there.

If there five or fewer results then the item name, image, and url on eBay are displayed in a set of cards. I chose to limit the number of cards to five to reduce the amount of sideways scrolling the user has to do. If there are more than five results (and we know this because of the count we used earlier) then the bot asks if the user would like to see more results. If they say yes then another set of five cards is displayed. This is repeated again meaning the maximum number is items that the user sees in the flow is fifteen, but there is no reason it couldn’t be expanded to continue to show as many items as there are in the search results.

Unfortunately the API specifies that only 140px thumbnail images are available, which means they don’t look great when displayed at a larger size (like when using messenger.com on a laptop).

I haven’t looked at the other ebay API’s but maybe the next step is to look at allowing the user to login to their eBay account and bid on an item.

Talk to a person

The ‘Talk to a person’ flow is essentially a simple ‘Contact Us’ form (but I couldn’t call it ‘contact us’ as from the user’s point of view they have already contacted us by engaging with the bot.

Ebaybot- Talk to a person

It asks the user what their query is about, what they’d like to say, and their email address. Using the Freshdesk API, these details are used to create a ticket in Freshdesk.

Asking what the query is about is a way to automate the triaging of the ticket in Freshdesk. It’s a little annoying having to collect the email address when you already have a means of communicating with the user but it’s required for creating a ticket in Freshdesk and gives a way for the customer service agent to reply to the user. I might look into the Freshdesk API a bit more and see if it’s possible to pull the replies into the chat.

As a first iteration it works ok, and it was a good distraction on a Saturday night.

How Hallmark UK does ecommerce for cards

Cards are a difficult thing to sell online. The average basket value is likely to be very low and customer expect low delivery costs and fast delivery, not only because that’s what most customer expect from online retailers but also because people only buy cards when they need them. Very few people buy cards in plenty of time, more people and more likely to think about buying cards just a few days before they need it. All of these things make selling cards online a challenge.

Hallmark UK website

Hallmark cards website

Back in 2014, if you visited the Hallmark UK website you could buy all kinds of cards and gifts.

Since 2015, and if you visit today in 2017, the Shop page is just a big link to Amazon.

Hallmark cards website amazon

The website banner links to a Greetings Card Shop page on Amazon.co.uk.

Hallmark cards amazon

The page on Amazon is called ‘Greeting Card Shop’, so Hallmark doesn’t even link to it’s brand page on Amazon, which suggests that perhaps they have found it more profitable to supply Amazon with greetings cards rather than sell them themselves.

If a retailer like Hallmark finds supplying Amazon more profitable than running their own ecommerce site, then it lends more weight to the opinion that Amazon is taking over ecommerce.

Ecommerce pricing: ending with .99 or .00? 

The story goes that back in the days when everyone paid cash shop keepers would price all of their products with 99p on the end. They did this knowing that most customers would pay with a higher amount and expect their 1p change. This meant that shop staff would have to ring up the sale on the shops till in order to get that 1p change for the customer making the transaction recordable on the till roll and reducing stealing from staff pocketing the money the customer paid.

However true or not this old story is, it’s interesting to think about how products are priced on websites; whether prices ending in 99p have any psychological effect on customers, and whether prices ending in 00 offer a better customer experience.

Pricing products with 99p on the end can have the effect of making customers think they are getting a better deal as it keeps a product below certain thresholds. 19.99 seems a lot less than 20.00. This comes from the denominations of our notes and even though it is only 1p different, pricing something at 20.01 would seem disportionately higher than being below that threshold.

Pricing products with .00 seems like it would be better for customers as it would make adding up their order total easier. But of course the basket page on the site does this for them, so are there any advantages to pricing with .00? It could reduce the number of characters in a price as if a product is 39.00 then 39 might be just as good, but John Lewis prices most of its products with .00 on the end. I wonder if it’s something they’ve tested.

What about pricing ending in 47p or 28p or any other number? Pricing on marketplaces like Ebay and Amazon often uses other numbers as it can affect the ranking of the product and make or break a sale for price sensitive customers. But retailers websites don’t do this. More often than not their pricing reflects the pricing in store which usually ends in .99 or .00.

Ecommerce Product Development: Beware of robbing Peter to pay Paul

So, you have a product that is performing well, and following customer feedback you think you can make some changes and develop a new improved product.

The new improved version is a bit more complex so it costs a bit more to produce but customers like it and it starts to out-perform the original product. Overall, sales are up, but of course they are now spread over two products. That’s twice the storage costs, twice the merchandising time, etc.

Customer feedback suggests further improvements and so version three of the product gets developed with increased complexity and consequently reduced margin. Again, sales increase a bit as the product better meets customer needs but margin and costs make the new products less profitable than the original.