It’s finally here… my first app for the Google Assistant has been approved. You can get all of the details here, but the basic gist is that it’s a straightforward helper for studying for the BJCP exam. It’s available on Google Home, Android 6.0+ phones (soon to be 5.0+), TVs and iOS 9.0+ phones. I basically used this as an example app to become familiar with the process in order to build a more sophisticated app, but if people find this useful I will enhance it. Just say, “Ok Google, Talk to Beer Judge Exam Trainer” on your Google Assistant equipped device. As always, drop me a line with any feedback.
Ever since attending Google I/O (one of the best conferences I’ve ever attended… seriously Google, please have me back next year!) earlier this year, I felt I needed to build a dedicated app for the Google Assistant. I kicked around a ton of ideas and at first felt daunted by all of the things that I didn’t know that were fundamentals for even making something simple in the space: My programming language(s) of choice were not in the ecosystem. I knew nothing about Conversational UI. TensorFlow, DialogFlow and all of the Machine Learning (ML) terminology were new to me and the SDKs were changing rapidly. So I did the same thing I did in the early days of Android and just jumped in and started learning.
I had a job (which seems like eons ago) in which I worked on many things that became the precursors to modern day AI and ML concepts. So a lot of that was learning the new names for concepts with which I was already familiar. Libraries to facilitate AI had come a long way as well, and there were off the shelf pieces for things that entire companies had arisen around back in the day.
I dabbled in a lot of odd things in college… so many things that, over the years since I’ve learned them, seemed so far afoot of my current chosen career as to be laughable. One of my big obsessions (that still is) was language and its origins. Why is it that ancient Sanskrit is so similar in some ways to Classic Mayan? I could discuss this stuff forever, but for the purposes of this digression, my point is that I’ve taken a bunch of linguistics and language courses. One course in particular was immensely useful in creating a primarily voice centric assistant app. In this course, I learned about phonemes. Phonemes are a convenient way of representing the way words should be pronounced. It’s probably pretty obvious how this would be valuable when dealing with a highly technical subject matter using just voice, but just think about the wide range of pronouncing words in English that have very similar spellings and you’ll get the idea. Phonemes are often represented using symbols from the International Phonetic Alphabet. I chuckled to myself about the irony that I was building a beer related voice assistant using the IPA, but this was the secret sauce to making my app sound like it was a beer judging expert and not some rube reading unfamiliar words out of a homebrewing manual.
I ended up building something for the Assistant that I’m proud of and learning a bunch along the way. The app is currently under review with Google, otherwise I’d be telling you all to go out and try it. I’ll leave that for a future post. UPDATE: The app is now available, read more about it here.
NOTE: As of December 6, 2018, Google will be discontinuing Nearby Notifications on Android, making much of the information in this post no longer relevant. Read more here.
Threddies recently made the transition from existing online only to having a B&M boutique shop. The Threddies shop specializes in items that are noticeably distinct from the online offerings and this posed a challenge for email marketing efforts. What was the best way to approach introducing the new store to existing customers? How could we ease new customers of the boutique into the existing Threddies email campaign? Would existing online customers (who are spread around the world) even care about the physical location?
Establishing the baseline
Many of the questions regarding how to actually structure the effort using our email marketing toolkit were quickly answered since AWeber was in the process of rolling out its segmenting on tags feature. We knew we didn’t want to maintain separate lists for online customers and those who frequented the shop. We also wanted to be able to easily keep all of our customers up to date about sales that were happening in the online store or new items from the shop that we intended to also sell in the online store. What was very clear was that we did not want to bombard online customers with information that would only really be relevant to people who could actually visit our physical location.
We sent one email to all customers informing them of the plan to open the B&M storefront and directed anyone who was interested in more information to use an alternate signup form that we created with a tag that denoted their interest. This would add new subscribers with the appropriate tag, but would also update existing subscribers to have the tag that we were going to key off of in order to send email with information specific to the boutique. We now had the ability to send targeted emails to those who actually cared about the physical store. That was great for existing customers, but it wasn’t really the best way to get visitors to the store signed up to our list.
Growing the local customer base
If someone made a purchase in the store, they would automatically be added to our marketing efforts, but we noticed in the early days, that a lot of people were stopping in and just browsing as we were tweaking the shop layout and products that were for sale. We wanted to be sure that anyone who stopped in early on and wasn’t ‘converted’ would still have incentive to come back as the concept was evolving. Setting up a device running AWeber’s Atom with the appropriate tag pre-filled was an option, but the shop is small and that would take up space that we could use for more merchandise and initial indications were that people weren’t going to be very proactive about signing up and would need to be instructed to do so. Wouldn’t it be great if there was a way to inform any visitor to the shop that we have a way for them to register for more information without someone directing them to a tablet in the corner of the store? Wouldn’t it be great if they could do all this from the device that they already have in their pocket?
Enter the Physical Web
I had been playing around with beacons and thought using them to solve this dilemma would be a good experiment. A beacon is a Bluetooth Low Energy device, capable of broadcasting information. Since it uses Bluetooth, the range of that broadcast is limited to a fairly small area and the beacon broadcast power can be tweaked to adjust that range. There are two main competing beacon standards: iBeacon (favored by Apple) and Eddystone (an open standard developed by Google). Android and iOS devices can use both standards, but iBeacon requires that an app be written to specifically interact with the beacon. Eddystone has a URL format which has become the cornerstone of the Physical Web. Android devices can interact natively with Eddystone-URL and iOS devices can do the same using the Chrome browser. I already had some Estimote beacons which support both iBeacon and Eddystone, so I configured one to broadcast the Eddystone-URL format.
Setting up the beacon
Estimote provides an Android app and Web UI to configure their beacons but any beacon that supports Eddystone will have a similar configuration process that is manufacturer specific. I’ll outline the basic steps without explicitly discussing the exact process required by my beacon manufacturer.
The first thing you’ll want to do is make sure the beacon is broadcasting Eddystone packets and more specifically the Eddystone-URL format. This format requires a URL that holds the content of what you want to broadcast. I used the URL for my web signup form that was configured to tag subscribers as being interested in the physical storefront. You will need to configure the beacon to broadcast this URL as well. The url cannot be bigger than 17 bytes, so you’ll likely need to use an URL shortener in order to accomplish this. I like https://goo.gl/ as it provides a nice dashboard with some metrics about your shortened URLs. Once everything is configured, and your beacon is properly broadcasting the Eddystone-URL format, you should see a ‘nearby’ notification on any reasonably recent Android device.
When someone clicks on this notification, they will be directed to your signup form.
Now you can place your beacon in the location where you would like to broadcast your physical web location and adjust its broadcasting power accordingly. Prepare to answer questions, as you’ll likely have someone who sees your ‘nearby’ notification for the first time and is curious about what exactly is happening.
Beacon of Hope
I’m still analyzing data regarding the effectiveness of this approach. It’s not perfect because not every device supports it without additional configuration, but adopting a standards approach like this allows others using Eddystone beacons and the Physical Web to aid in familiarizing customers with this technology and help drive adoption.
Moving forward, I’ll likely use this in conjunction with a dedicated Threddies app allowing use of more beacon functionality while providing additional opportunities for engagement. If you have any questions about using beacons or general discussion about the Physical Web, feel free to reach out, I’d love to hear from you.
I’m reviving my email newsletter entitled Fermenting Solutions. It started about a year ago as an effort to ‘dog food’ AWeber’s Curate mobile app. It’s a semi regular chronicle of a current project that I’m spending time on… the trials, tribulations and the interesting beverages I’ve had to drink while trying to work through them. You can read past issues here. If you’re interested in getting all new issues in your inbox, you can sign up using the form below.