Engine is a Location Intelligence SDK


Engine is a mobile SDK that enables you to engage users in the right place at the right time. Engine enables your app to:

Ask which businesses or places of interest the device is currently at or near. Learn more.

Request an alert if the device enters a location-based Circumstance, using targeting rules you’ve defined in the Garage web UI. Learn more.

More Detail

Engine is comprised of the following:

  • a client-side cache of Factual’s Global Places data populated using map “tiles” fetched when devices enter new areas
  • a machine learning based system for “attaching” devices to Factual places probabilistically, by matching the local cache of places data against a number of features from the device, device history, and map meta-data
  • a monitoring process for circumstance detection
  • a remote configuration system for receiving new targeting directives from The Garage

Current Factual Place

Engine can return a list of candidates for the user’s current location. You can use this list to drive a check-in interface, or to passively tag events or media with a place.

For each candidate, you will receive:

  • Place name
  • Place categories
  • Lat/Lng of the place
  • Distance in meters from the device
  • A place-attachment threshold (how confident Engine is that you are at the place).

For both Android and iOS, the place candidate call is non-blocking. You must register a callback method to handle the response.

Circumstance Notifications

Through configuration in The Garage, you define Circumstances in Engine that combine place-attachment with constraints of your choosing.

A Circumstance can currently be comprised of:

Condition Definition
at Any location(s) that Engine is confident that you are currently at. For example at Starbucks or at a concert venue.
near Any locations within approximately 200 meters of of the device’s current location that must be present. For example, near a bar.
date/time parting Days or time brackets the Circumstance should be limited to. For example M-F, 6am-9am
hours of operation Based on hours of operation data in Factual’s Global Places Data, Circumstances can be filtered against currently open/closed businesses. For example, near a store that is open right now.

Engine will monitor in the background for the device entering any of the specified Circumstances. Upon a positive hit, Engine will invoke a callback function called an Action Handler that you define to perform whatever action you desire.

Because Circumstances can be defined in The Garage, a convention is required for relating each Circumstance to an action handler. This is done through an action id. For example:

Circumstance Action Id Example Action Handler
User is at a competing coffee shop near one of your own. send‑free‑coffee‑coupon Your handler makes a request to the cloud to generate a discount coupon, and uses a push notification to offer it to the user.
User is at an office near your coffee shop on the weekend send‑free‑coffee‑coupon Same as above
User is currently at your coffee shop check‑and‑configure Your handler checks to see if the user has an existing coupon, and (if so) pops up a dialog asking if they want to make use of it.

As in the example above, multiple Circumstances can be tied to the same action.

Get Started

  • Installation instructions and example code for both of these features are available for iOS and Android.