Leveraging predictive modeling for application optimization

Techniques are disclosed for leveraging user shopping habits to deliver store-relevant materials in a more efficient manner. User location and other relevant information may be analyzed to predict an in-store shopping path for future visits, which may include different store areas each having different store-relevant materials (e.g., coupons) associated therewith. Upon a user visiting the store on a future visit, the predicted path may be used to upload data to the user's portable computing device for store-relevant materials in the order in which they will likely be needed. As the user moves within the store, the portable computing device may purge data associated with store areas that have already been visited while pre-fetching the next store area likely to be visited next.

TECHNICAL FIELD

The present disclosure relates generally to location tracking and, more particularly, to using location tracking to improve the relevance of targeted messages directed to a user and to reduce application memory usage.

BACKGROUND

In many cases, a customer may visit a physical retail store location or a retailer's online store to purchase their products. To incentivize customers to do so, retailers have traditionally provided promotional materials such as coupons and informational material such as product descriptions or store events, which are increasingly being offered in a digital format versus the paper-clipped variety. With the introduction of such informational and promotional content, retailers have more options for easily delivering the same to customers, such as email, text messaging, online, and via a specific retailer application, which may be installed and operated on a smartphone.

As an example, digital coupons are typically stored and displayed on a relevant device as image files. For example, in the case of a smartphone application, the digital coupon data may be stored on a smartphone memory and presented to a user via the smartphone display once selected. Because of the graphical nature of digital coupons, storing several in a device memory may require a great deal of memory space, which is a cause for concern in portable devices such as smartphones that may have several other applications installed—all vying for memory space. Furthermore, traditional methods of digital coupon delivery do not take into consideration information about the user or the user's location, resulting in a large amount of coupons being irrelevant for a particular user's needs.

As a result, providing store-relevant materials in a digital format may provide a greater convenience over traditional paper coupons for customers, but doing so presents several challenges.

SUMMARY

Various embodiments are described herein that facilitate store-relevant materials being delivered at a relevant time for a particular user. In some embodiments, different types of information are utilized to predict a user's shopping path within a physical retail store. Some of the information that may be analyzed to predict the user's shopping path may include user demographics, information about the user's portable computing device (e.g., a smartphone that executes an application and displays the store-relevant materials), information about the particular store the user regularly visits, tracked location data indicating a previous shopping path within the store (or other stores), etc.

In accordance with some embodiments, the calculated predicted shopping path may include information identifying each store area, department, the order in which the user visited each area, and/or the time in which the user spent at each store area or department during a store visit. Each store area may also be associated with store-relevant materials such as promotional materials, coupons, or other relevant messages or notifications. Typically, a user may install a retail application to a portable computing device, which may download informational and promotional materials for an entire store.

However, digital store-relevant materials may take up a large amount of memory storage space, and because the materials are applicable to an entire store, the majority of the downloaded materials may be irrelevant for the user. Therefore, in accordance with various embodiments, a predicted shopping path may be calculated such that store-relevant materials associated with the next area in the store most likely to be visited by the user, but not others, is uploaded to the user's portable computing device at any given time. Thus, once the portable computing device is actually within a threshold range of a predicted location along the calculated predicted shopping path, the necessary materials will have already been downloaded and may be quickly displayed.

Furthermore, because the predicted shopping path may include the order in which a user is likely to visit one or more store areas, this information may be leveraged to allow less material data to be stored on the portable computing device at any given time. That is, as a user walks around the store, it is assumed that he will follow the calculated predicted shopping path. If so, as an example, promotional material data associated with one store area may be purged as the user leaves each store area. Once purged, the same promotional material data may be downloaded for the next store area that the user is most likely to visit such that, once the user arrives at that store area, the promotional materials are already available, and so on.

In the event that the user's actual shopping path deviates from the calculated predicted shopping path, embodiments include adjusting the calculation of the predicted shopping path to improve its accuracy over time. For example, after or during a store visit, locations along the user's actual shopping path may be compared to those in the predicted shopping path, with any differences being used as feedback to adjust the calculation of the predicted shopping path for future predictions.

DETAILED DESCRIPTION

The following text sets forth a detailed description of numerous different embodiments. However, it should be understood that the detailed description is to be construed as exemplary only and does not describe every possible embodiment since describing every possible embodiment would be impractical. One of ordinary skill in the art will recognize, in light of the teaching and disclosure herein, that numerous alternative embodiments could be implemented.

It should be understood that, unless a term is expressly defined in this patent application using the sentence “As used herein, the term ‘______’ is hereby defined to mean . . . ” or a similar sentence, there is no intent to limit the meaning of that term, either expressly or by implication, beyond its plain or ordinary meaning, and such term should not be interpreted to be limited in scope based on any statement made in any section of this patent application.

FIG. 1is a block diagram of an exemplary application optimization system100in accordance with an embodiment of the present disclosure. Optimization system100includes a retail store101, a portable computing device102, which may be operated by a user103, a base station104, a communication network106, and one or more back-end components112.

For the sake of brevity, optimization system100is illustrated as including a single portable computing device102, a single user103, a single retail store101, a single network106, and a single set of one or more back-end components112. However, the embodiments described herein may include any suitable number of such components. For example, back-end components112may communicate with several portable computing devices102, each of which being operated by a respective user103, to track their location and/or receive other types of information used in the calculation of predicted shopping paths, as further discussed herein. To provide another example, back-end components112may monitor data received from one or more portable computing devices such that the shopping habits of each user may be assessed for several stores.

Retail store101may be any suitable type of store in which suitable store-relevant materials including promotional materials, coupons, messages, notifications, informational notices, seasonal notices, advertisements, etc., may be applicable. In various embodiments, the store-relevant materials may be applicable for the entire store or for one or more portions, departments, or areas thereof. For example, retail store101may have several areas101.1-101.6, which may correspond to different departments within retail store101where different items are sold. For example, areas101.1,101.2,101.3,101.4,101.5, and101.6may correspond to the beauty department, the health and wellness department, the pharmacy department, the home supplies department, the photo department, and a point of sale, respectively.

Predicted shopping path111may represent a dynamically calculated shopping path or a predetermined shopping path, depending on the data that is available for a particular user. For example, assume that a user has visited the store on several previous occasions. In such a case, then the shopping paths from the user's previous shopping visits may be used to determine which shopping area within the store has the highest statistical probability of being next visited by the user during a subsequent store visit. Thus, in such a scenario, predicted shopping path111may represent an aggregated path that is the result of each of these calculations as a user moves throughout a store, and is not fixed but rather dynamically adjusted in this manner.

However, in the event that user information is not available (e.g., a new or unknown user starts shopping) then predicted shopping path111may represent a predetermined path that best matches other parameters that may be available to one or more back-end components112. For example, although detailed user information may not be available, portable computing device102may be able to be uniquely identified (e.g., via media access control (MAC) address) and/or other information may be available via communications with portable communications device102such as the operating system, hardware model, etc. In this case, one or more back-end components112may select predicted shopping path111from one that best matches other paths using similar data. Further details of how both dynamic and predetermined predicted shopping paths are calculated are discussed below.

In any event, for a particular shopping visit, predicted shopping path111may represent a shopping path that has the highest statistical probability of being taken by user103within a particular retail store101. For example, as shown inFIG. 1, predicted shopping path111indicates a user entering retail store101, walking past areas101.1and101.2, walking past area101.3, walking between areas101.4and101.5, paying at area101.6, and exiting retail store101.

In an embodiment, retail store101may be associated with a boundary105. In an embodiment, boundary105may represent any suitable boundary to appropriately identify the location of retail store101. For example, boundary105may represent a geofence including a range of geographic coordinates (e.g., latitude and longitude) such that, when a location of portable computing device102crosses boundary105, portable computing device102and/or one or more back-end components112may determine that user103has also crossed boundary105. Thus, a conclusion may be made that user103has engaged in a store visit at retail store101and/or exited retail store101after a store visit has been completed. In this way, boundary105may facilitate the determination of which stores a user has visited, when, how often, etc. As will be further discussed below, this information may be used as part of the predictive modeling process to calculate the user's next most likely location within store101.

Base station104may be configured to facilitate communications between one or more portable computing devices102and communication network106using any suitable number of wired and/or wireless links, such as links110.1-110.2, for example. Although base station104is illustrated inFIG. 1as wirelessly communicating with communication network106, embodiments include base station104connecting to communication network106via any suitable number of wired and/or wireless links. For example, base station104may be coupled to communication network106via one or more landline, internet service provider (ISP) backbone connections, satellite links, a public switched telephone network (PSTN), etc. In various embodiments, base station104may be implemented as an access point (AP), a macrocell, a femtocell, etc.

Communication network106may be configured to facilitate communications between one or more portable computing devices102and one or more back-end components112using any suitable number of wired and/or wireless links, such as link110.3, for example. Communication network106may include any suitable number of nodes, additional wired and/or wireless networks, etc., in various embodiments, to facilitate this functionality. For example, in an embodiment, communication network106may be implemented as a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), or any suitable combination of local and/or external network connections. To provide further examples, communications network106may include wired telephone and cable hardware, satellite, cellular phone communication networks, etc. In an embodiment, communication network106may provide one or more portable computing devices102with connectivity to network services, such as Internet services, for example, and/or support application programming interface (API) calls between one or more portable computing devices102and one or more backend computing devices112.

Portable computing device102may be configured to communicate using any suitable number and/or type of communication protocols, such as Wi-Fi, cellular, BLUETOOTH, NFC, RFID, etc. For example, portable computing device102may be configured to communicate with base station104using a cellular communication protocol to send data to and/or receive data from one or more back-end components112via communication network106using one or more of links1101-110.3. To provide another example, portable computing device102may be configured to communicate with one or more communication devices located in retail store101, which may assist in the identification of areas101.1-101.6used to calculate predicted shopping path111.

In various embodiments, portable computing device102may be implemented as a user equipment (UE) and/or client device, such as a smartphone, for example. Although portable computing device102is illustrated inFIG. 1as a phone, portable computing device102may be implemented as any suitable communication device. For example, portable computing device102may be implemented as a personal digital assistant (PDA), a tablet computer, a laptop computer, a wearable electronic device, etc.

As further discussed below, data transmitted by portable computing device102to one or more backend computing devices112may include, for example, any suitable information used by one or more back-end components112as part of the calculation of predicted shopping path111for user103. For example, as will be further discussed below, portable computing device102may transmit location information (e.g., geographic coordinates) that indicate the current location of portable computing device102and/or a history of tracked locations (within retail store101and/or outside of retail store101), timestamps, an indication of whether portable computing device102has crossed boundary105, the details of one or more shopping paths taken by user103in previous visits to retail store101(or other retail stores) such as the order of areas visited, how often the user remained in such areas, information used to uniquely identify user103, etc.

Furthermore, data received by portable computing device102from one or more back-end components112may include any suitable information used to display store-relevant materials to user103during a store visit. For example, as will be further discussed below, portable computing device102may receive notifications, coupons, messages, etc., relevant to one or more store areas101.1-101.6within retail store101. Based upon the user's current location along calculated predicted shopping path111, one or more back-end components may determine which store-relevant materials to upload to portable computing device102and when to do so, such that the store-relevant materials are ready to be viewed by user103once user103actually visits the predicted store area along predicted shopping path111.

Portable computing device102may be configured to execute an application installed thereon to perform one or more functions of the various embodiments described herein. For example, an application, which will be further discussed in detail below, may be downloaded and installed on portable computing device102. The application may be configured to facilitate various functions, such as supporting communications between portable computing device102and one or more back-end components112, downloading store-relevant materials to portable computing device102, and/or displaying store-relevant materials via portable computing device102. The application installed on portable computing device102may also communicate user information identifying user103to one or more back-end components118. This user information may include any suitable type of information to identify user103so that the user103may later be matched to her user profile data stored in one or more back-end components112. For example, the user information may include a username used to log on to the retailer's website or web-based application, a first and last name of user103, etc.

To provide an illustrative example, upon installing and launching the application on portable computing device102, user103may be prompted to enter login information and/or complete an initial registration process to create a user profile. User103may initially create a user profile with the retailer upon first launching the application, through a registration process via a website, over the phone, etc. This user profile may include, for example, the customer's contact information, a preferred store, demographic information, preferred forms of payment (e.g., credit card numbers), etc.

In an embodiment, upon user103subsequently providing her login information, one or more back-end components112may link her login information to other information that may be used in the calculation of predicted shopping paths, but which do not need to be entered by the user. For example, portable computing device102may transmit other data as part of an API services call to one or more back-end components112along with the login information, such as device information (e.g., location information, model information of portable computing device102, an operating system utilized by portable computing device102, a unique identifier associated with portable computing device102, etc.). In this way, additional information may be collected as part of the user's profile for the calculation of predicted shopping path without the user having to manually submit this information.

One or more back-end components112may include any suitable number of components configured to receive data from and/or send data to one or more of portable computing devices102via communication network106using any suitable number of wired and/or wireless links. In various embodiments, one or more back-end components112may be configured to execute one or more applications to perform one or more functions associated with the embodiments as discussed herein.

For example, as shown inFIG. 1, one or more back-end components112may include one or more external computing devices such as servers112.1, databases112.2, and/or database servers112.3. AlthoughFIG. 1illustrates one or more back-end components112as including only three different types of back-end components, embodiments include one or more back-end components112implementing any suitable number and/or type of back-end components to facilitate the appropriate functions of the embodiments as described herein.

For example, database server112.3may be implemented as any suitable number of servers that are configured to access data from database112.2, which may store any suitable type of data as further discussed in detail below. To provide another example, server112.1may be implemented as any suitable number of web servers configured to provide Internet communications to one or more of portable computing devices102, to process API service calls, and/or to support one or more applications installed on one or more of portable computing devices102.

Furthermore, one or more back-end components112may store and/or access secure data that is of a private, proprietary, and/or sensitive nature. As a result, various embodiments of one or more back end components112, communication network106, and/or portable computing device102may implement appropriate security protocols such as encryption, secure links, network authentication, firewalls, etc., to appropriately protect such secure data.

In various embodiments, one or more of back-end components112may communicate with database112.2to store data to and/or to read data from database112.2as needed to facilitate the appropriate functions of the embodiments as described herein. Database112.2may be configured to store any suitable relevant data as described in the embodiments presented herein related to the operation of optimization system100. Such data may include, for example, a user profile that includes user information, payment information, demographic information, contact information, a history of previous store visits (e.g., a history of store locations, when they were visited, and how long they were visited), one or more previous shopping paths (e.g., the order of specific areas within one or more retail stores), one or more calculated predicted shopping paths (e.g., predicted shopping path111), a history of user online shopping sessions, the current and/or tracked location of a particular user (e.g., user103) based upon the user's portable computing device (e.g., the location of portable computing device102), store-relevant materials for different store areas and/or for different stores, etc.

FIG. 2is a block diagram of an exemplary portable computing device200, according to an embodiment. In an embodiment, portable computing device200may be an implementation of portable computing device102, for example, as shown inFIG. 1. In an embodiment, portable computing device200may include one or more processors202, a communication unit204, a user interface206, a display208, a location acquisition unit210, and a memory unit212.

Communication unit204may be configured to facilitate data communications between portable computing device200and one or more other communication devices and/or networks in accordance with any suitable number and/or type of communication protocols, which may be the same communication protocols as one another or different communication protocols based upon the particular network component and/or network that portable computing device200is communicating. For example, communication unit204may be configured to facilitate communications between portable computing device200and one or more back-end components (e.g., one or more back-end components112, as shown inFIG. 1) via one or more communication networks.

To provide another example, communication unit204may be configured to facilitate communications between portable computing device200and one or more communication devices that may be located within a retail store at different respective store areas. Such communications may facilitate the determination of the order of various store areas visited by a user over one or more shopping trips. In various embodiments, communication unit204may be implemented with any suitable combination of hardware and/or software to facilitate this functionality. For example, communication unit204may be implemented with any suitable number of wired and/or wireless transceivers, network interfaces, physical layers (PHY), ports, etc. The details of such communications will be discussed in further detail below.

User interface206may be configured to facilitate user interaction with portable computing device200. For example, user interface206may include a user-input device such as an interactive portion of display208(e.g., a “soft” keyboard displayed on display208), an external hardware keyboard configured to communicate with portable computing device200via a wired or a wireless connection (e.g., a BLUETOOTH keyboard), an external mouse, or any other suitable user-input device.

Display208may be implemented as any suitable type of display that may facilitate user interaction, such as a capacitive touch screen display, a resistive touch screen display, etc. In various aspects, display208may be configured to work in conjunction with user-interface206and/or one or more processors202to detect user inputs upon a user selecting a displayed interactive icon or other graphic, to identify user selections of objects displayed via display208, to display store-relevant materials associated with various areas of a retail store, etc.

Location acquisition unit210may be implemented as any suitable device configured to generate location data indicative of a current location of portable computing device200. In an embodiment, location acquisition unit210may be implemented as a satellite navigation receiver that works with a global navigation satellite system (GNSS) such as the global positioning system (GPS) primarily used in the United States, the GLONASS system primarily used in the Soviet Union, the BeiDou system primarily used in China, and/or the Galileo system primarily used in Europe.

Location acquisition unit210and/or one or more processors202may be configured to receive navigational signals from one or more satellites and to calculate a geographic location of portable computing device200using these signals. Location acquisition unit210may include one or more processors, controllers, or other computing devices and memory to calculate the geographic location of portable computing device200without one or more processors202. Alternatively, location acquisition unit210may utilize components of one or more processors202. Thus, one or more processors202and location acquisition unit210may be combined or be separate or otherwise discrete elements.

One or more processors202may be implemented as any suitable type and/or number of processors, such as a host processor for the relevant device in which portable computing device200is implemented, for example. One or more processors202may be configured to communicate with one or more of communication unit204, user interface206, display208, location acquisition unit210, and/or memory unit212to send data to and/or to receive data from one or more of these components.

For example, one or more processors202may be configured to communicate with memory unit212to store data to and/or to read data from memory unit212. In accordance with various embodiments, memory unit212may be a computer-readable non-transitory storage device, and may include any combination of volatile (e.g., a random access memory (RAM)), or a non-volatile memory (e.g., battery-backed RAM, FLASH, etc.). In an embodiment, memory unit212may be configured to store instructions executable by one or more processors202. These instructions may include machine readable instructions that, when executed by one or more processors202, cause one or more processors202to perform various acts.

In an embodiment, optimized application215is a portion of memory unit212configured to store instructions, that when executed by one or more processors202, cause one or more processors202to perform various acts in accordance with applicable embodiments as described herein. For example, instructions stored in optimized application215may facilitate one or more processors202performing functions such as determining when portable computing device200has entered a retail store, tracking the location of portable computing device200within a retail store to determine an order of areas visiting along a shopping path, sending information to one or more backend computing devices, receiving information from one or more backend computing devices, determining when store relevant data should be pre-fetched or purged, etc.

In some embodiments, optimized application215may reside in memory unit212as a default application bundle that may be included as part of the operating system (OS) of portable computing device200. But in other embodiments, optimized application215may be installed on portable computing device200as one or more downloads, such as an executable package installation file downloaded from a suitable application store via a connection to the Internet.

For example, optimized application215may be stored in any suitable portions of memory unit212upon installation of a package file downloaded in such a manner. Examples of package download files may include downloads via the iTunes store, the Google Play Store, the Windows Phone Store, downloading a package installation file from another computing device, etc. Once downloaded, optimized application215may be installed on portable computing device200as part of an installation package such that, upon installation of optimized application215, memory unit212may allocate various portions for different application functions, such as unused space215.1, store relevant data215.2, user data215.3, and code and logic215.4, for example.

The various allocated portions of optimized application215may represent, for example, portions of memory unit212that are associated with each respective function of optimized application215. For example, unused space215.1may be a portion of memory unit215that is reserved by optimized application215for additional user data, additional store relevant data, and/or additional code and logic for future updates.

Store relevant data215.2may include data representative of various store-relevant materials that are, for example, received from one or more back-end components (e.g., one or more back-end components112, as shown inFIG. 1). Again, this data may represent digital coupons, images, sounds, text, etc. As shown inFIG. 2, unoptimized application220represents a version of optimization application215that is not optimized in accordance with the embodiments described herein. Thus, although unoptimized application220also includes unused space, store relevant data, user data, and code and logic portions, unoptimized application220uses a larger portion of memory for the storage of store relevant data than optimized application215.

This is because, in accordance with the embodiments described herein, store relevant data215.2may include data representing store-relevant materials for a single store area, while the corresponding store relevant data for unoptimized application220represents store-relevant materials for an entire retail store (or several stores). For example, because a predicted shopping path may be calculated based upon the information transmitted from portable computing device200to one or more back-end components, the one or more back-end components may use this data to calculate a predicted shopping path for the user's next visit to the same retail store.

Using this predicted shopping path, portable computing device200may determine, from the user's current location within the retail store, the most likely area the user will next visit along the shopping path. Once this area is identified, portable computing device200may download or pre-fetch store-relevant materials associated with only this identified area. Furthermore, as a user leaves a particular area in the retail store, portable computing device200may purge the data associated with the store-relevant materials for the last location, thus allowing store relevant data215.2to be reduced in size, as data for store-relevant materials associated with a single store area within the retail store is all that is required to be stored at a given time.

Code and logic215.4may represent executable instructions, algorithms, and/or code that facilitate the functions performed by optimized application215. For example, as shown inFIG. 2, code and logic215.4includes a shopping path module215.5and a store relevant data loading module215.6. The respective function of each of these modules is further discussed below.

Shopping path module215.5may include executable instructions, algorithms, and/or code to facilitate gathering data which, once transmitted to one or more back-end components, may be used by the one or more back-end components to calculate a predicted shopping path. Thus, shopping path module215.5may work in conjunction with one or more processors202, communication unit204, and/or location acquisition unit210to gather any suitable type of information that may be used in the calculation of a predicted shopping path and transmit this information to one or more back-end components.

In various embodiments, shopping path module215.5may include instructions that facilitate portable computing device200transmitting its location in accordance with any suitable techniques. For example, portable computing device200may transmit its location as geographic location data (e.g., geographic coordinates) obtained via location acquisition unit210continuously or in accordance with any suitable schedule (e.g., once every 15 seconds, once every 30 seconds, etc.). These embodiments may be particularly useful, for example, in determining whether portable computing device has entered a particular retail store location based upon a comparison of the geographic location data to one or more geofences (e.g., geofence105, as shown inFIG. 1).

In some embodiments, the determination of whether portable computing device200has crossed a geofence and therefore entered a retail store may be determined locally via portable computing device200. In accordance with such embodiments, this may be implemented via memory unit212storing geofence data associated with one or more retail store locations, and a unique identifier correlating each geofence to each retail store, such as a store identification number, for example. Shopping path module215.5may include instructions to facilitate the comparison of geographic location data to each one of these geofences stored in memory unit212.

Based on this comparison, a determination may be made whether portable computing device200has entered a specific retail store location. In such a case, the unique identifier associated with the retail store location may be transmitted to one or more back-end components along with any other suitable data such as a timestamp, information identifying the user of portable computing device200, a date and time when the geofence was crossed (both entering and exiting the retail store, such that a duration of the visit may be determined), or any other suitable information that may be used by one or more back-end components to calculate a predicted shopping path.

In other embodiments, the determination of whether portable computing device200has entered a retail store may be determined at one or more back-end components (e.g., one or more back-end components112, as shown inFIG. 1). For example, portable computing device200may transmit its location to one or more back-end components, which may store geofence data and a correlation of the geofence coordinates for each respective geofence to particular retail stores. The one or more back-end components may then compare the received location data to the geofence data to determine whether a user associated with portable computing device200has visited a retail store, which particular retail store was visited, and for how long.

Shopping path module215.5may additionally include instructions to continue to facilitate the continued tracking of the location of portable computing device200once inside of a retail store location. For example, an aforementioned geofence perimeter may be initially used to allow for the determination of whether portable computing device has entered a retail store location, such as by crossing geofence105and entering retail store101, for example. Once inside of retail store101, portable computing device200may continue to track its location and/or transmit data indicative of changes in the location of portable computing device200such that predicted shopping path111may be calculated.

In various embodiments, the location of portable computing device200may be tracked inside of a retail store location in accordance with any suitable techniques that facilitate a level of location tracking granularity such that a user's path along various retail store areas may be clearly identified. In some embodiments, portable computing device200may use a similar or identical location tracking technique outside and inside the retail store. But in other embodiments, portable computing device200may switch to a different location tracking technique based upon whether portable computing device200is inside of a retail store or outside of a retail store. Again, the determination of whether portable computing device200is outside or inside of a retail store may be made locally via portable computing device200or via a notification transmitted by one or more backend computing devices and received at portable computing device200.

For example, location acquisition unit210may periodically calculate the location of portable computing device200via satellite communications in accordance with a GNSS, resulting in the calculation of geographic coordinates. As discussed above, these geographic coordinates may allow for the determination, via portable computing device200or one or more back-end components, of whether portable computing device200has crossed geofence105. Continuing this example, upon crossing geofence105, location acquisition unit210may continue to calculate geographic coordinates, but these geographic coordinates may then be referenced to an overlay of retail store101instead of one or more geofences.

In other words, as discussed above, portable computing device200and/or one or more back-end components may determine whether portable computing device200has crossed geofence105and identify the particular retail store101that is associated with geofence105. Once retail store101is identified in this way, embodiments include portable computing device200and/or one or more back-end components correlating retail store101to an overlay of geographic coordinates that detail the various areas within retail store101. This overlay may be configured as any suitable type of coordinate identification system that discerns different areas of the retail store in any suitable manner. For example, the overlay may include a range of coordinates with a sufficiently fine granularity such that the tracked location (and thus the path) of portable computing200may be associated with the various areas101.1-101.6while moving throughout retail store101during a shopping visit, as shown inFIG. 1.

To provide another example with continued reference toFIG. 1, once it is determined that portable computing device200has crossed geofence105and/or entered retail store101, portable computing device200may switch the manner in which location tracking is performed. That is, portable computing device200may use GNSS location tracking while outside of retail store101, but then switch to an alternate means of location tracking once inside of retail store101. These embodiments may be particularly useful, for example, when satellite signal reception is poor inside of retail store101and/or when the accuracy of a GNSS system does not provide adequate granularity to properly identify a user's path with respect to the different store areas101.1-101.6.

For example, portable computing device200may implement any suitable techniques in which the location of portable computing device200may be correlated to areas within the retail store while a user walks through the store. In an embodiment, portable computing device200may implement a system whereby uniquely identifiable data may be correlated to a known location of a source associated with the identifiable data.

To provide an illustrative example with continued reference toFIG. 1, various communications devices may be positioned at the various areas101.1-101.6throughout retail store101. These communication devices are not shown inFIG. 1for purposes of brevity, but may be implemented as any suitable communication device configured to periodically transmit data that uniquely identifies each respective communication device.

For example, the communication devices associated with each respective store area101.1-101.6may be implemented as any suitable wireless communication device configured to transmit one or more signals in accordance with any suitable communication protocols and/or recurring schedule, such as once per every 10 seconds, once per 30 seconds, etc. In some embodiments, the communication devices may be implemented as “Beacons,” which have been developed by multiple wireless hardware manufacturers (e.g. Qualcomm, Cambridge Silicon Radio, etc.) If implemented as Beacons, each communication device may be configured to transmit a universally unique identifier (UUID) and data representative of calibrated receive power information in accordance with one or more standards utilized by Beacon devices. For example, the communication devices may transmit data in accordance with a BLUETOOTH Low Energy (BLE) protocol, which implements the BLUETOOTH4.0specification at the time of this writing.

In embodiments in which Beacons are positioned throughout a retail store and used for location tracking within the store, one or more processors202may execute instructions stored in shopping path module215.1to estimate the proximity of portable computing device200to each respective Beacon. For example, portable computing device200may compare calibrated receive power information received from a Beacon's transmitted signal to the received signal strength indicator (RSSI) associated with that particular signal and, using this ratio, estimate its proximity to the transmitting Beacon.

Embodiments include portable computing device200transmitting ranging data indicative of the proximity of portable computing device200to each communication device within the store, and thus the proximity of portable computing device200to each store area associated with each respective communication device. This ranging data may also be transmitted with one or more additional parameters, such as the identifier associated with each communication device, a timestamp, and/or other indication correlating how long portable computing device200is positioned at each range.

For example, in accordance with the current Beacon standard as of this writing, portable computing device200may compare the RSSI value of a received signal transmitted by a proximate communication device located at store area101.2to the calibrated power value transmitted by that same communication device. Portable computing device200may use this ratio to calculate ranging data, such as an immediate range (e.g., one to two inches), a near range (3 to 6 feet), and a far range (greater than 30 feet).

Portable computing device200may be configured to receive signals concurrently from multiple communication devices as a user walks through the retail store, and multiple communication devices may be positioned at each store area in a strategic manner to assist in path calculation. For example, assume that a communication device (e.g., a Beacon) is located at each of locations A1, A2, B1, and B2, as shown inFIG. 1. Further assume that during a user's store visit the user follows the same path as indicated by predicted shopping path111. As the user follows this path, portable computing device200may transmit data to one or more backend computing devices indicating that over a span of T seconds, the range between portable computing device200and each of locations A1and B1decreased while the range between portable computing device200and each of locations A2and B2increased. One or more backend computing devices112may receive this data and, by correlating the signal ranges over time to the location of each identified communication device within retail store101, calculate the portion of user's path walking between areas101.1and101.2towards area101.3, as shown inFIG. 1. This process may then be repeated as portable computing device200moves throughout retail store101to calculate the user's entire path during a single store visit, which may be used to calculate the predicted shopping path111for future visits and/or the user's next likely location. These calculations are discussed in further detail below.

In various embodiments, portable computing device200may be configured to detect its proximity to each of the various communications devices using any suitable proximity detection method. For example, proximity detection may be accomplished using any suitable known ranging methods, such as those described in accordance with the Beacon standard discussed above, techniques implementing signal attenuation measurements, signal strength measurements, the use of propagation time of arrival (ToA) and time of departure (ToD) timestamps, etc.

In yet additional embodiments, portable computing device200may be configured to detect its proximity to other identifiable devices located throughout retail store101using other communication techniques outside of traditional communication bands. For example, portable computing device200may process unique sounds that may be emitted from various devices positioned throughout retail store101and/or directed to certain areas of retail store101, analyze light patterns that may be emitted from various devices positioned throughout retail store101and/or directed to certain areas of retail store101, etc. Of course, to the extent that specific hardware components may be needed to receive, analyze, and/or process signals, sounds, lights, etc., outside of traditional communication bands, portable computing device200may be implemented with such components and shopping path module215.1may include instructions to facilitate such implementations. These additional components are not shown inFIG. 2for purposes of brevity.

In some embodiments, GNSS tracking may not be needed to determine a user's path during a store visit. For example, the entryway of retail store101may be associated with a communication device or other unique identifier in the same manner as one or more areas101.1-101.6. In such a scenario, portable computing device200need not rely on GNSS tracking to determine that portable computing device200has entered retail store101, instead making this determination once portable computing device200is within a threshold range of the entryway, as discussed above with respect to the various techniques in which portable computing device200may determine its location with reference to areas101.1-101.6.

Store relevant data loading module215.6may include executable instructions, algorithms, and/or code to facilitate determining when to purge old data stored in store relevant data215.2and/or when to pre-fetch new data to be stored in store relevant data215.2. To do so, one or more processors202may execute instructions stored in store relevant data loading module215.6to monitor the current location of portable computing device200and/or transmit the current location of portable computing device200to one or more back-end components (which may send a suitable signal to portable computing device200indicating when to do so). Thus, store relevant data loading module215.6may work in conjunction with one or more processors202, communication unit204, location acquisition unit210, and/or shopping path module215.5to facilitate these functions.

In various embodiments, store relevant data loading module215.6may include instructions that, when executed by one or more processors202, cause portable computing device to perform such acts locally and/or in combination with one or more back-end components. For example, in locally executed embodiments, portable computing device200may use the current location of portable computing device to predict the next location of portable computing device200having the statistically highest probability of being visited by the user.

However, in embodiments in which portable computing device200works in conjunction with one or more back-end components112, portable computing device200may transmit its current location to the one or more back-end components112. The one or more back-end components112may in turn use the current location of portable computing device to predict the next location of portable computing device200having the statistically highest probability of being visited by the user.

Regardless of how the most likely next location of portable computing device200is calculated, embodiments include portable computing device200updating the data stored in store relevant data215.2based upon this location. For example, referring back toFIG. 1, once portable computing device200enters retail store101, back-end components may correlate the location of portable computing device200to a particular predictive modeling algorithm associated with predicted shopping path111, which is associated with retail store101. Once this correlation has been made, store relevant data associated with the first store area101.1may be pre-fetched by portable computing device200and/or pushed to portable computing device200from the one or more back-end components112and stored in store relevant data215.2. Upon portable computing device200being located within a threshold distance of the first store area101.1, portable computing device200may display these already downloaded store-relevant materials.

Continuing this example, assuming portable computing device200continues to follow along the same path as predicted shopping path111, the location of portable computing device200may become further away from the first store area101.1. Once portable computing device200exceeds a threshold range from first store area101.1, portable computing device200may purge the data stored in store relevant data215.2. Once purged, store relevant data associated with the second store area101.2may be pre-fetched by portable computing device200and/or pushed to portable computing device200from the one or more back-end components112and stored in the store relevant data215.2. Upon portable computing device200being located within a threshold distance of the second store area101.2, portable computing device200may display the store-relevant materials associated with the second store area101.2. The process or purging and pre-fetching data may continue in this manner until the user has completed her store visit and exited retail store101.

In an embodiment, the functionalities associated with both shopping path module215.1and store relevant data loading module215.6may operate concurrently. That is, as a user visits a store and store relevant data is pre-fetched and purged, portable computing device200may also collect and transmit new information that may be used for the calculation of a new, updated predicted shopping path. In this way, predicted shopping path111may change over time in the event that the user does not actually follow the path corresponding to predicted shopping path111. The details associated with updating the predicted shopping path are further discussed below.

FIG. 3is a block diagram of an exemplary back-end component300, according to an embodiment. In an embodiment, back-end component300may be an implementation of one or more back-end components112, for example, as shown inFIG. 1. Back-end component300may include one or more processors302, a communication unit304, and a memory unit306.

One or more processors302, communication unit304, and memory unit306may be substantially similar implementations of, and perform substantially similar functions as, one or more processors202, communication unit204, and memory unit210, respectively, as shown inFIG. 2. Therefore, only differences between these components will be further discussed herein.

Data processing and predictive modeling application307is a portion of memory unit306configured to store instructions, that when executed by one or more processors302, cause one or more processors302to perform various acts in accordance with the applicable embodiments as described herein. For example, in various embodiments, instructions stored in data processing and predictive modeling application307may facilitate one or more processors302performing functions such as receiving any suitable type of information used in the calculation of predicted shopping paths (e.g., user information, information associated with the user's portable computing device, etc.), determining the current location of a portable computing device, determining whether a portable computing device has entered a particular store, identifying a retail store, accessing geofence data and making comparisons with the current location of the portable computing device, receiving data from a portable computing device such as ranging data and/or geographic coordinates indicative of the location of the portable computing device, etc.

Upon execution of data processing and predictive modeling application307, one or more processors302may match received data to user information stored in one or more databases (e.g., database112.2, as shown inFIG. 1). For example, one or more processors202may compare any portion of user information (e.g., a logon username) received from the user's portable computing device to data stored in one or more databases to correlate the user information to that user's particular profile. In this way, data processing and predictive modeling application307may facilitate the collection of different types of data used to calculate a predicted shopping path for a particular user and store this data as part of a profile associated with that user.

Furthermore, upon execution of data processing and predictive modeling application307, one or more processors302may determine the content of appropriate relevant store data to push to a portable computing device and/or to make available for download from a portable computing device. Additionally or alternatively, predictive modeling application307may facilitate determining when to make this data available. For example, back-end component300may determine the content of store-relevant materials such as promotional materials, notifications, informational notices, messages, etc., associated with each retail store area for multiple stores.

Continuing this example, back-end component300may also take various actions based upon the current received location (or calculated location) of a portable computing device. For example, back-end component300may determine when to send an appropriate indication to a portable computing device to purge data and/or when to send an appropriate indication to a portable computing device to pre-fetch new data. To provide another example, back-end component300may determine when to push store relevant data to a portable computing device.

Communication unit304may be configured as any suitable combination of hardware and/or software to facilitate the retrieval and/or storage of all relevant data used to calculate predicted shopping paths, to access and/or modify user profile data stored in one or more databases, to retrieve and/or transmit store relevant data, etc. In various embodiments, communication unit304may be configured to facilitate data communications between back-end component300and one or more other back-end components, communication devices, and/or networks in accordance with any suitable number and/or type of communication protocols, which may be the same communication protocols as one another or different communication protocols based upon the particular network component and/or network that back-end component300is communicating.

FIG. 4is a block diagram of an exemplary set of user profiles400used to calculate predicted shopping paths, according to an embodiment. In an embodiment, user profiles400may be stored in any suitable location, such as one or more back-end components112, as shown inFIG. 4. For example, user profiles400may be stored in one or more databases112.2.

As shown inFIG. 4, user profiles400correspond to 4 different users A-D, although embodiments include any suitable number of user profiles400being stored in one or more back-end components. In an embodiment, each user's profile may include specific unique information that may be used to later correlate data received via one or more back-end components to a user's particular profile. For example, each of users A-D may be identified by their logon usernames.

User profiles400represent a history of shopping and/or purchasing behavior for each user as well as other information that may be relevant to calculate a predicted shopping path for each user A-D. For example, as each user A-D visits one or more retail stores, one or more back-end components may receive location data from the portable computing device associated with each of users A-D, as previously discussed. From this location data, a logged history of when each user visited each store and the user's path while shopping in each store may be determined by the one or more back-end components and stored as part of that user's profile. Using the user profile data, the calculated predicted shopping path for each user may be calculated on a per-user, per-store basis, which is further discussed below.

Furthermore, other data may be stored in or otherwise associated with each user's profile that may be useful in calculating that user's predicted shopping path or for other uses. To provide an illustrative example, user profiles400indicate that user A visits retail stores mostly on the weekends and, during at least one of those visits, user A followed a path starting with the beauty department, moved the pharmacy, and then left the store. Although one shopping path is shown inFIG. 4for user A, embodiments include the user profiles including any suitable number of store visits, for any suitable number of stores, and for any suitable number of users.

Similarly, online shopping behaviors may be tracked and stored as part of each user profile. This may be determined, for example, by tracking the navigational links, internet protocol (IP) addresses, urls, or other identifiable portions of the retailer's web-based or other suitable application that the user may use for shopping in addition to, or as an alternative to, visiting brick-and-mortar retail store locations. The user's navigation may be identified and tracked, for example, by correlating user logon identification to that user's online behavior. To provide an illustrative example, user profiles400indicate that user A shops online by visiting the beauty portion of the online retail application before navigating to the health and wellness portion of the online retail application.

In various embodiments, each user's in store and/or retail shopping behavior may be analyzed to not only calculate predicted shopping paths, but to provide additional data that may be useful for the retailer. For example, over several store visits, a majority of user A's in-store visits may be found to occur on weekends (e.g., more than 75% of visits in the last 90 days). In addition, over several online shopping sessions, it may be determined that user A's online activity occurs once a month.

To provide another example, the frequency of visits and when the visits most commonly occur may be useful in determining the content of store-relevant materials to present to the user, or whether users in particular regions prefer online shopping versus in-store shopping. To provide additional examples, the frequency of visits may be useful in identifying areas that could potentially have a high demand for a new retail store.

FIG. 5is a block diagram illustrating the inputs and outputs of an exemplary predicative modeling algorithm500, according to an embodiment. In an embodiment, predicative modeling algorithm500is an example of an algorithm implemented by one or more back-end components to calculate one or more locations along a predicted shopping path. For example, predicative modeling algorithm500may be part of the instructions stored in data processing and predictive modeling application307, which is executed by one or more processors302, as shown inFIG. 3.FIG. 5indicates four different types of inputs, three of which are used to determine the next store area of highest statistical probability to be visited by a user. However, embodiments include predicative modeling algorithm500utilizing any suitable number and/or type of inputs to facilitate this determination.

In an embodiment, predicative modeling algorithm500may continuously and dynamically collect additional information over time to refine the accuracy of the calculated next likely location. In other words, as the user continues to visit a retail store, additional data may be used to change the predicted shopping path such that the likelihood of a correct prediction of the next store location increases. In this way, the calculated predicted shopping path may be viewed as calculating an order in which a user has the highest statistical probability of visiting a plurality of shopping areas within a store.

To do so, predicative modeling algorithm500may use any suitable number and/or type of data. Again, a predicted shopping path may be calculated and updated dynamically or represent a predetermined path, based on the availability of different types of input to predicative modeling algorithm500. For example, when a history of previous store visits is available for a particular user and a particular store, then this information may be leveraged to dynamically calculate the user's most likely next location. For example, as shown inFIG. 5, the user information (a) and the store information (b) may be included in a user's profile. The user information (a) may include, for example, demographics related to the user such as age, income, etc. Furthermore, user information (a) may also include a history of previous user shopping paths for a particular store, when such data is available.

Continuing this example, input store information (b) may include data that identifies the store to which the other various inputs correspond. This may be determined, for example, via geofence referencing and/or other data received from the portable computing device identifying that the user has started a store visit by entering a boundary or threshold so indicating.

Further continuing this example, the input user's current location (c) may include data indicative of the user's current location. This may include, for example, an indication of the user's specific location within a store associated with the store information (b), which may be utilized to determine the specific area in the store the user is currently located. This may also include, for example, an indication of the user's location outside of the store such that a determination may be made that the user has just started a store visit.

In an embodiment, predicative modeling algorithm500may suitably weight each of these inputs as part of a weighting function, ƒ. For example, as shown inFIG. 5, input (a), the user information, may be weighted with a first weight α, while input (b), the store information, is weighted with a second weight β and input (c), the user's current location, is weighted with a third weight γ. The weights α, β, and γ may constitute any suitable respective values that may be implemented depending on the type of weighting function that is implemented.

For example, weights α, β, and γ may correspond to constant values ranging between 0 and 1, which may be increased from 0 to 1 to indicate a greater contribution to the calculation of the user's most likely next store area to be visited. To provide an illustrative example with continued reference toFIGS. 1 and 4, assume that user103, as shown inFIG. 1, has a user profile associated with user A, as shown inFIG. 4. Based upon the tracked location of user103from the past several store trips (e.g., the last 8 trips), assume that the user followed the same path shown in predicted shopping path111ofFIG. 1for 75% of these trips (e.g.,6of the last 8 store visits within the last 6 months). Therefore, for a given store visit, the user's current location within store101may be considered as a good indicator of the user's most likely next location when taken in accordance with predicted shopping path111.

Thus, when tracked location history is available, the weight γ may be set to a higher value (e.g., 0.5) than weights α and β (e.g., 0.3 and 0.2, respectively) as part of the weighting function ƒ. By doing so, the weighted function places greater statistical emphasis on data that is more likely to yield the user's next location. That is, the user's current location within a retail store may function as a better predictor of where that user is likely to go next when a user has behaved in similar ways in the past from that same location.

In various embodiments, the weights may be updated and/or adjusted at any suitable time as additional data is collected. For example, it may be found after several store visits that for some users, age or other demographic factors may be a better indicator of the next store area than the user's previous history and/or current location. In such a case, the weight α may be set to a higher value than weights β and γ.

To provide another example, some geographic regions may have a similar store layout that ensures most users visit these stores in a similar fashion. In other words, for some stores, regardless of other types of information, most users may tend to visit retail stores in a common region along similar shopping paths. In such a case, the weight β may be set to a higher value than weights α and γ.

In some embodiments, there may be little or no data available for a particular user. For example, a new user may install the retailer's application on his portable computing device but not generate a user profile. To provide another example, a new user may have a user profile but the profile may be new and/or have little data regarding the user and/or previous shopping paths.

In such scenarios, embodiments include utilizing other data received from the portable computing device to try to determine which predetermined shopping path may be a best match for a particular user. For example, a new user may not be associated with a user profile, but several “guest” profiles may be created in accordance with various metrics for unknown users, which may include, for example, information associated with the portable computing device and/or information associated with the store. Information associated with the portable computing device may include, for example, a unique portable computing device identifier (e.g., a MAC ID), an operating system associated with the portable computing device, a model associated with portable computing device, etc. Furthermore, information associated with the store may include, for example, a geographic region of the store and/or a store layout.

Thus, embodiments include matching an unknown user to predetermined predicted shopping paths using data that is available. Continuing the example above with reference to the weighting function ƒ, predicative modeling algorithm500may utilize the predetermined shopping path and weight the user's information less when unavailable as compared to other data that is more available and/or considered a more reliable indicator of whether the user will actually follow the predetermined shopping path.

Regardless of how the user's next most likely location may be determined, embodiments include determining whether the user actually followed this path and, if not, potentially adjusting the weights to improve upon future accuracy. To provide an illustrative example, assume that user102visits retail store101but follows predicted shopping path111in the opposite direction, i.e., user102first walks from area101.4at location D1towards area101.3at location Cl.

In such a case, the user's current location (e.g., D1) would be different than the area in retail store101calculated as being the statistically most likely to be visited first (e.g., A1). Therefore, embodiments include predicative modeling algorithm500adjusting one or more weights used by the weighting function ƒ in accordance with this difference. In other words, once the user deviates from the initially calculated predicted shopping path111, the weights may be adjusted to take into account this deviation, as it may now be less likely that the user will visit location A2after being at location D1and more likely that the user will now visit location Cl instead.

Thus, predicative modeling algorithm500may determine whether an actual next shopping area visited by the user matches the calculated next shopping area which the user had the highest statistical probability of visiting next during a store visit. And when the actual next shopping area is different than the calculated next shopping area, predicative modeling algorithm500may then adjust the weights of the weighted function ƒ such that subsequently calculated next shopping areas that apply the adjusted weights have a greater probability of being correct as compared to applying the weighted function before the weights have been adjusted.

Again, predicative modeling algorithm500may utilize any suitable number and/or type of inputs to calculate the next store area of highest statistical probability of being visited by a user. For example, in some embodiments, the user's online behavior may be used as inputs to predicative modeling algorithm500. These embodiments may be particularly useful, for example, when little tracked location history data is available for a particular user. For example, in such instances the online data may be used in place of the tracked location history data such that physical departments in the store may be substituted for their online equivalents.

Furthermore, predicative modeling algorithm500may utilize one or more inputs to calculate the content of materials in addition to the user's next likely location within the retail store. For example, the retailer may provide promotional materials associated with each area in a retail store, which may be accessed by one or more back-end components such that the data used by the portable computing device is relevant to that area.

The data sent to the portable computing device, however, may be dependent on factors in addition to location. For example, predicative modeling algorithm500may provide specific messages or notifications using the input content parameters (d). The content parameters may specify, for example, data representing content (or where such content may be accessible by the one or more back-end components). This may include, for example, seasonal messages, notifications pertaining to specific events and/or information, promotions, etc. For example, content parameters (d) may specify a notification informing the user at a particular retail store of flu vaccinations or other over-the-counter medications during flu season. To provide another example, input content parameters (d) may specify store-relevant materials associated with specific holidays or specific stores, regions, etc., and may help facilitate more relevant and targeted advertising.

FIG. 6illustrates a method flow600, according to an embodiment. In an embodiment, one or more portions of method600(or the entire method600) may be implemented by any suitable device, and one or more portions of method600may be performed by more than one suitable device in combination with one another. For example, one or more portions of method600may be performed by portable computing device102and/or one or more back-end components112, as shown inFIG. 1. In an embodiment, method600may be performed by any suitable combination of one or more processors, applications, algorithms, and/or routines. For example, method600may be performed via or more processors202executing instructions stored in optimized application215in conjunction with location data input generated via location acquisition unit210. To provide another example, method600may be performed via or more processors302executing instructions stored in data processing and predictive modeling application307in conjunction with data received from a portable computing device via communication unit304.

Method600may start when one or more processors track the location of a portable computing device (block602). In various embodiments, the location of the portable computing device may be tracked locally via the portable computing device (e.g., portable computing device102, as shown inFIG. 1) and/or tracked via one or more back-end components (e.g., one or more back-end components112, as shown inFIG. 1) (block602). The location tracking may be performed in accordance with any suitable techniques to identify the location of the portable computing device inside and outside of a retail store.

Method600may include one or more processors generating a tracked store location history (block604) of the portable computing device. This may include, for example, one or more back-end components processing location data received from the portable computing device (block602) and assembling this data into a user profile including an in store shopping path for each store visit (block604).

Method600may include one or more processors determining whether the user has started a subsequent shopping visit (block606). This may include, for example, one or more back-end components using location data received from the portable computing device (block602) to determine whether the portable computing device has crossed a geofence boundary associated with a store's location (block606). To provide another example, this may include, for example, one or more back-end components using location data received from the portable computing device (block602) to determine whether the portable computing device is within a threshold range of a communication device that is associated with the store's entrance (block606). If so, method600may continue (block608). Otherwise, method600may revert back to continuing to track the location of the portable computing device (block602) and generating a tracked store location history (block604).

Method600may include one or more processors calculating the next shopping area most likely to be visited by the user (block608). For example, this may include one or more back-end components using the tracked store location history (block604), the current location of the portable computing device (block602), and/or other data to determine the area within the store having the highest statistical probability of being next visited by the user (block606). Again, this calculation may utilize a weighted function that weights each input received by the one or more back-end components, which may include data accessed from the user's profile (block608).

Once the location of the next shopping area within the store has been calculated (block608), method600includes one or more processors pre-fetching data associated with the store-relevant materials for that calculated location (block610). In various embodiments, the pre-fetching may be initiated by a portable computing device (e.g., downloaded from one or more back-end components) or initiated by one or more back-end components (e.g., pushed to the portable computing device) (block610).

Method600may include one or more processors determining whether the user is proximate to the next shopping area (block612), which was previously calculated (block608) and for which the store-relevant materials were pre-fetched (block610). This determination may be made, for example, via any suitable location-tracking techniques (block612). For example, this determination may be made in accordance with GNSS location determination techniques and/or Bluetooth-based determination techniques, as discussed herein (block612).

In any event, the determination of whether the user is proximate to the next shopping area may be determined based upon a comparison of the location of the user's portable computing device to the known location of the next shopping area (block612). For example, it may be determined that the user is proximate to the next shopping area when the user's portable computing device is within a threshold range of the next shopping area (block612). If so, method600may continue (block614). If not, then method600may revert back to continuing to determine whether the user is proximate to the next shopping area (block612).

Method600may include one or more processors displaying the store-relevant materials associated with the next shopping area (block614), which have already been pre-fetched (block610). Again, these store-relevant materials may be relevant to a particular store area, location, and/or department.

FIG. 7illustrates a method flow700, according to an embodiment. In an embodiment, one or more portions of method700(or the entire method700) may be implemented by any suitable device, and one or more portions of method700may be performed by more than one suitable device in combination with one another. For example, one or more portions of method700may be performed by portable computing device102and/or one or more back-end components112, as shown inFIG. 1. In an embodiment, method700may be performed by any suitable combination of one or more processors, applications, algorithms, and/or routines. For example, method700may be performed via or more processors202executing instructions stored in optimized application215in conjunction with location data input generated via location acquisition unit210. To provide another example, method700may be performed via or more processors302executing instructions stored in data processing and predictive modeling application307in conjunction with data received from a portable computing device via communication unit304.

Method700may start when one or more processors receive data from a portable computing device (block702). In various embodiments, the data received from the portable computing device may be any suitable type of data from which a predetermined shopping path may be calculated. For example, the data may represent location data transmitted by the portable computing device, information about the store where the portable computing device is located, and/or information about the portable computing device itself, as discussed above (block702).

Method700may include one or more processors determining whether the user has started a shopping visit (block704). This may include, for example, one or more back-end components using location data received from the portable computing device (block702) to determine whether the portable computing device has crossed a geofence boundary associated with a store's location (block704). To provide another example, this may include, for example, one or more back-end components using location data received from the portable computing device to determine whether the portable computing device is within a threshold range of a communication device that is associated with the store's entrance (block704). If so, method700may continue (block706). Otherwise, method700may revert back to continuing to receive data from the portable computing device (block702).

Method700may include one or more processors calculating a predicted shopping path within the store that represents an order of store areas having the highest statistical probability of being visited by the user (block706). For example, this may include one or more back-end components using data received from the portable computing device (block702) to match the user to a predetermined shopping path (block706). Again, this calculation may utilize a weighted function that weights each input received by the one or more back-end components, which may include data accessed from one or more guest profiles or other user profiles that are similar to the user (block706).

Once the predicted shopping path has been calculated (block706), method700includes one or more processors pre-fetching data associated with the store-relevant materials for the user's next likely location along the predicted shopping path (block710). In various embodiments, the pre-fetching may be initiated by a portable computing device (e.g., downloaded from one or more back-end components) or initiated by one or more back-end components (e.g., pushed to the portable computing device) (block710).

Method700may include one or more processors determining whether the user is proximate to the next shopping area along the shopping path (block710), for which the store-relevant materials were pre-fetched (block708). This determination may be made, for example, via any suitable location tracking techniques (block710). For example, this determination may be made in accordance with GNSS location determination techniques and/or Bluetooth-based location determination techniques, as discussed herein.

In any event, the determination of whether the user is proximate to the next shopping area may be determined based upon a comparison of the location of the user's portable computing device to the known location of the next shopping area (block710). For example, it may be determined that the user is proximate to the next shopping area when the user's portable computing device is within a threshold range of the next shopping area (block710). If so, method700may continue (block712). If not, then method700may revert back to continuing to determine whether the user is proximate to the next shopping area (block710).

Method700may include one or more processors displaying the store-relevant materials associated with the next shopping area (block712), which have already been pre-fetched (block712). Again, these store-relevant materials may be relevant to a particular store area, location, and/or department.

Technical Advantages

The embodiments described herein may be implemented as part of one or more computer components such as a portable computing device and/or one or more back-end components. Furthermore, the embodiments described herein may be implemented as part of a computer network architecture that facilitates communications between various other devices and/or components. Thus, the embodiments described herein address and solve issues of a technical nature that are necessarily rooted in computer technology.

For instance, embodiments include analyzing user behavioral data and/or other sources of data to predict a user's most likely next location. Once this location is determined, the embodiments also allow for application optimization by purging data once a user leaves a particular store area and loading data relevant to the next store area. In doing so, the embodiments overcome issues associated with the memory size limits and reduce the amount of memory utilized by traditional applications. That is, because a user's actions cannot be predicted, retailer applications are typically unoptimized and require a much larger amount of memory space to provide a user with data when necessary or relevant. Without the improvements suggested herein, additional memory storage would be required, as the portable computing device would need to download additional data as needed. The former of these options results in a wasteful use of memory storage space, while the latter requires additional time for the relevant data to be downloaded.

Furthermore, the embodiments described herein function to improve the accuracy of a weighted function over time using the user's location (and other sources of data) as feedback. For example, by analyzing the user's next actual location when it is different than the predicted next location, weights of a weighting function may be adjusted to improve the statistical probability that subsequent predictions will be correct. Therefore, not only do the embodiments address computer-related issues regarding efficiency over the traditional amount of memory required by a retail application, but they also improve over time. By learning and improving over time, the embodiments address computer related issues that are related to efficiency metrics, such as consuming less power, for example.

Additionally, the embodiments described herein reduce the amount of data required for operation of an application while still displaying store-relevant materials to the user. In doing so, the embodiments address issues related to bandwidth usage. For example, by selectively pushing only relevant data to a portable computing device associated with the predicted most likely next location of the user, the amount of data required to maintain proper operation of the application is reduced. Therefore, the embodiments also help address issues related to network bandwidth usage and potentially alleviate network congestion.

ADDITIONAL CONSIDERATIONS

As used herein, the term “store,” or “retail store” may include, for example, a single outlet or a plurality of outlets affiliated with one or more entities that are licensed or otherwise authorized to sell merchandise, to dispense prescribed pharmaceutical products such as drugs, medicaments, durable medical equipment, etc. The one or more entities may be located, for example, in geographic locations separate from one another, in different areas of the same city, or in different states, countries, etc. The retail stores may include, for example, one or more of a conventional retail store, space within a location operated by another commercial or not-for-profit entity (e.g., within a discount store, hospital, school, nursing home, etc.), an outlet in proximity with a warehouse or distribution center, a call-in pharmacy, a long-term care pharmacy, a workplace/on-site pharmacy, a specialty pharmacy, etc. The pharmacy may be commercial or not-for-profit, and may provide or vend other products in addition to the prescribed pharmaceutical products.

Furthermore, although the embodiments described herein use examples directed to the calculation of predicted shopping paths for a user inside of a physical retail store, the embodiments may be equally applicable to the calculation of any suitable user actions. For example, as discussed herein, each user's online shopping habits may be stored as part of a user profile, and this data may be used as input to a predictive modeling algorithm. Additionally or alternatively, the order in which a user has previously navigated different areas of an online retail application and/or the user's previous paths through a physical retail store may be used to predict the portions of a website that a user may visit next. Expanding the prediction of which portion of a web-based application that a user may visit next may have specific advantages directed to such implementations. For example, the application may pre-load advertisements or other relevant data so this data is ready once the user arrives at the next predicted portion of the online application.

Although the foregoing text sets forth a detailed description of numerous different embodiments, it should be understood that the detailed description is to be construed as exemplary only and does not describe every possible embodiment because describing every possible embodiment would be impractical, if not impossible. In light of the foregoing text, one of ordinary skill in the art will recognize that numerous alternative embodiments could be implemented, using either current technology or technology developed after the filing date of this patent application.