How to make a context-aware bot: Foursquare’s big bet on Marsbot

Sandi MacPherson
ddouble
Published in
14 min readOct 11, 2016

I’ve lived in Oakland for the past 2 years. Whenever I spend time in SF, a lot of the places are new to me — new neighborhoods, new bars and restaurants, new dog parks. Figuring out which ones to visit often comes down to opening up the Yelp app. However, that long-standing habit has recently been interrupted by Foursquare’s Marsbot. This unexpected behavior change these past few weeks prompted me to dig a little deeper, and do a teardown of Marsbot for the series this week.

But first… A bit of background

Foursquare burst onto the scene in 2009 at SXSW, when the annual event was more about music than tech panels and app launch parties. Two years later they had 10M users, with 35,000 new people signing up to the service every day. They raised a $20M Series B led by a16z in 2010, followed quickly by a $50M B (also led by a16z) one year later, valuing the company at $600M.

Unfortunately, the past few years have been a bit, shall we say… ‘tumultuous’ for Foursquare. Since launching over 6 years ago, the Foursquare app has slowly fallen down in the US ‘Food and Drink’, ‘Social Networking’, and ‘Overall’ charts:

As of this past Friday, the only category where Foursquare was in the top 1500 of any category was ‘US Food and Drink’, where it sat at #38.

A ‘betting the farm’ level bet

To combat this, and to clear up two distinct use cases for the product, CEO Dennis Crowley announced a massive strategic shift for the company and their product. The original Foursquare mobile app would focus only on exploration and discovery, competing head-to-head with Yelp. Meanwhile, all of the social pieces of the product would shift over to a brand new product called Swarm, helping users find and coordinate with nearby friends, and do the ever-popular ‘check-in’ action the company popularized.

The split was a huge bet. Looking at similar App Store data for Swarm almost 2.5y later, it’s unclear whether the strategy actually worked:

Swarm quickly fell off the US Overall rankings, and hasn’t cracked the top 100 in the Social Networking product for over a year (except for an 11d period this August, where it climbed to #89).

*quick aside… no, I’m not going to get into Foursquare’s other growth and monetization strategies via their data (i.e. Microsoft’s Cortana, Pinterest), just apps today, folks!

Marsbot

At the end of May, a small team at Foursquare released a brand new product called ‘Marsbot’. The limited release targeted iPhone users in NYC and SF, and new signups were put on a temporary waitlist.

I got off the waitlist pretty quickly, and started using the product right away. However, not long after I went home to eastern Canada. Being out of the US caused Marsbot to stop contacting me (which makes sense — int’l SMS is $$$). But once I opened the app again randomly last week, Marsbot got back to work finding me great places to check out. Huzzah!

So… what’s the vision?

Marsbot is focused on pushing you suggestions, rather than being a product that a user opens with a pre-identified intent and then completes a query. Marsbot wants to surface great places to you before you even think you may want to check something out. Almost like that great friend who randomly messages you on a Thursday night, asking you to check out Cool New Place XYZ that’s totally on-point with your tastes:

“We think of Marsbot as that best friend who knows what you love, where you hang out — and also happens to know all the best places in your city. Like my bestie, Marsbot learns that I’m into pistachio gelato and I spend most of my time in The Mission. Like my bestie, Marsbot texts me when it discovers a new chai spot opening around the corner from my office…” “…we are more focused about learning that you like pizza and proactively telling you about the new pizza place that opened up in your neighborhood.” -Marissa Chacko

Instead of a ‘chatbot’, the Marsbot team thinks about the product as a ‘context bot’.

But why download an app?

Marissa Chacko, the Product lead on Marsbot, also explained a bit more about the experience her and the team were going for on Product Hunt, and why that necessitated an app:

“…in order to have rich contextual data to personalize (location / identity / memory), we need an app (because Apple, Google & FB won’t provide any other means) … developing bots on messaging clients will be cross-platform but at the moment still seems like very limited and would degrade the experience we wanted to provide (something beyond a question and answer experience). Ultimately we have to push the platforms on this one…”

Marsbot is a prime example of the cluster of apps that are groups under the trend of ‘invisible apps’. As a user, you don’t actually open Marsbot for any particular use, except for if/when you want to adjust your settings. Users experience the product solely via SMS. This foundation makes the product seem a bit different from other bots — it’s rare for a bot to have a required app to download, but then interacts via the phone’s default SMS feature.

Getting started with Marsbot

The onboarding is super straight-forward and quick. The passive nature of the product is noted from the start, and setup is done with a few taps. One simple permission is all that’s needed:

The quick description of the product is simple and clear — Marsbot will find great things, without any work from you, and text them to you. Awesome!

Getting to know Marsbot

The onboarding for Marsbot is fully via SMS. After being on the waitlist for 3d, Marsbot texted me to get everything set up:

After going through this quick set-up, Marsbot adds this information (accessible via the app) and it begins tracking your location, understanding where you spend time, and the types of places you visit.

Other product messages

Marsbot followed-up with a bit of a tutorial 3d later, to explain how to use the product, simple commands that are available, etc., if/when the user chooses to complete some sort of ‘pull’ action in addition to the pushes they’re receiving from Marsbot:

One small critique — it would make Marsbot feel a bit more personal if the suggested search queries were related to me in some way. At this point, I’ve been using the product for almost a week. Marsbot should know at least a couple places I’ve been to and could potentially offer something more unique than ‘find cocktails nearby’, and could definitely suggest ‘find sushi in neighborhood-you’re-in-now/have-been-in-recently’ instead of a neighborhood I haven’t been in in over a year, on the other side of the country.

To confirm accuracy of the places that you visit over time, Marsbot will send a message with the details of a place that you visit often, asking if it’s in-line with your tastes and if you’d like to be notified of similar places as you go about your day-to-day:

Marsbot also has a cute reminder of SMS fees, that I received after my on-going experience with the product had been running for a month:

Marsbot in your life

Being a Marsbot users means that you’ll randomly receive texts, most often suggestions on places to check out. Looking back at my text history, this is pretty typical of the types of messages you may receive as a Marsbot user:

Out for dinner or drinks, and Marsbot acts as a bit of a concierge. Recommendations for what you might want to do next are surfaced, without any input or intent from the user. I’ve found the experience to be pretty seamless. It’s true that there have been a couple of occasions when I felt like Marsbot was interrupting me… but they haven’t become obtrusive enough (yet?) that I’ve turned them off.

Looking back at my text history, I’m unsure exactly how many of the suggestions I followed up on. I’m unsure if I keep Marsbot enabled, yet never actually ‘take Marsbot up’ on any of the suggestions if I’d actually stop the bot. Maybe?

There are no follow-up messages from Marsbot either, to ask if I ended up at any of the places that were suggested. But because they have all of my location data, it doesn’t quite seem necessary. They can make some assumptions around where I go next, time spent, and better feed that data into their suggestions algorithm to give me stronger recommendations in the future.

Meaningful push messages

One of the nuances about Marsbot that I appreciate is the choice of language in the messages. They’re often different, and the team has clearly done a great job deciding how to make the decision around which key piece of info will be shared with the user in the small, short space that’s available in one text. For example:

  • “One of the top 5 places for live music in Oakland”
  • “I bet it has the cookies you’ve been waiting for!” (I told Marsbot I like cookies, lol)
  • “I hope you left room for dessert!”
  • “Looks like it might be your first time at Awaken Cafe”

These are important cues, as setting the experience that the user will have and driving them to actually visit a physical place is a big ask. And if the person trusts in Marsbot and actually goes, I’m assuming they’d want the person to actually enjoy the venue and to have a good experience — as in the users mind, that recommendation is the only measure of quality for the actual Marsbot problem. So framing the place properly is extremely important.

Similarly, when you arrive at a location and are looking for suggestions, Marsbot has a chance to tie itself to a positive experience you may have there. It makes a ton of sense for them to surface what most people really enjoy, for example:

Timing and context

Another small detail that I really appreciated was Marsbot’s awareness of time and behavioral trends. It’s 10pm on a Friday? I just got to a bar? Of course it makes sense to follow-up with another bar that I might want to check out afterwards:

Chatting with Marsbot

While the main use case of Marsbot means that you rarely actually interact with the bot, if/when it brings up something interesting, you have the option to dig in. Similarly, if you want to use the product as a Foursquare/Yelp replacement — and take advantage of the fact that Marsbot already knows about your preferred tastes — getting a recommendation is very straightforward:

In this same interaction, Marsbot now knows that I didn’t take up the recommendation that had previously been served to me, and chose a different cocktail bar instead. In the tactic outlined previously, Marsbot doesn’t necessarily need to sit back while I ignore the suggestion. There’s an opportunity to put itself into my situation, and potentially tie the experience that I have at the location with Marsbot.

Even if there isn’t a lot of information about a certain location or type of place when I search for one (for example, I was looking for a Park in West Oakland one day), Marsbot doesn’t completely give up. There’s a suggestion, but it’s tempered with an apologetic, but still cute and in-character, response:

What’s missing

Travel

One of the biggest gaps that I noticed was related to a trip I took to NYC, just a couple of weeks after installing Marsbot. I found it strange that Marsbot treated my time spent in the city as it had my time in SF, when I was in a very different place — not my home, I hadn’t been there before since starting to use Marsbot, etc. In my mind, I would have really appreciated a bit more of a ‘visitor’ type of mode, where things that may be more appropriate to spending that type of time in a city might be appreciated. At the same time, I do appreciate that Marsbot treated me basically like a local, and knowing my tastes, tried to recommend a place that I would probably actually enjoy.

This was called out more specifically while I was out of town another time. At this point, I had been using Marsbot a lot more, so perhaps it had collected more information and was able to offer a better suggestion… though I don’t think I’ve had Mexican food for over a month, so I’m unsure how it generated this suggestion:

At 1:14pm, the lunch recommendation was appropriate and felt like a very supportive type of message to receive as I was in this new town for the first time.

Non-food/drink suggestions

If you choose to query Marsbot for a doctor, dentist, gym, etc., you’ll get a reply. However, it felt a bit strange using Marsbot for that purpose. Marsbot knows what kind of food I like, whether I like new and trendy places or not, the demographics of the people who like places similar to those I like, etc. None of that data is relevant (yes, that’s a sweeping assumption) when I’m trying to find a dentist, or a doctor, or a gym. Marsbot did send a response when I asked:

However, I almost wish there was a stronger product opinion that Marsbot isn’t built for this use case, reinforced through responses like this. For example, maybe Marsbot just straight-up says no, and doesn’t bother sending me random listings that are arbitrarily near me, or are related to me on some other tangential data. Getting a clear message from Marsbot about how it’s not built for that, and can only do certain things well, might be a stronger position.

Technical: One marvel, and a few bumps

The marvel

Marsbot does a great job at giving a follow-up recommendation if the first one isn’t quite a hit. For example, if I feel that a place is too far, a simple text of ‘closer’ prompts another recommendation to be sent that’s closer to my current location:

The ‘You’re welcome’ message is also a cute addition :)

Technical bumps

I ran into a few issues with Marsbot. Some of them really were small bumps, while others were actually a bit problematic:

  • Typing ‘help’ doesn’t do anything in-app, and pushing me out to a different mode of interaction. While the best practices here for bots are still being developed, I felt a bit ignored by Marsbot in this case.
  • I was picking up a friend in Eureka Valley, and Marsbot recognized that I was there — but my time in that neighborhood was simply transient. Pinging me at this point was one of the only pings that comes to mind where I actually found Marsbot to not be on-point, and to be a bit annoying.
  • When I asked for a sushi place, Marsbot recommended a ramen place that doesn’t serve sushi 🙃
  • Each SMS is prefaces with ‘ [marsbot] ’, which feels a bit janky

Final thoughts

I’m unsure how strongly the Foursquare team is pushing Marsbot at the moment, and if it’s fully ready for the limelight. Stats from the App Store show that the app isn’t getting a lot of traction at the moment, and downloads have fallen off since the release in the spring:

It seems as if it’s more in an experimental phase at the moment, and being limited to SF and NYC would also have a huge impact on the potential for the product to achieve broader adoption.

I am curious to see if or when the team decides to roll out support for other types of recommendations. Personally, I believe that the frequency of all food and drink activities are probably the only ones that make sense for the product. Sending notifications for any other type of service would be very infrequent, and the data that Marsbot is collecting is probably not related to my preferences and decisions in other categories. For example, I don’t get my hair cut multiple times per day, so having Marsbot send me recommendations of great hair salons doesn’t make sense in the context of a context-aware SMS bot, and where I ate dinner and got drinks this past week is probably a difficult dataset to work with to suggest a hair salon. As mentioned previously, I hope that the product becomes more tightly focused and potentially even removes some of the responses that it’s currently serving for those types of queries.

One big win for Marsbot is that it’s definitely cut into my Yelp usage, which I’m assuming is one of the main goals of the product. There was one clear case where I was thinking about somewhere to head to next, and I followed the suggestion that Marsbot offered. It would be interesting if I had better tracked my activities and which apps I was using at which times, to understand when I defaulted to Yelp — both as a way to measure the success of Marsbot, and also as a way to better understand when they could better ping me with suggestions. For example, I’m assuming some people are more planners, and prefer to get pinged about suggested places for drinks on Friday night in the mid-afternoon — but because they go out for drinks EVERY Friday night, in the same collection of a few neighborhoods, the slight time-shift would be appreciated.

The power of Marsbot to collect information as I go about my life is also one point that I find extremely powerful and interesting, and one that I (and Foursquare!) hope will only make my experiences with Marsbot better and more fulfilling over time.

--

--

Sandi MacPherson
ddouble

founder at @ddoubleai / @sandimacbot, rip @quibb. advisor to @adoptapetcom. work on @clearlyproduct & @5050pledge. don’t ask me to say bagel #canadian.