As engineers at Redfin, we are always looking for ways to bring top of the line, cutting edge technology to the real estate industry. Apple’s iBeacon is a relatively new technology that have been changing how people experience the world with context-aware information. Earlier this year, I had an opportunity to use iBeacons and in doing so, experienced what they could offer the real estate industry.
Wait… What exactly are iBeacons?
Beacons are a class of Bluetooth low energy (BLE) device that broadcast their identity to nearby electronic devices when they are in advertisement mode. The thing that makes iBeacon different from other BLE advertising devices is that Apple has defined a standard iBeacon prefix to their advertisements. The iBeacon prefix helps to identify that the advertising BLE device is an iBeacon device. If you’re interested in learning more about iBeacon, check out Apple’s iBeacon Documentation.
Cool! So what can they be used for?
There are already great technologies available on mobile devices to estimate where a person is when they are outside (including cell networks, GPS and Wi-Fi), but those technologies often fail to give an accurate position indoors. iBeacons, which use BLE technology, have a max range of about 10 meters, but can provide highly accurate locations, especially indoors. For example, if you walk into a store, your iPhone will know exactly which store you’re in and can give you contextually relevant information. Or if you go to a museum and approach an art piece, an app on your phone would be able to describe its history as you get close to a piece. Sounds pretty cool, right? So, how could Redfin use this technology to enhance experiences for our customers when they are visiting homes?
So, where do we start?
After a few brainstorming sessions with other engineers and product managers, we decided it would be best to leverage an existing iOS feature we had. Open House Mode is a tailored experience inside of our internal Agent Tools iOS app to help agents reach out to potential buyers while at an Open House. We realized we could turn the iPad into an iBeacon and greet (aka send a notification) customers when they arrived at the open house. This would help customers because the greeting would provide information about the home at their fingertips at the right time.
Sounds like a good idea! Okay, let’s do this!
First things first; how do we get iBeacons inside of each open house to advertise beacon information about the home? This was actually the easy part! Our Agents set up an iPad at every enhanced open house to help customers sign in. Using Apple’s peripheral manager, we can turn each iPad into an advertising iBeacon once the open house starts.
Now how do we greet our iOS customers at ANY Redfin open house they decide to visit? This proved tricky at first because Apple’s region monitoring service only allows monitoring for up to 20 beacon regions. If we limited ourselves to monitoring only 20 regions, we would have to figure out which regions were the right ones to watch for each iOS customer. This seemed like a lot of work, especially because it’s hard to predict behavior previously unseen. For example, if customers are visiting a new area they’ve never searched before and stumble upon a Redfin Open House they want to attend, we still want to greet them!
I decided to use some the iBeacon identifiers to encode which Redfin open house they were visiting. After the aforementioned Apple iBeacon prefix, a developer can use up to four other components that help to identify the iBeacon: Proximity UUID, Major Value, Minor Value and Identifier.
- The Proximity UUID is what distinguishes iBeacons from each other.
- The Major Value is used to group related iBeacons that have the same Proximity UUID.
- The Minor Value is used to identify individual beacons within a Major group.
- The Identifier is an unique identifier used to associate with the returned region
At a high level, the UUID, Major Value and Minor Values were designed in such a way that the identity of the open house was encoded into their values in the advertisement information. When the Redfin iOS app on a customer’s phone “sees” an iBeacon for a Redfin Open House, a little bit of decoding is done to figure out which open house the customer is attending and then the app sends out the appropriate greeting. So, a customer with the Redfin iOS app can walk into any Redfin Open House and be greeted!
let beaconRegion = CLBeaconRegion( proximityUUID: NSUUID(UUIDString: "AA63A6F0-40AF-4037-9E6C-DE206852B001")!, major: CLBeaconMajorValue(123), minor: CLBeaconMinorValue(456), identifier: "Redfin" )
Development went smoothly once we had all of our major decisions laid out. However, testing was a different story! We had to test on multiple devices, some with different iOS versions, environmental conditions, and phone states all while moving in and out of regions. The iBeacon testing was often a two-person job! An example of a setting up a test scenario looked like this:
- Riana: Set up a fake Redfin Open House appointment in our test environments
- Riana: Walk away from the office with an iOS device with the consumer Redfin app
- Jared: Start the Redfin Open House on a different iOS device with our internal iOS app in the office
- Riana: Walk towards the office with an iOS device with the consumer Redfin app
- Riana: Observe consumer iOS device receives a greeting when you get close to the office
This was different than any other testing we had done before and required us to figure out our best practices. Throughout the testing, we found opportunities to fine-tune our algorithm in order to notify iOS devices at the intended distance from the Agent’s iPad and make sure we only notified a customer once per open house per day. We definitely got our exercise walking around the building!
That sounds like it went smoothly! Did anything ever go wrong?
It was almost too good to be true! The development of the iBeacon experiment went pretty smoothly and we were able to fix all our bugs. In addition, the scenario worked on all iOS versions. One of the tricky bugs we ran into during development was the greeting not appearing on iOS 7 when the phone was locked and the app was not running. In order to work around this bug we decided to start the lowest powered location services (including in the background) to coax iOS 7 into ranging beacons. It turns out this wasn’t an idea that Apple supported.
We ended up having to remove the location services and relied solely on the region monitoring service. Even when the phone is locked, the region monitoring service starts up with the region that is seen and range beacons for a few seconds, which is something we wanted. This doesn’t work as well for iOS 7. At Redfin, we try to support as many iOS versions as we can as long as there is high usage in our customer base. However, with other fast moving companies, iOS 7 seems pretty ancient, especially with iOS 9 upon us and upgrade rates very high. A big lesson we learned is that we won’t be able to have feature parity for all iOS versions, but the moment customers upgrade they will get the Redfin Enhanced Open House greet experience.
Do people actually use it?
Generally, the Redfin iBeacon Enhanced Open house feature experience went pretty well! The greetings don’t get as much fires or opens when compared to our notifications about new or updates to homes in your saved search area, which we expected. We are targeting a MUCH smaller population of customers who have the latest iOS version + the Redfin App + actively visiting Redfin Open House.
We really want to see where else we can take the beacon technology. We are working on a number of other scenarios we want to try in order to engage with our agents and customers, so stay turned. Plus, we can’t forget about our Android users :)