Title:
Apparatus and Method for Identifying and Employing Visitation Rates
Kind Code:
A1


Abstract:
Provided is a computer-implemented method that includes obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the location visited corresponds to a geographic location of a place of interest, determining, using a computer, a visit count corresponding to the location dataset, adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset, and storing the adjusted visit count for the place of interest in a visitation rate datastore.



Inventors:
Milton, Stephen (Lyons, CO, US)
Mccall, Duncan (Greenwich, CT, US)
Application Number:
13/769736
Publication Date:
08/21/2014
Filing Date:
02/18/2013
Assignee:
PlaceIQ, Inc. (New York, NY, US)
Primary Class:
International Classes:
G06Q30/02
View Patent Images:



Other References:
For every AT&T Android user there are 15 iPhone users_ What will be the ratio at Verizon Asymco, January 11 2011http://www.asymco.com/2011/01/11/for-every-att-android-user-there-are-15-iphone-users-what-will-be-the-ratio-at-verizon/
PaceIQ product, paceiq webpages, retrived from archives org, February 7-10 2012
PlaceIQ How location time of day and weather and our mood add context to what and where we buy, youtube video extract, Feb 2 2012https://www.youtube.com/watch?v=PJmx6m_gUw8
Schonfeld Erick, Study Mobile Ad-Tracking Systems are blind to 80 percent of Apple IOS Devices, techcrunch webpages, March 15 2011http://techcrunch.com/2011/03/15/mobile-ad-blind-80-percent-apple-ios/
Primary Examiner:
ROTARU, OCTAVIAN
Attorney, Agent or Firm:
Pillsbury Winthrop Shaw Pittman, LLP (McLean, VA, US)
Claims:
1. A computer-implemented method comprising: obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user; determining that the location visited corresponds to a geographic location of a place of interest; determining, by a computer, a visit count corresponding to the location dataset, wherein determining the visit count corresponding to the location dataset comprises: identifying a user profile of the user, the user profile including a characteristic of the user; obtaining a ratio of members of a group having the characteristic that also employ a mobile device that can be detected while in the place of interest, wherein: the ratio of members of the group having the characteristic is used to reduce an undercounting of members of the group having the characteristic who visit the place of interest and do not employ a mobile device that can be detected while in the place of interest, and the ratio is a function of both an amount of members of the group having the characteristic and a portion of the amount of members of the group having the characteristic who employ a mobile device that can be detected while in the place of interest; reducing the undercounting by increasing the visit count corresponding to the location dataset based on the ratio; adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset; and storing the adjusted visit count for the place of interest in a visitation rate datastore.

2. The method of claim 1, wherein: the user location data set is a location history of the user, the location history including time-stamped geolocations of the user detected by the mobile computing device over time; the user location data set is one location history of a plurality of location histories of a plurality of different users, the location histories including both location histories that are associated with a user profile and location histories that are not associated with a user profile; a different ratio is used to determine a different visit count for a location dataset that is not associated with a user profile and this different visit count is also used to adjust the visit count for the place of interest; and determining that the location visited corresponds to a geographic location of the place of interest comprises: obtaining a plurality of polygons defining boundaries of a plurality of stores of a business; determining that the location dataset includes a geographic coordinate inside one of the polygons; the adjusted visit count of the place of interest is an estimated amount of a number of visitors to the business within a duration of time; and the method of claim 1 further comprising: determining whether a marketing campaign of the business changed a visitation rate of the business based on stored data in the visitation rate datastore.

3. The method of claim 1, wherein determining that the location visited corresponds to a geographic location of the place of interest comprises identifying a polygon that characterizes a geographic area of the place of interest and determining that the location visited is inside the polygon.

4. The method of claim 3, wherein identifying the polygon comprises: identifying a plurality of centroids corresponding to locations of a plurality of different places of interest; providing the plurality of centroids to a crowdsourcing environment, wherein the crowdsourcing environment is tasked with identifying polygons for the plurality of different places of interest based at least in part on the plurality of centroids; and receiving, from the crowdsourcing environment, a plurality of polygons corresponding to the plurality of different places of interest, the plurality of polygons including the polygon for the place of interest.

5. The method of claim 1, wherein obtaining a ratio of members of a group having the characteristic that also employ a mobile device that can be detected while in the place of interest comprises: obtaining a ratio of members of a group having multiple characteristics of the user profile that employ a mobile device that can be detected while in the place of interest.

6. The method of claim 1, wherein the ratio corresponds to an error associated with counting visits to the place of interest by those having the characteristic based on mobile device geolocation.

7. The method of claim 1, wherein the ratio is the ratio of males in the group that employ a mobile device that can be detected while in a store corresponding to the place of interest.

8. The method of claim 1, comprising: determining that the user location dataset was provided by an application on the mobile computing device; obtaining another ratio of users who use the application while in the place of interest; and increasing the visit count corresponding to the location dataset based on the other ratio.

9. The method of claim 1, wherein increasing the visit count corresponding to the location dataset based on the ratio comprises: increasing the visit count corresponding to the location dataset by the ratio.

10. The method of claim 1, wherein adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset comprises adding the visit count value corresponding to the location dataset to a current visit count for the place of interest.

11. The method of claim 1, further comprising: determining that the place of interest was visited by the user during a given timeframe, wherein the visit count is indicative of a number of persons that visited the place of interest during the given timeframe; determining that the user was presented with an advertisement based on the user profile; and measuring an effectiveness of the advertisement during the given timeframe based on the determinations that the user was presented with an advertisement and that the place of interest was visited by the user during the given timeframe.

12. The method of claim 1, further comprising: obtaining a second user location dataset indicative of a second location visited by a user, the second user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the second location visited does not corresponds to the geographic location of the place of interest; and based on the determination that the second location visited does not corresponds to the geographic location of the place of interest, not adjusting the visit count for the place of interest to include a visit count corresponding to the second location dataset.

13. The method of claim 1, wherein the user location dataset comprises a geographic location indicative of a physical location of the mobile computing device at a given time.

14. The method of claim 13, wherein the geographic location comprises a set of geographic coordinates indicative of a given geographic point.

15. The method of claim 1, wherein obtaining a ratio of a group having the characteristic that also employs a mobile device that can be detected while in the place of interest comprises: obtaining a group profile, the group profile having a plurality of characteristics corresponding to characteristics of the user profile, and the group profile specifying the ratio.

16. The method of claim 1, further comprising: serving marketing content to the user device for presentation to the user, identifying a receive location corresponding to a geographic location of the user device at or near a time when the marketing content is presented to the user; determining a visitation effectiveness for a geographic area based at least in part on the receive location.

17. The method of claim 16, further comprising serving marketing content for the place of interest to other users in the geographic area based at least in part on a determination that the user visited the place of interest after receiving the marketing content.

18. The method of claim 16, wherein the geographic area comprises a geographic region within a given radius of the place of interest and including the receive location.

19. The method of claim 16, wherein the geographic area comprises a geographic tile including the receive location.

20. The method of claim 19, further comprising: identifying a demographic for the tile; identifying a different geographic area having the same or similar demographic as the tile; and serving marketing content for the place of interest to a user in the different geographic area based at least in part on a determination that the user visited the place of interest after receiving the marketing content.

21. The method of claim 16, further comprising: identifying a demographic for the geographic area; identifying a different geographic area having the same or similar demographic; and serving marketing content for the place of interest to a user in the different geographic area based at least in part on a determination that the user visited the place of interest after receiving the marketing content.

22. The method of claim 1, further comprising: identifying a different user having profile that is the same or similar to a profile of the user, and serving marketing content for the place of interest to the different user based at least in part on a determination that the user visited the place of interest after receiving the marketing content.

23. The method of claim 1, further comprising: identifying a plurality of users that have visited the place of interest after receiving marketing content for the place; identifying a common characteristic of the plurality of users that have visited the place of interest after receiving marketing content for the place; identifying a plurality of users associated with the common characteristic; and serving the marketing content for the place of interest to the plurality of users associated with the common characteristic based at least in part on the plurality of users having a characteristic associated with users that have visited the place of interest after receiving marketing content for the place of interest.

24. A non-transitory computer readable storage medium comprising program instructions stored thereon that are executable by a processor to perform the following steps: obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the location visited corresponds to a geographic location of a place of interest; determining a visit count corresponding to the location dataset, wherein determining the visit count corresponding to the location dataset comprises: identifying a user profile of the user, the user profile including a characteristic of the user; obtaining a ratio of members of a group having the characteristic that also employ a mobile device that can be detected while in the place of interest, wherein: the ratio of members of the group having the characteristic is used to reduce an undercounting of members of the group having the characteristic who visit the place of interest and do not employ a mobile device that can be detected while in the place of interest, and the ratio is a function of both an amount of members of the group having the characteristic and a portion of the amount of members of the group having the characteristic who employ a mobile device that can be detected while in the place of interest; reducing the undercounting by increasing the visit count corresponding to the location dataset based on the ratio; adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset; and storing the adjusted visit count for the place of interest in a visitation rate datastore.

25. A system, comprising: one or more processors; and memory storing instructions that are executable by the one or more processors to perform the following steps: obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the location visited corresponds to a geographic location of a place of interest; determining a visit count corresponding to the location dataset, wherein determining the visit count corresponding to the location dataset comprises: identifying a user profile of the user, the user profile including a characteristic of the user, obtaining a ratio of members of a group having the characteristic that also employ a mobile device that can be detected while in the place of interest, wherein: the ratio of members of the group having the characteristic is used to reduce an undercounting of members of the group having the characteristic who visit the place of interest and do not employ a mobile device that can be detected while in the place of interest, and the ratio is a function of both an amount of members of the group having the characteristic and a portion of the amount of members of the group having the characteristic who employ a mobile device that can be detected while in the place of interest; reducing the undercounting by increasing the visit count corresponding to the location dataset based on the ratio; adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset; and storing the adjusted visit count for the place of interest in a visitation rate datastore.

Description:

BACKGROUND OF THE INVENTION

1. Field of the Invention

The present invention relates generally to visitation of places and, more specifically, to identifying visitation rates for places based on location information.

2. Description of the Related Art

User profiles are useful in a variety of contexts. For instance, advertisers often employ user profiles to select when, where, or how they provide advertising messages to consumers. Similarly, market researchers may analyze attributes of consumers to better understand a market for a given good or service. In the context of certain places, such as brick-and-mortar business locations, it is also useful to know who is visiting your location and when. This type of visitation information can be useful in determining the effectiveness of advertising campaigns and, thus, can be used as an additional tool to determine when, where, or how to provide advertising messages to consumers. In some instances, the visitation information assist in managing a business. For example, a retail business may staff a greater number of employees at times when the business is expected to have a relatively high number of visitors.

Unfortunately, user profiles and visitation information can be difficult to obtain. For example, users typically do not report their visits to a location in any reliable manner. In some instances, the number of persons that visit a location can be counted, but such a task can be tedious and may not provide much, if any, information about the demographics of the visitors or what motivated them to visit the location.

SUMMARY OF THE INVENTION

The following is a non-exhaustive listing of some aspects of the present techniques. These and other aspects are described in the following disclosure.

In some embodiments, provided is a computer-implemented method that includes obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the location visited corresponds to a geographic location of a place of interest, determining, using a computer, a visit count corresponding to the location dataset, adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset, and storing the adjusted visit count for the place of interest in a visitation rate datastore.

In some embodiments, provided is a non-transitory computer readable storage medium comprising program instructions stored thereon that are executable by a processor to perform the following steps: obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the location visited corresponds to a geographic location of a place of interest, determining, using a computer, a visit count corresponding to the location dataset, adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset, and storing the adjusted visit count for the place of interest in a visitation rate datastore.

In some embodiments, provided is system that includes one or more processors and memory storing instructions that are executable by the one or more processors to perform the following steps: obtaining a user location dataset indicative of a location visited by a user, the user location dataset being based at least in part on a location signal received from a mobile computing device associated with the user, determining that the location visited corresponds to a geographic location of a place of interest, determining, using a computer, a visit count corresponding to the location dataset, adjusting a visit count for the place of interest to include the visit count corresponding to the location dataset, and storing the adjusted visit count for the place of interest in a visitation rate datastore.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram that illustrates a marketing environment in accordance with one or more embodiments of the present technique.

FIG. 2 is a flowchart that illustrates a method for providing marketing content in accordance with one or more embodiments of the present technique.

FIG. 3 is a flowchart that illustrates a method for determining visitation rates in accordance with one or more embodiments of the present technique.

FIG. 4 is a block diagram that illustrates an exemplary computer system in accordance with one or more embodiments of the present technique.

While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. The drawings may not be to scale. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but to the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.

DETAILED DESCRIPTION OF CERTAIN EMBODIMENTS

As discussed in more detail below, provided are systems and methods for determining visitation rates for various places, referred to herein as “Place Visitation Rates” or “PVRs”. A PVR for a given place may reflect a number of persons that have physically visited the place over a relevant period of time. For example, a PVR for a retail store may reflect the number of persons that physically entered the store over a given hour, day, week, month, year, or the like. In some embodiments a PVR may be indicative of a rate at which persons from a given location (e.g., within a particular radius or geographic cell) visit a place. For example, a PVR for a location may indicate that 10% of people served an advertisement for a store while in a given geographic area visit the store within a relevant period (e.g., within one hour of receiving the advertisement).

In some embodiments, determination of PVRs may be a portion of a larger marketing effort. For example, an overall marketing campaign may include identifying user profiles, identifying places of interest, providing marketing content (e.g., advertisements) related to the places of interest, determining PVRs for the places of interest, identify target groups of people based at least in part on the PVRs, and providing targeted marketing content (e.g., targeted advertisements) to the identified groups of people.

In some instances, user profiles can be used to improve estimations numbers of visitors and, thus, improve the quality of the determined PVR. For example, where a PVR for a store is based on a number of users that open mobile applications from their mobile devices (e.g., mobile phones) while located in or near the store, and a mobile device is associated with a user profile, attributes of the user profile can be used to estimate how many other users may also be visiting the store. Moreover, in some embodiments, user profiles can be used to determine demographics of visitors and, in some instances, determine whether or not visits are in response to prior marketing, such as advertisements previously served to visitors' mobile devices.

Although certain embodiments are described herein with regard to certain types of places (e.g., retail stores having brick-and-mortar locations) for the purposes of illustration, similar embodiments can be employed for any variety of places. For example, PVRs can be determined for airports, train and bus stations, sports stadiums, landmarks, parks or other places for which visitation information is desirable.

FIG. 1 is a block diagram that illustrates a marketing environment 100 in accordance with one or more embodiments of the present technique. As depicted, marketing environment 100 includes a marketing system (“system”) 102, mobile devices 104 (e.g., mobile devices 104a-104n), third party server(s) (e.g., advertisement servers, website servers, and/or the like) 106, service provider(s) (e.g., cellular service providers, network providers, and/or the like) 108, communicatively coupled via a network 110. Network 110 may include an electronic communications network, such as the Internet, a local area network (LAN), a wide area (WAN), a cellular communications network and/or the like. Network 110 may include a single network or combination of networks.

In some embodiments, marketing system 100 is operative to determine place visitation rates (PVRs) that are stored in a PVR datastore 114. In some embodiments, the PVRs are based on user location histories and user profiles. As discussed herein, in some embodiments, the PVRs and user profiles can be used to determine demographics of visitors and, can also be used to select and serve targeted advertisements or similar marketing content.

In some embodiments, user profiles are stored in a user-profile datastore 116. User profiles may include characteristics about users. For example, a user profile for a user 118a may include a listing of his/her preferences, interests, hobbies, demographics information (e.g., gender, age, etc.), and/or the like. In some embodiments, user profiles include information about mobile devices associated with users. For example, a user profile for user 118a (who has a user account associated with mobile device 104a or otherwise uses mobile device 104a) may specify a device ID for device 104a (e.g., a device ID of “1234”), a type of mobile device 104a (e.g., an Apple iPhone), an operating system employed by mobile device 104a (e.g., iOS 6.0), applications 120 employed by mobile device 104a (e.g., Safari Internet Browser, XYZ App, Mapping App, Search App, etc.), and so forth. In some embodiments, a user profile may include a record of marketing content that has been provided to the user. For example, where an advertisement for the XYZ store has been previously served to mobile device 104a, the user profile for user 118a may be updated to include a record of the advertisement having been provided to user 118a. In some embodiments, the record may include a location and/or time corresponding to a location of mobile device 104a when the advertisement was presented to user 118a (e.g., served to mobile device 114a and/or displayed for viewing on device 114a). As discussed herein, such historical marketing information may be employed to determine PVRs that are indicative of whether marketing content is successful in driving users to visit places.

In some instances, user profile information is acquired directly from users. For example, a user may opt-in to provide their user profile information and directly submit their user profile information via an account information webpage. In some instances, user profile information is acquired indirectly via profiling. For example, a user may opt-in to providing user information, such as their Internet browsing history to a third party (e.g., a website or other service provider). A third party may use the information to determine various profile characteristics about the person, such as their preferences, interests, hobbies, demographic information, and the like.

In some instances, users are provided an opportunity to opt-in or out of collection and sharing of their user profile information. For example, a user may select an option to withhold their user profile information, to share their user profile information without disclosing information by which they can be uniquely identified (e.g., a user ID), or to share their user profile information along with information by which they can be uniquely identified. Thus, user profiles can be maintained in a privacy-friendly fashion.

In some embodiments, location histories are stored in a location datastore 122. Location histories may include records of any number of places visited by any number of users. A location history for a particular user may include, for example, information about one or more places visited by the user. In some embodiments, location histories are based on detected locations of users' mobile devices. For example, where user 118a travels from location A, to location B to location C while carrying his/her mobile device 104a (e.g., having a device ID of 1234), and location datasets are generated that are indicative of mobile device 104a being located in each of locations A, B and C, a location history for mobile device 104a and/or user 118a may include individual location datasets corresponding to each of locations A, B and C. Locations may be expressed in a variety of formats with varying degrees of specificity. For example locations A, B and C may each represent a point (e.g., geographic coordinates—latitude and longitude coordinates) or a geographic area (e.g., geographic tiles/cells of a grid with which a geographic area is segmented, or a polygon representing a physical boundaries associated with a place). As discussed herein, the location datasets can be provided by a mobile device and/or third party entities, such as 3rd party servers 106 or service providers 108.

In some embodiments, a location dataset may include an indication of a geographic location along with other contextual information. For example where known, a location dataset may include a geographic location, a time a mobile device was located at the location, how the location was obtained (e.g., via GPS, an application, a website, a device ping, etc.), a confidence score, a device ID (e.g., “1234”), a type of mobile device, an operating system employed by the mobile device, applications 120 employed by mobile device 104a (e.g., Safari Internet Browser, XYZ App, Mapping App, Search App, etc.). A confidence score may be indicative of the accuracy of the detected location. In some embodiments, a confidence score may be based on the technique used to determine the location. For example, a location acquired from a GPS enabled phone may have a relatively high confidence score of 95%, whereas a location determined based on triangulation techniques may have a lower confidence score of 75%. Thus, location datasets and corresponding location histories can be used to determine where users have been (and when) with a specified level of confidence. For example, a location history corresponding to mobile device 104a having a device ID of 1234 and being detected at locations A, B and C may include the following location datasets: [1234; A; 1/1/2013 @ 3:30 pm; XYZ App; 90%; iPhone; iOS 6.0; Safari Internet Browser, XYZ App]; [1234; B; 1/1/2013 @ 3:45 pm; XYZ App; 75%; iPhone; iOS 6.0; Safari Internet Browser, XYZ App]; and [1234; C; 1/1/2013 @ 5:45 pm; Mapp App; 80%; iPhone; iOS 6.0; Safari Internet Browser, XYZ App]. As a further example, where mobile device 104b does not share its device ID (or the device ID is otherwise not available in association with the detected location information), a location history corresponding to mobile device 104b having a device ID of 12345 and being detected at locations D, E and F may include the following location datasets: [n/a; D; 12/31/2012 @ 4:30 pm; XYZ App; 50%; n/a; Android; n/a]; [n/a; E: 1/1/2012 @ 5:15 pm; Provider Ping; 95%; n/a; Android; n/a]; and [n/a; F; 1/3/2013 @ 6:00 pm; Map App; 95%; n/a; Android; n/a]. Such, location datasets and the resulting location histories can be used to determine places users have visited and when.

Although certain exemplary embodiments described herein refer to a limited number of devices and location datasets for the purposes of illustration, location datastore 122 may include location histories including any number of location datasets for any number of mobile devices and associated users. For example, location datastore 122 may include a location history database that includes location histories for hundreds of thousands of mobile devices. Moreover, the location histories for users can include any number of location datasets indicative any number of locations visited by the users. In some instances, location datasets that fall outside of a relevant period (e.g., hours, days, weeks, months, years or the like) may be expunged. For example, where location histories are only maintained for the past six months, location datasets that correspond to locations detected more than six months prior may be deleted from location datastore 122.

In some instances, users are provided an opportunity to opt-in to collection and sharing of their location information. For example, a user may select an option to withhold their location information, to share their location information without disclosing information by which they can be uniquely identified (e.g., a user ID), or to share their location information along with information by which they can be uniquely identified. Thus, user location information can be maintained in a privacy-friendly fashion. In some instances, these options may be specified via user preferences on the mobile device and/or an application-by-application basis. For example, an application may prompt the user to share their location, and the user may specify whether they would like to share their location information.

Mobile devices 104 may be any of a variety of portable electronic devices. Mobile devices 104 may include a portable power source, such as a battery, that enables them to be used without being tethered to a power source. Mobile devices 104 may be capable of communicating with other entities of environment 100 via network 110. Mobile devices 104 may include, for example, a cellular phone, a smart phone, a personal digital assistant (PDA), a tablet computer, a laptop computer, a vehicle in-dash communication/entertainment/navigator unit, and/or the like. In some embodiments, mobile devices 104 include various input/output (I/O) interfaces, such as a graphical user interface (e.g., display screen), an audible output user interface (e.g., speaker), an audible input user interface (e.g., microphone), a keyboard, a pointer/selection device (e.g., mouse, trackball, touchpad, touchscreen, stylus, etc.), and/or the like. In some embodiments, mobile devices 104 include general computing components and/or embedded systems optimized with specific components for performing specific tasks, such as applications 120. Applications 120 may include one or more modules having program instructions that are executable by a computer system to perform some or all of the functionality described herein with regard to mobile devices 104. An application may include, for example, an Internet browser (e.g., Apple's Safari Internet browser), special purpose apps (e.g., the XYZ Store shopping app, a mapping app, a search app, etc.), and/or the like. In some embodiments, mobile devices 104 include computer systems similar to that of computer system 1000 described below with regard to at least FIG. 4.

Although certain embodiments are described with regard to mobile devices, it should be noted, that the present techniques are not limited to mobile devices. Other computing devices subject to geolocation may also generate data useful for forming user profiles and location histories. For instance, set-top boxes, gaming consoles, or Internet-capable televisions may be geolocated based on IP addresses, and data from user interactions with these devices may be used to update user profile and location histories, e.g., with user interaction indicating a time at which a user was at the geolocation corresponding to the device.

Mobile device location information can be provided by mobile devices 104 and/or other entities of environment 100. In some embodiments, mobile devices 104 include location aware devices that are capable of determining their position. For example, a mobile device 104 may include an embedded global-positioning system (GPS) device capable of determining its current location. In some embodiments, the location of mobile devices 104 is determined indirectly. For example, where a mobile device 104 does not include an embedded GPS device, or the location information is otherwise unavailable directly from the mobile device 104, the location of the mobile device 104 can be determined based on attributes of the wireless environment, such as the location of network access points (e.g., wireless hotspots, cellular towers, etc.) used by the mobile device 104 to access network 110 and/or the relative strength of signal between wireless access points that can be used to triangulate the location of the mobile device 104.

The locations of mobile devices 104 may be obtained at various times. In some embodiments, the location of a mobile device 104 is obtained in response to network activity. For example, a location dataset for a mobile device 104 may be generated when it connects to a network (e.g., upon power-up and connection to network 110). In some embodiments, the location of a mobile device 104 is determined at regular intervals. For example, a mobile device 104 may be configured to generate location datasets at regular intervals (e.g., every minute, hours, day, or the like). In some embodiments, the location of a mobile device 104 is determined in response to a query, such as location polling. For example, a mobile device 104 may generate a location dataset in response to a “ping” by its service provider 108. In some embodiments, the location of a mobile device 104 is determined when a user interacts with a particular application. For example, a mobile device 104 may generate a location dataset when a user interacts with (e.g., launches or otherwise uses) an application 120 or webpage that has permission to obtain the location of the mobile device 104. In some instances, the application may periodically acquire current location datasets corresponding to the current location of the mobile device 104 as the user continues to interact with the application 120.

In some embodiments, acquired location information is provided to other entities in real time. For example, upon determining its location, a mobile device 104 (or other entity) may transmit to third parties (such as system 102, third party servers 106, service providers 108, and/or the like), a location dataset corresponding to the current location of the mobile device 104. Such an embodiment may enable third parties to access the real-time locations of mobile devices. In some embodiments, acquired location information (e.g., location datasets) is provided to other entities as location histories. For example, a mobile device 104 (or other entity) may collect a set of location datasets corresponding to locations of the mobile device 104 over a period of time, and periodically transmit the set to third parties (such as system 102, third party servers 106, service providers 108, and/or the like). Such an embodiment may reduce network traffic, and/or allow for collection and storage of location datasets when network access is unavailable (e.g., when a mobile device 104 is located in a rural location where it can collect it location via an integrated GPS device, but is unable to communicate via network 110).

In some embodiments, location information received by system 102 is used to generate location histories stored in location datastore 122. For example, where the location dataset for location A is received in real time from mobile device 104a, and the location datasets for locations B and C are later received from a third party entity (e.g., an app server that obtained location the location datasets from mobile device 104a), the location datasets may be added to an existing location history (e.g., an existing set of location datasets) for mobile device 104a to generate an updated location history for mobile device 104a. In some embodiments, system 102 may update location histories for any number of devices in a similar manner such that location datastore 122 includes a database of updated location histories for any number of devices.

Marketing system 102 may be constructed from one or more of the computers described below with reference to at least FIG. 4. These computers may include a tangible, non-transitory, machine-readable medium, such as various forms of memory storing instructions that when executed by one or more processors of these computers (or some other data processing apparatus) cause the computers to provide the functionality of marketing system 102 described herein. Components of marketing system 102 are illustrated as discrete functional blocks, but it should be noted that the hardware and software by which these functional blocks are implemented may be differently organized, for example, code or hardware for providing the functionality may be intermingled, subdivided, conjoined, or otherwise differently arranged.

The illustrated user-profile acquisition module 120a may be configured to generate user-profiles that are stored in user-profile datastore 116. For example, user-profile acquisition module 120a may provide for the collection, generation and/or storage of user profile information as described herein.

The illustrated location-history acquisition module 120b may be configured to collect location histories that are stored in location-history datastore 122. For example, location-history acquisition module 120b may provide for the collection, generation and/or storage of user location datasets and/or user location histories for mobile devices 104 as described herein.

The illustrated place identification module 120c may be configured to identify places and associated place characteristics, such as polygonal boundaries associated with the places, which are stored in a place datastore 124. The illustrated marketing module 120d may be configured to provide information for selecting marketing content to be provided to users (e.g., to ad servers) and/or maintain a record of marketing content that has been served to users in marketing datastore 126. The illustrated marketing module 120d may be configured to provide information for selecting marketing content to be provided to users and/or to maintain a record of marketing content that has been served to users in marketing datastore 126. The illustrated visitation rate module 120e may be configured to determine PVR for places and/or maintain (e.g., create or update) a record of PVRs in PVR datastore 114. The illustrated target group module 120f may be configured to use the determined PVRs (along with other relevant information) to identify target groups of user (i.e., groups of users for which it may be desirable to provide marketing content). The target group information may be stored in marketing datastore 126. Certain operational details of modules 120 (i.e., modules 120a-120f) may be described in more detail below with regard to at least methods 200 and 300.

FIG. 2 is a flowchart that illustrates a method 200 for providing marketing content in accordance with one or more embodiments of the present technique. Method 200 generally includes identifying places, providing marketing content for the places, determining place visitation rates (e.g., based on locations of mobile user devices), identifying target groups based on the place visitation rates, and providing marketing content for the places to the targeted groups.

Method 200 may include identifying places of interest (block 202). This step may be performed by the above described place identification module 120c. In some embodiments, identifying places of interest includes identifying one or more places of interest. For example, where the XYZ store has ten brick-and-mortar retail locations (e.g., XYZ stores #1-10), and has expressed interested in monitoring visitation rates for the ten retail locations, the ten retail stores may be identified as places of interest. In some embodiment, identifying places includes identifying geographic locations (“geolocations”) associated therewith. For example, for a geographic location may be identified for each of the ten XYZ stores. A geolocation for a given store may include, for example, geographic coordinates that correspond to the geolocation of the store and/or a polygon defining an area associated with the store. Such a polygon may include a boundary that represents an area associated with the store (e.g., the outline of the store's building, parking lot, and/or the like). Such place information may be stored in place datastore 124 in association with the respective places. Thus, for example, a record for the XYZ store #1 may include a geographic coordinate corresponding to the geolocation of the store (e.g., centroid of the store) and/or a polygon defining an area associated with the interior of the store. Similar records may be provided for any number of places of interest.

In some embodiments, such geolocation information may not be readily available and, thus, may be difficult to obtain. The level of difficulty may increase as the number of places increases. For example, where thousands of places of interest are identified, geographic coordinates and/or polygons may need to be identified for each of the thousands of places of interest. In some embodiments, the geographic coordinates and/or the polygons may be identified using a crowdsourcing environment, such as Amazon's Mechanical Turk crowdsourcing platform. In one such embodiment, a list of the places of interest and/or geographic coordinates corresponding to the respective centroids of the places of interest may be provided from system 102 to a crowdsourcing environment. The crowdsourcing environment may outsource the tasks to a distributed group of people that identify place information, including, for example, geographic coordinates and/or polygons corresponding to the places of interest. The place information may be returned to system 102, and system 102 may use the place information provided via the crowd source environment to updated records for the places of interest in place datastore 124.

Method 200 may include providing marketing content for places of interest (block 204). This step may be performed by the above described marketing module 120d and/or 3rd party servers 106. In some embodiments, providing marketing content for places of interest includes providing advertisements, promotions (e.g., coupons), or similar marketing content to one or more mobile devices. For example, an advertisement server (e.g., a server 106) may serve an advertisement for the XYZ store to mobile device 104a for display to user 118a. In some embodiments, providing marketing content for places of interest includes providing targeted advertising to select users or groups of users. Such users or groups of users may be identified based on user profiles, location histories, and/or PVRs as described in more detail below with regard to block 208. For example, where marketing datastore 126 includes a record of groups of persons (or types of persons) that are likely to be interested in products offered by the XYZ store, marketing system 102 may forward, to the advertisement server (e.g., a server 106), a target group that identifies one or more users (or types of users) that are likely to be interested in products offered by the XYZ store. The advertisement server may, in turn, serve advertisements for the XYZ store to mobile devices 104 associated with the users 118 that are likely to be interested in products offered by the XYZ store. Such targeting of groups may enhance the effectiveness of marketing campaigns by delivering marketing content to those person that are expected to be interested and/or responsive to the marketing content, while reducing the burden and cost associated with serving marking content to those person that are not expected to be interested and/or responsive to the marketing content.

Method 200 may include determining place visitation rates (block 206). This step may be performed by the above described visitation rate module 120e. In some embodiments, place visitation rates are determined based on location histories, user profiles and/or the like. For example, where a location history indicates that a mobile device was located in a place of interest, a visitation rate for the place can be adjusted to account for the person associated with the device having visited the store. In some embodiments, an estimation of a number of other users that may have visited the store can be determined based on a location history indicating that a mobile device was located in a place of interest. For example, where a population profile indicates that one in every ten persons employs a mobile device that can be detected while in the XYZ store (e.g., a ratio of ten visitors per device detected), and locations histories indicate that fifty different mobile devices were in a polygon associated with the XYZ store (e.g., determined above at block 202) on Monday, the Monday visitation rate for the XYZ store may be determined to be approximately five hundred persons (e.g., 50 devices*(10 visitors/1 device detected)=500 visitors).

In some embodiments, the determination of a visitation rate may be aided by user profile information. Such user profile information may be available, for example, where a device ID is obtained for a mobile device, and the device ID is associated with a user profile of datastore 116. For example, where a group profile indicates that one in every two males employs a mobile device that can be detected while in the XYZ store (e.g., a ratio of five male visitors per device detected that is associated with a male person), and locations histories indicate that fifty different mobile devices associated with male users were in a polygon associated with the XYZ store (e.g., determined above at block 202) on Monday, a visitation rate for the XYZ store on Monday may include approximately one hundred male persons (e.g., 50 devices*(2 male visitors/1 device detected)=100 male visitors).

FIG. 3 is a flowchart that illustrates a method 300 for determining place visitation rates in accordance with one or more embodiments of the present technique. Method 300 may be an example of determining place visitation rates (block 206) and may be performed by the above described visitation rate module 120e. Method 300 may generally include assessing location datasets to identify mobile devices that have been located in a place of interest, determining whether or not the identified location datasets and/or mobile devices are associated with an available user profile. If so, adjusting a visitation rate/count based on information available in the user profile (and a corresponding group profile), and, if not, adjusting a visitation rate/count based on a population profile.

Method 300 may include obtaining location datasets (block 302). In some embodiments, obtaining location datasets may include retrieving location datasets that have not yet been assessed with regard to determining a visitation rate. For example, where location histories stored in datastore 122 include one million location datasets, and all but ten-thousand have been assessed with regard to determining a visitation rate, obtaining location datasets may include retrieving the ten-thousand un-assessed location datasets. In some embodiments, obtaining location datasets includes obtaining the most recent datasets that have not yet been assessed. In an exemplary embodiment, the obtained location datasets may include the location datasets for locations A-F discussed above (i.e., [1234; A; 1/1/2013 @ 3:30 pm; XYZ App; 90%; iPhone; iOS 6.0; Safari Internet Browser, XYZ App]; [1234; B; 1/1/2013 @ 3:45 pm; XYZ App; 75%; iPhone; iOS 6.0; Safari Internet Browser, XYZ App]; and [1234; C; 1/1/2013 @ 5:45 pm; Mapp App; 80%; iPhone; iOS 6.0, Safari Internet Browser, XYZ App], [n/a; D; 12/31/2012 @ 4:30 pm; XYZ App; 50%; n/a; Android; n/a]; [n/a; E; 1/1/2012 @ 5:15 pm; PING; 95%; n/a; Android; n/a]; and [n/a; F; 1/3/2013 @ 6:00 pm; Map App; 95%; n/a; Android; n/a]).

Method 300 may include identifying a next un-assessed location dataset (block 304). In a first iteration of the process, any one of the location datasets maybe identified as being un-assessed, whereas in a subsequent iterations any one of the other location datasets besides those already assessed can be identified as being un-assessed. For example, in a first iteration, the location dataset for location A may be identified as the next un-assessed location dataset, in a second iteration the second location dataset for location B may be identified as the next un-assessed location dataset, and so forth.

Method 300 may include determining whether the location dataset corresponds to a place of interest (block 306). In some embodiments, determining whether the location dataset corresponds to a place of interest includes determining whether a geolocation of the location dataset corresponds to one or more locations identified in place datastore. For example, where the places of interest include the XYZ stores #1-10, each having a polygon defining an area associated with the respective store, each of the locations B, D and E falls with the boundary of XYZ store #1, it may be determined that the datasets for locations B, D and E correspond to a place of interest. Where none of the locations A, C, or E fall within a boundary of any of the XYZ stores or other places of interest, it may be determined that datasets for locations A, C, and E do not correspond to a place of interest.

Method 300 may include determining whether the location dataset corresponds to a relevant time frame (block 308). In some embodiments, determining whether the location dataset corresponds to a relevant time frame includes determining whether a timestamp associated with the location dataset corresponds to a time period of interest. For example, where the XYZ store is only interested in visitation rates for the first week of 2013, the relevant timeframe may be the first seven days of 2013. Thus, it may be determined that the datasets corresponding to locations B and E correspond to a relevant timeframe based on their time stamps corresponding to Jan. 1, 2013. It may be determined that the dataset corresponding to location D does not correspond to a relevant timeframe based on its time stamp of Dec. 31, 2012.

Method 300 may include determining whether the location dataset is associated with a user profile (block 310). In some embodiments, determining whether the location dataset is associated with a user profile includes determining whether the location dataset includes a device ID, and, if so whether or not the device ID is associated with a user profile. If a location dataset does include a device ID that is associated with a user profile, it may be determined that the location dataset is associated with a user profile. If a location dataset does not include a device ID, or the device ID is not associated with a user profile, it may be determined that the location dataset is not associated with a user profile. For example, where the device ID “1234” is associated with a user profile for Mike Smith, it may be determined that the location dataset corresponding to location B is associated with a user profile. As a further example, it may be determined that the location dataset corresponding to location D is not associated with a user profile as it does not include a device ID.

For location datasets that are not associated with a device ID and/or a user profile, method 300 may proceed to determining a visitation count corresponding to the location dataset based on a population profile (block 312). A population profile may include a profile that is based on a large number of users, and may not take into account various personal characteristics that are available in a user profile. A population profile may be based on characteristics of mobile devices that are provided in location datasets (such as date, time, source, confidence, device type, operating system,) but may not be based on characteristics provided in user profiles. For example, a population profile may specify that that one in every ten persons employs a mobile device that can be detected while in stores (e.g., a ratio of ten visitors per device detected in an XYZ store). That is, a population may be a ratio based on the number of total users, and may not take into account variations based on personal characteristics such as preferences, interests, hobbies, demographics information (e.g., gender, age, etc.) and so forth. As a further example, a population profile may specify that one in every fifty users in the XYZ store uses the XYZ app while in an XYZ store (e.g., a ratio of fifty visitors per device detected using the XYZ app in an XYZ store). Thus for example, based on the location dataset associated with location D indicating the use of the “XYZ App” while in the XYZ store #1, a visit count of fifty can be associated with the location dataset (e.g., 1 device using app*(50 visitors/1 device detected using app)=50 visitors).

For location dataset that are associated with a device ID and/or a user profile, method 300 may proceed to determining a visitation count corresponding to the location dataset based on a group profile (block 314). A group profile may include a profile that takes into account various characteristics of persons that are available in users' profiles. For example, a group profile may specify that one in every five males employs a mobile device that can be detected while in the XYZ store (e.g., a ratio of five male visitors per device detected that is associated with a male person), Thus for example, based on the location dataset associated with location B having a device ID associated with Mike Smith's profile, and Mike Smith's user profile indicating that is male in gender, a visit count of five can be associated with the location dataset (e.g., 1 device*(5 visitors/1 device associated with a male)=5 visitors). Although a single group profile has been provided for the purpose of illustrations, any number of group profiles can be used based on any number of relevant user profile characteristics such as preferences, interests, hobbies, demographics information (e.g., gender, age, etc.) and so forth.

Method 300 may include adjusting a visitation count for the place of interest (block 316). In some embodiments, adjusting a visitation count for the place of interest includes adjusting a visitation count for the place of interest during the relevant timeframe to include a visitation count associated with the location dataset. For example, in an iteration that includes assessing the location dataset associated with location B for which a visitation count of five visitors is determined (e.g., see block 314), a count for the first week of January 2013 may be increased by five (e.g., from one-hundred to one-hundred five). As a further example, in a subsequent iteration that includes assessing the location dataset associated with location D for which a visitation count of fifty visitors is determined (e.g., see block 312), a count for the first week of January 2013 may be increased by fifty (e.g., from one-hundred five to one-hundred fifty-five). Method 300 may continue to assess any un-assessed location dataset (block 318). Upon assessing the location profiles, a total visitation count can be determined for the relevant period. For example, it may be determined that 10,000 persons visited the XYZ store #1 during the first week of January. A PVR of 10,000 may be generated for XYZ store #1 for the first week in January. The PVR may be stored in PVR datastore 114. Thus, in some embodiments, determining a PVR includes determining a number of persons that visit a place in a given time frame. Such information may be provide to a party of interest, such as an owner of the XYZ store, to provide an indication of how many people visit the XYZ stores and when. For example, a store owner can predict fluctuations in persons that visit their store on a given day of the week based on PVRs for each of the respective days of the week. Such information may be particularly helpful in managing the day to day operations of the business, such as adjusting staffing of employees to account for the expected number of visitors on the given days, determining the effectiveness of changes in business strategy, including, for example, advertising campaigns, physical changes in a stores layout and so forth.

Although embodiments have been described in the context of a limited number of location datasets, using exemplary population/group profiles, and exemplary timeframes, embodiments may be employed for any number of location datasets, any variety of population/group profiles, and any relevant timeframes (e.g., hours, days, weeks, years, and so forth).

Referring again to FIG. 2, in some embodiments, determining place visitation rates (block 206) includes determining rates at which users respond to various marketing campaigns. For example, determining a place visitation rate may include determining a rate (e.g., a percentage or ratio) at which users visit a place after receiving an advertisement or other marketing content for the place. In some embodiments, determining place visitation rates (block 206) includes determining rates at which users in certain locations respond to various marketing campaigns. For example, determining a place visitation rate may include determining a rate at which users visit a place after receiving an advertisement or other marketing content for the place while being located in a given region.

In some embodiments, location histories and user profiles can be used to determine how certain groups of users respond to marketing campaigns. For example, when a location dataset indicates that a user has visited an XYZ store, and the user's profile indicates that the he/she had recently been served an advertisement for the XYZ store, it may be determined that the advertisement was effective in driving the user to visit the store. In some embodiments, the effectiveness may be determined based on a PVR for user's that have been served ads. For example, where an advertisement campaign includes sending an advertisement to one-thousand mobile devices 104, and it is determined that one-hundred of those mobile devices 104 were detected in the XYZ store (e.g., based on location histories and/or user profiles), the advertisement may have a PVR of 1/10 (or 10%)—indicative of the fact that one-in-ten of the user's served the advertisement visited the XYZ store.

In some embodiments, the effectiveness may be determined based on a PVR for user's that have been served ads in a given region. For example, where an advertisement campaign includes sending an advertisement for the XYZ store to one-hundred mobile devices 104, and the location histories and user profiles associated with those devices reveal that ten of those users were served the advertisement while being located in a first region, forty of those users were served with the advertisement while being located in a second region, and fifty of those users were served the advertisement while being located in a third region, it can be determined that the advertisement for the XYZ store has a PVR of 1/100 (1%) for the first region, a PVR of 4/100 (4%) for the second region, and a PVR of 5/100 (5%) for the second region—each of the PVRs being indicative of the percentage of user that receive the advertisement while in the respective region and subsequently visited the XYZ store.

In some embodiments, regions may include a radial distance. For example, the first region may include locations within a one kilometer (km) of the XYZ store, the second region may include locations within one to five kilometers of the XYZ store, and the third region may include locations greater than five kilometers from the XYZ store. In some embodiments, regions may include a geographic tile (or cell). A geographic tile (or cell) may include a square area that is a segment of a larger area. For example, an area that is 100 km×100 km may be divided in a grid of one-hundred thousand non-overlapping 1 km×1 km tiles/cells. Thus, for example, the first region may include a first tile, the second region may include a second tile, and the third region may include a third tile.

Method 200 may include identifying target groups based on place visitation rates (block 208). This step may be performed by the above described target group module 120f. In some embodiments, target groups are identified based on common characteristics of users that visit a place. For example, where a majority of the persons that are determined to visit the XYZ store are have user profiles indicating that they are age “20-45”, users of the age “20-45” may be identified as a target group for the XYZ store. In some embodiments, the target user groups may be identified based on “look-a-like” modeling (i.e., the target group having characteristics that are the same or similar to those of persons that are doing something you want them to do, such as visiting the XYZ store).

In some embodiments, users in a given region are identified as a target group based on the region having a relatively high PVR for the XYZ store. For example, in the above embodiments, if a threshold PVR is set at 2%, users in the second and third regions may be identified as target groups for the advertisement for the XYZ store based at least in part the PVRs for the regions being above the threshold PVR.

In some embodiments, users in a given region are identified as a target group based on the region sharing characteristics with a region having a relatively high PVR. For example, where a characteristic of the second region includes “shopping locations”, “incomes above $50,000”, and ages “20-45”, the target group may include users in other regions having characteristics that are the same or similar to those of the second region (e.g., regions having characteristics of “shopping locations”, “incomes above $50,000”, and ages “20-45”). Thus, for example, users in a plurality of different cells may be identified as target groups based on the respective cells sharing characteristics with one or more regions having relatively high PVRs.

Method 200 may include providing marketing content for places to target groups (block 210). This step may be performed by the above described marketing module 120d. In some embodiments, providing marketing content for places to target groups includes providing advertisements or similar marketing content to users in an associated target group. For example, where users of the age “20-45” is identified as a target group for the XYZ store and user 118a has a user profile that indicates he/she is twenty-five years of age, a target group that includes user 118a may be provided to an ad server (e.g., server 106), and the ad server may serve an ad for the XYZ store to mobile device 104a for presentation to user 118a based at least in part on user 118a being part of the identified target group. As a further example, where users in certain regions (e.g., second and third tiles) are identified as a target group for the advertisement for the XYZ store and mobile device 104a is located in one of the identified regions, the ad server may serve an ad for the XYZ store to mobile device 104a for presentation to user 118a based at least in part on mobile device 104a and/or user 118a being located in one of the identified regions.

Thus, in some embodiments, user location histories and user profiles can be used to assist in determining and fine-tuning PVRs. These PVRs can be used by interested parties, such as business owners, to determine when people visit places of interest. Moreover, in some embodiments, the determined PVRs can be used to identify target groups to whom targeted marketing content can be provided.

It will be appreciated that methods 200 and 300 are exemplary embodiments of methods that may be employed in accordance with the techniques described herein. Methods 200 and 300 may be modified to facilitate variations of its implementations and uses. Methods 200 and 300 may be implemented in software, hardware, or a combination thereof. Some or all of methods 200 and 300 may be implemented by one or more of the modules/applications described herein. The order of the steps of methods 200 and 300 may be changed, and various elements may be added, reordered, combined, omitted, modified, etc.

FIG. 4 is a block diagram that illustrates an exemplary computer system in accordance with one or more embodiments of the present technique. Various portions of systems and methods described herein, may include or be executed on one or more computer systems similar to computing system 1000. Further, processes and modules described herein may be executed by one or more processing systems similar to that of computing system 1000.

Computing system 1000 may include one or more processors (e.g., processors 1010a-1010n) coupled to system memory 1020, an input/output I/O device interface 1030 and a network interface 1040 via an input/output (I/O) interface 1050. A processor may include a single processor or a plurality of processors (e.g., distributed processors). A processor may be any suitable processor capable of executing or otherwise performing instructions. A processor may include a central processing unit (CPU) that carries out program instructions to perform the arithmetical, logical, and input/output operations of computing system 1000. A processor may execute code (e.g., processor firmware, a protocol stack, a database management system, an operating system, or a combination thereof) that creates an execution environment for program instructions. A processor may include a programmable processor. A processor may include general or special purpose microprocessors. A processor may receive instructions and data from a memory (e.g., system memory 1020). Computing system 1000 may be a uni-processor system including one processor (e.g., processor 1010a), or a multi-processor system including any number of suitable processors (e.g., 1010a-1010n). Multiple processors may be employed to provide for parallel or sequential execution of one or more portions of the techniques described herein. Processes, such as logic flows, described herein may be performed by one or more programmable processors executing one or more computer programs to perform functions by operating on input data and generating corresponding output. Processes described herein may be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). Computing system 1000 may include a plurality of computing devices (e.g., distributed computer systems) to implement various processing functions.

I/O device interface 1030 may provide an interface for connection of one or more I/O devices 1060 to computer system 1000. I/O devices may include devices that receive input (e.g., from a user) or output information (e.g., to a user). I/O devices 1060 may include, for example, graphical user interface presented on displays (e.g., a cathode ray tube (CRT) or liquid crystal display (LCD) monitor), pointing devices (e.g., a computer mouse or trackball), keyboards, keypads, touchpads, scanning devices, voice recognition devices, gesture recognition devices, printers, audio speakers, microphones, cameras, or the like. I/O devices 1060 may be connected to computer system 1000 through a wired or wireless connection. I/O devices 1060 may be connected to computer system 1000 from a remote location. I/O devices 1060 located on remote computer system, for example, may be connected to computer system 1000 via a network and network interface 1040.

Network interface 1040 may include a network adapter that provides for connection of computer system 1000 to a network. Network interface may 1040 may facilitate data exchange between computer system 1000 and other devices connected to the network. Network interface 1040 may support wired or wireless communication. The network may include an electronic communication network, such as the Internet, a local area network (LAN), a wide area (WAN), a cellular communications network or the like.

System memory 1020 may be configured to store program instructions 1100 or data 1110. Program instructions 1100 may be executable by a processor (e.g., one or more of processors 1010a-1010n) to implement one or more embodiments of the present techniques. Instructions 1100 may include modules of computer program instructions for implementing one or more techniques described herein with regard to various processing modules. Program instructions may include a computer program (which in certain forms is known as a program, software, software application, script, or code). A computer program may be written in a programming language, including compiled or interpreted languages, or declarative or procedural languages. A computer program may include a unit suitable for use in a computing environment, including as a stand-alone program, a module, a component, a subroutine. A computer program may or may not correspond to a file in a file system. A program may be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program may be deployed to be executed on one or more computer processors located locally at one site or distributed across multiple remote sites and interconnected by a communication network.

System memory 1020 may include a tangible program carrier having program instructions stored thereon. A tangible program carrier may include a non-transitory computer readable storage medium. A non-transitory computer readable storage medium may include a machine readable storage device, a machine readable storage substrate, a memory device, or any combination thereof. Non-transitory computer readable storage medium may include, non-volatile memory (e.g., flash memory, ROM, PROM, EPROM, EEPROM memory), volatile memory (e.g., random access memory (RAM), static random access memory (SRAM), synchronous dynamic RAM (SDRAM)), bulk storage memory (e.g., CD-ROM and/or DVD-ROM, hard-drives), or the like. System memory 1020 may include a non-transitory computer readable storage medium may have program instructions stored thereon that are executable by a computer processor (e.g., one or more of processors 1010a-1010n) to cause the subject matter and the functional operations described herein. A memory (e.g., system memory 1020) may include a single memory device and/or a plurality of memory devices (e.g., distributed memory devices). In some embodiments, the program may be conveyed by a propagated signal, such as a carrier wave or digital signal conveying a stream of packets.

I/O interface 1050 may be configured to coordinate I/O traffic between processors 1010a-1010n, system memory 1020, network interface 1040, I/O devices 1060 and/or other peripheral devices. I/O interface 1050 may perform protocol, timing or other data transformations to convert data signals from one component (e.g., system memory 1020) into a format suitable for use by another component (e.g., processors 1010a-1010n). I/O interface 1050 may include support for devices attached through various types of peripheral buses, such as a variant of the Peripheral Component Interconnect (PCI) bus standard or the Universal Serial Bus (USB) standard.

Embodiments of the techniques described herein may be implemented using a single instance of computer system 1000, or multiple computer systems 1000 configured to host different portions or instances of embodiments. Multiple computer systems 1000 may provide for parallel or sequential processing/execution of one or more portions of the techniques described herein.

Those skilled in the art will appreciate that computer system 1000 is merely illustrative and is not intended to limit the scope of the techniques described herein. Computer system 1000 may include any combination of devices or software that may perform or otherwise provide for the performance of the techniques described herein. For example, computer system 1000 may include or be a combination of a cloud-computing system, a data center, a server rack, a server, a virtual server, a desktop computer, a laptop computer, a tablet computer, a server device, a client device, a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a vehicle-mounted computer, or a Global Positioning System (GPS), or the like. Computer system 1000 may also be connected to other devices that are not illustrated, or may operate as a stand-alone system. In addition, the functionality provided by the illustrated components may in some embodiments be combined in fewer components or distributed in additional components. Similarly, in some embodiments, the functionality of some of the illustrated components may not be provided or other additional functionality may be available.

Those skilled in the art will also appreciate that, while various items are illustrated as being stored in memory or on storage while being used, these items or portions of them may be transferred between memory and other storage devices for purposes of memory management and data integrity. Alternatively, in other embodiments some or all of the software components may execute in memory on another device and communicate with the illustrated computer system via inter-computer communication. Some or all of the system components or data structures may also be stored (e.g., as instructions or structured data) on a computer-accessible medium or a portable article to be read by an appropriate drive, various examples of which are described above. In some embodiments, instructions stored on a computer-accessible medium separate from computer system 1000 may be transmitted to computer system 1000 via transmission media or signals such as electrical, electromagnetic, or digital signals, conveyed via a communication medium such as a network or a wireless link. Various embodiments may further include receiving, sending or storing instructions or data implemented in accordance with the foregoing description upon a computer-accessible medium. Accordingly, the present invention may be practiced with other computer system configurations.

It should be understood that the description and the drawings are not intended to limit the invention to the particular form disclosed, but to the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the present invention as defined by the appended claims. Further modifications and alternative embodiments of various aspects of the invention will be apparent to those skilled in the art in view of this description. Accordingly, this description and the drawings are to be construed as illustrative only and are for the purpose of teaching those skilled in the art the general manner of carrying out the invention. It is to be understood that the forms of the invention shown and described herein are to be taken as examples of embodiments. Elements and materials may be substituted for those illustrated and described herein, parts and processes may be reversed or omitted, and certain features of the invention may be utilized independently, all as would be apparent to one skilled in the art after having the benefit of this description of the invention. Changes may be made in the elements described herein without departing from the spirit and scope of the invention as described in the following claims. Headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description.

As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). The words “include”, “including”, and “includes” and the like mean including, but not limited to. As used throughout this application, the singular forms “a”, “an” and “the” include plural referents unless the content explicitly indicates otherwise. Thus, for example, reference to “an element” or “a element” includes a combination of two or more elements, notwithstanding use of other terms and phrases for one or more elements, such as “one or more.” The term “or” is, unless indicated otherwise, non-exclusive, i.e., encompassing both “and” and “or.” Terms describing conditional relationships, e.g., “in response to X, Y,” “upon X, Y,”, “if X, Y,” “when X, Y,” and the like, encompass causal relationships in which the antecedent is a necessary causal condition, the antecedent is a sufficient causal condition, or the antecedent is a contributory causal condition of the consequent, e.g., “state X occurs upon condition Y obtaining” is generic to “X occurs solely upon Y” and “X occurs upon Y and Z.” Such conditional relationships are not limited to consequences that instantly follow the antecedent obtaining, as some consequences may be delayed, and in conditional statements, antecedents are connected to their consequents, e.g., the antecedent is relevant to the likelihood of the consequent occurring. Further, unless otherwise indicated, statements that one value or action is “based on” another condition or value encompass both instances in which the condition or value is the sole factor and instances in which the condition or value is one factor among a plurality of factors. Unless specifically stated otherwise, as apparent from the discussion, it is appreciated that throughout this specification discussions utilizing terms such as “processing”, “computing”, “calculating”, “determining” or the like refer to actions or processes of a specific apparatus, such as a special purpose computer or a similar special purpose electronic processing/computing device. In the context of this specification, a special purpose computer or a similar special purpose electronic processing or computing device is capable of manipulating or transforming signals, for instance signals represented as physical electronic, optical, or magnetic quantities within memories, registers, or other information storage devices, transmission devices, or display devices of the special purpose computer or similar special purpose processing or computing device.