Marsbot and Chatbots




I spoke about Marsbot a number of times on this blog, but I wanted to write my own (short) piece on what we did and why we did it. The short of it is that Marsbot is a personal assistant that tells you about all the best places around you and what to do there. The secret sauce is that you don't have to put much into it to get use out of it - you just download the app on your phone (iPhone or Android) and it automatically discovers where you go and what you like. Sometimes it'll ask you a question or two, but it also infers a lot automatically.

To get more information about it from a product perspective, I recommend that you check out both Dennis Crowley's post on Medium and also from Foursquare (and Marsbot) Product Manager Marissa Chacko.  You can also check out my talk at Talkabot in Austin. We all worked together on this for a while and are pretty psyched about the results.

Especially last December, when we got on Mashable's 12 best Apps of the year. It's nice to be on the same list as Pokemon Go - even though we far fewer users.

Now that it's been out for a while, here are a few of my takeaways from the experience.

1) Context is everything. Discoverability in the bot space isn't going to be like discoverability in the app space. There probably won't be a "bot store" and even if there is, it'll be very difficult to break through like the App stores. The winners are going to have to stand out and learn something very specific about users to help them complete a task (or have fun). Foursquare now has the Pilgrim SDK to allow other apps (and in the future hopefully bot platforms) to have the same superpowers that Marsbot has.

2) Natural Language Understanding (NLU) is the ability for a computer to understand human input. When it comes to bots, sophisticated NLU doesn't mean much unless the backend code can actually act on that understanding. For example, suppose you text Marsbot to say that the recommendation is "too far". An NLU system that gets that is only worth it if there's a backend module where Marsbot can give a closer recommendation. (There is by the way)! Therefore when it comes to bot design, I think the thing to focus on is what actions you want the bot to be able to take and expand on those. The NLU can be heuristic-based at first, and one day can be replaced by a sophisticated AI system only after a wide variety of actions are coded in the system.

3) I'm really into the conversational aspect of this. The hook for Marsbot is that it talks to you, not the other way around - but many of our users talk to Marsbot and seem to try to form a friendship with it. I imagine a seamless conversation where you can object to Marsbot's recommendations (for both places and menu items) with reasons until it comes up with a solution. I mentioned this in my talk in Austin, and some of it is implements (too far, too expensive) but Marsbot doesn't understand more than 1 command at a time. It would take a bit of work to make a fully-fleshed out human-like conversation working.

4) Marketing these bots and getting them to capture the public imagination is hard. Marsbot was lauded in the tech press, but the user numbers remain small. And even if you can build a bot with very large user numbers, how do you transition from being a fun curiosity to an indispensable tool that people rely on? I think a lot of bot-makers are doing some interesting things in the enterprise space where they can sell their technology to organizations. For the individual consumer space, the secret to the bot-hit is still elusive, but may be cracked someday!

5) You haven't heard the last of this technology from Foursquare. I think that our Pilgrim SDK will power bots like Marsbot, and our NLP + recommendation powers will continue to grow. If you're in the US, download Marsbot on your iPhone or Android device, and let me know how it goes (@maxsklar)!

Movie Search in Foursquare

Today I want to share a new feature that’s available on the Foursquare app and give a little background on how we got the ball rolling.

First – and I’m curious to see if any of you have different answers – where do you check movie times online? Maybe you use Google or an alternative search engine like bing. Maybe you use a service that specializes in movie times like Fandango or Movie Tickets.

What if you’re on the go? Normally when I want to check the movie times I only have a smartphone. Just opening Google works alright, though it’s a little clunky. It will show a map of each individual theater playing the movie, but you can’t get a map of all theaters and compare!

Fandango can’t seem to build a reasonable app for this – it’s full of popup ads which are horrible when you’re on a tight deadline. Again the maps are limited, and each page is full of flashy ads that really take away from the user experience. Now I’m no designer and I know this is subjective, but check out this train wreck:


So I thought we could do better at Foursquare. I’m already using Foursquare to plan my time when I’m outside the apartment, and finding movie theaters is a part of that. Why not be able to check the movie listings when I’m already figuring out which restaurant or bar to go to?

Foursquare already has:
– A great interface for searching.
– A way to see all results on a map.
– No ads that get in the way of completing the goal
– Uber integration. Is anyone prone to choosing movies that start in 5 minutes? “Come on we’ll get there before the previews are done!”

We’re just missing the ability to buy the ticket – but who knows maybe we’ll get that one day!

My role in this is small, but I want give a little insight on how a demo can help. We’ve been importing movie times from an external data source for awhile, which allowed people to check in to movies on Swarm. We even had the movies listed in our search indices! All that needed to be done was build a page where you can search for the data.

When hack day rolled around (that’s a day where engineers at Foursquare pick up on these kinds of projects that are outside their main area of focus), Stephanie Yang (@stpyangblog) and I decided that we were going to build this demo. It took us a little longer than the day we were supposed to use, but it came out looking like this:

Displaying IMG_3943.PNG
Screen Shot 2015-09-22 at 11.31.01 AM

Screen Shot 2015-09-22 at 11.31.01 AM

Screen Shot 2015-09-22 at 11.31.31 AM

Screen Shot 2015-09-22 at 11.31.31 AM

There were 3 key elements to our minimal product:

  1. Show me a list of movies and movie times in my area. We had pictures and descriptions lying around, as well as an idea of how popular each movie was (thanks Swarm checkins!) in order to do the rankings.

  2. A search box with autocomplete. This is so important! As you type, a list of potential movie matches comes up. This gets you to your search faster and prevents spelling errors and similar problems that can come up.

  3. A search results page that will show you the information for the movie you want.

The pages that we designed were usable, but Stephanie and I spend most of our time on data science and backend engineering, not front-end engineering and design. And we only had a day or two – so I’m really happy with the output.

Now usually these demos just kind of sit there and nothing comes of it, but the team working on search quality liked the demo and saw people actually searching for movies in the app (I bet they were really annoyed when it didn’t work!) So, they decided to put it in the app.

And the result is great! In my opinion, Foursquare is now the best app to use when you’re searching for movies. Here are some screen shots – note that when I start typing in a movie it immediately comes up on autocomplete. The search results are laid out on a list page that we’re all used to seeing. You can click through to see all the venue details for each theater, which Foursquare is already good at. And finally, if you tap the map icon, there’s your map of all the places you can go!







In terms of total work, my role in this was pretty small, since the sequence of events looks like this:

  1. Years of engineering work and infrastructure by other engineers

  2. Our 2 day hack project

  3. Weeks of analysis, coding, and testing by other engineers

But I'm just glad we were able to get that feature up there! What are the takeaways from this experience? I'm not sure, but off the top of my head, here are some things that helped:

  1. We were working on a feature that we personally wanted to use.

  2. Most of the background work had been done (we just had to hook up the last 5%)

  3. The feature fits in well with our current product. It doesn't distract from any of the other use cases and only comes up in autocomplete when we're reasonably sure you're after a movie.

If anyone out there gives it a try - let me know how it goes!