# Patent

## Title
Data storage service for personalization system

## Abstract

A data storage system or service is provided for the data that is generated by the personalization system. The data storage system can be configured to support storing, retrieving or querying, and updating of data such as user information, personalized content such as personalized business information and collection information, statistics information related to users, collections, businesses, and the like. The data model design of the data storage system may be configured to optimize performance associated with specific features of the personalized system such as following and/or sharing of collections. Additionally, the data storage system may be configured to detect and provide user notifications of trigger events.

## Background
CROSS-REFERENCE TO RELATED APPLICATIONS
This application is a continuation-in-part of U.S. patent application Ser. No. 14/462,101, filed Aug. 18, 2014, entitled “SYSTEMS AND METHODS FOR FACILITATING DISCOVERY AND MANAGEMENT OF BUSINESS INFORMATION,” the content of which is hereby incorporated by reference in its entirety.


BACKGROUND
Certain embodiments of the present disclosure relate generally to providing data storage support for a personalization system.
As value, use, access, and demand corresponding to information continue to increase, consumers demand more of the products and services they use than ever before. Businesses are expected to compete to provide greater and greater levels of service and more tailored service offerings. However, searching for, obtaining, managing, and sharing information about businesses can be inconvenient and disorderly. Chief among the difficulties that a consumer often encounters is the amount of time and effort necessary to search for particular businesses of interest that are trusted and recommended.
There is a need for systems and methods to streamline business information searching, obtaining, managing, and sharing, and to provide greater availability and quality of tailored service offerings to consumers. This and other needs are addressed by the present disclosure.
BRIEF SUMMARY
Certain embodiments of the present disclosure relate generally to providing data storage support for a personalization system.
In one aspect, a method to assist a user to identify one or more businesses of interest is provided. The method may include one or a combination of the following, which may be performed by a computer system. Individual selections, by a plurality of end users, of one or more businesses to retain information corresponding to the one or more businesses may be facilitated. Indicia of selections made by each end user of the plurality of end users may be processed, the indicia being received by the computer system via a network. Collections of business information in one or more repositories may be retained. Each collection of the collections of business information: may be uniquely associated with a respective end user of the plurality of end users; may include information corresponding to one or more selected businesses of the one or more businesses that were individually selected by the respective end user for retention in association with the respective end user; and may be associated with a respective theme pertaining to the one or more selected businesses. Each end user of the plurality of end users may be classified into at least one category of a set of categories, the set of categories representing classifications of end users based at least in part on one or more sets of attributes defined for classifying various end users. First information enabling unique identification of a first end user may be processed. Second information about a first location corresponding to the first end user may be processed. The first end user may be matched to a first category from the set of categories, where the first end user matches one or more categories from the set of categories. A first set of collection information associated with a first set of end users that correspond to the first category and the first location may be identified. A recommendation for the first end user may be determined based at least in part on the first set of collection information, the first category, and the first location, where the recommendation corresponds to a first business that was individually selected for retention in association with at least some of the first set of end users. Indication of the recommendation to a first end-user computing device associated with the first end user may be caused, and selection of the first business to retain information corresponding to the first business in association with the first end user may be facilitated.
In another aspect, a system is provided to assist a user to identify one or more businesses of interest. The system may include one or more network interfaces accessible from a network and one or more processors coupled to at least one of the one or more network interfaces and to one or more repositories. The one or more processors may execute instructions to perform one or a combination of the following. Individual selections, by a plurality of end users, of one or more businesses to retain information corresponding to the one or more businesses may be facilitated. Indicia of selections made by each end user of the plurality of end users may be processed, the indicia being received by the computer system via a network. Collections of business information in one or more repositories may be retained. Each collection of the collections of business information: may be uniquely associated with a respective end user of the plurality of end users; may include information corresponding to one or more selected businesses of the one or more businesses that were individually selected by the respective end user for retention in association with the respective end user; and may be associated with a respective theme pertaining to the one or more selected businesses. Each end user of the plurality of end users may be classified into at least one category of a set of categories, the set of categories representing classifications of end users based at least in part on one or more sets of attributes defined for classifying various end users. First information enabling unique identification of a first end user may be processed. Second information about a first location corresponding to the first end user may be processed. The first end user may be matched to a first category from the set of categories, where the first end user matches one or more categories from the set of categories. A first set of collection information associated with a first set of end users that correspond to the first category and the first location may be identified. A recommendation for the first end user may be determined based at least in part on the first set of collection information, the first category, and the first location, where the recommendation corresponds to a first business that was individually selected for retention in association with at least some of the first set of end users. Indication of the recommendation to a first end-user computing device associated with the first end user may be caused, and selection of the first business to retain information corresponding to the first business in association with the first end user may be facilitated.
In yet another aspect, one or more non-transitory, machine-readable media having machine-readable instructions thereon are provided to assist a user to identify one or more businesses of interest, which instructions, when executed by one or more computers or other processing devices, cause the one or more computers or other processing devices to perform one or a combination of the following. Individual selections, by a plurality of end users, of one or more businesses to retain information corresponding to the one or more businesses may be facilitated. Indicia of selections made by each end user of the plurality of end users may be processed, the indicia being received by the computer system via a network. Collections of business information in one or more repositories may be retained. Each collection of the collections of business information: may be uniquely associated with a respective end user of the plurality of end users; may include information corresponding to one or more selected businesses of the one or more businesses that were individually selected by the respective end user for retention in association with the respective end user; and may be associated with a respective theme pertaining to the one or more selected businesses. Each end user of the plurality of end users may be classified into at least one category of a set of categories, the set of categories representing classifications of end users based at least in part on one or more sets of attributes defined for classifying various end users. First information enabling unique identification of a first end user may be processed. Second information about a first location corresponding to the first end user may be processed. The first end user may be matched to a first category from the set of categories, where the first end user matches one or more categories from the set of categories. A first set of collection information associated with a first set of end users that correspond to the first category and the first location may be identified. A recommendation for the first end user may be determined based at least in part on the first set of collection information, the first category, and the first location, where the recommendation corresponds to a first business that was individually selected for retention in association with at least some of the first set of end users. Indication of the recommendation to a first end-user computing device associated with the first end user may be caused, and selection of the first business to retain information corresponding to the first business in association with the first end user may be facilitated.
In various embodiments, data about the first end user may be gathered from one or more data sources, and the data about the first end user may be analyzed to determine a first set of one or more attributes of the first end user. The matching the first end user to the first category may be based at least in part on determining that the first set of one or more attributes of the first end user correspond to the first category. The first set of end users that correspond to the first category may share the first set of one or more attributes in common with the first end user. In various embodiments, the one or more data sources may include one or both of the first end user or a third party data source, and the data about the first end user may include demographic data. In various embodiments, the first set of one or more attributes of the first end user may include one or more of a demographic characterization of the first end user, a consumer characterization of the first end user, and/or a proximity to a life event.
In various embodiments, a set of businesses associated with the first set of collection information may be ranked based at least in part on a first metric. The determining the recommendation for the first end user may include selecting the first business based at least in part on the ranking. In various embodiments, the recommendation for the first end user comprises an offer from the first business.
In various embodiments, the determining the recommendation for the first end user may include retrieving a second set of collection information that is associated with the first end user and that include information corresponding to one or more selected businesses of the one or more businesses that were individually selected by the first end user for retention. The second set of collection information may be compared with the first set of collection information associated with the first set of end users, and one or more similarities may be identified.
In an aspect, a system is provided for managing user-generated content associated with a plurality of users. The system can comprise one or more storage nodes configured to store a database that comprises a first table and a second table. The first table can be configured to store a first plurality of entries corresponding to a plurality of user-generated collections, each of the first plurality of entries including a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user. The second table can be configured to store a second plurality of entries corresponding to the plurality of user-generated collections, each of the second plurality of entries including a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users. The system can comprise one or more interface server communicatively coupled to the one or more storage nodes. The interface server can be configured to: receive a first request for a first collection, the first request including a first user identifier and a first local collection identifier of the collection, retrieve a first entry from the first table based at least in part on the first user identifier and the first local collection identifier, determine, based at least in part on a first role indicator associated of the first entry, that the first collection is owned by the respective user of the first entry, transmit the first entry as a response to the first request, receive a second request for a second collection, the second request including a second user identifier and a second collection identifier, retrieve a second entry from the first table based on the second user identifier and the second collection identifier, determine, based at least in part on a second role indicator associated of the second entry, that the second collection is followed by the respective user of the second entry, retrieve a third entry from the second table based at least in part on the second entry, and transmit the third entry as a response to the second request.
In some embodiments, the second entry can comprise a global collection identifier of the third entry and retrieving the third entry from the second table is based on the global collection identifier of the third entry. The role indicator of at least one entry of the first plurality of entries stored in the first table can further indicate whether the respective collection is shared with the respective user. The role indicator of the at least one entry of the first plurality of entries stored in the first table can further indicate whether the respective collection is shared with the respective user with read-only access or with write access.
In some embodiments, at least one entry of the first plurality of entries stored in the first table can further comprise a set of user identifiers corresponding to a set of followers for the respective collection. At least one entry of the first plurality of entries stored in the first table can further comprise a map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators, the one or more user identifiers correspond to one or more users that share the respective collection. At least one entry of the first plurality of entries stored in the first table can further comprise a set of business identifiers, each corresponding to a business that is included in the respective collection.
In another aspect, a method is provided for managing user-generated content associated with a plurality of users. The method can comprise storing a first table in a database, the first table configured to store a first plurality of entries corresponding to a plurality of user-generated collections, each of the first plurality of entries including a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user; storing a second in the database, the second table configured to store a second plurality of entries corresponding to the plurality of user-generated collections, each of the second plurality of entries including a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users; receiving a first request for a first collection, the first request including a first user identifier and a first local collection identifier of the collection; retrieving a first entry from the first table based at least in part on the first user identifier and the first local collection identifier; determining, based at least in part on a first role indicator associated of the first entry, that the first collection is owned by the respective user of the first entry; transmitting the first entry as a response to the first request; receiving a second request for a second collection, the second request including a second user identifier and a second collection identifier; retrieving a second entry from the first table based on the second user identifier and the second collection identifier; determining, based at least in part on a second role indicator associated of the second entry, that the second collection is followed by the respective user of the second entry; retrieving a third entry from the second table based at least in part on the second entry; and transmitting the third entry as a response to the second request.
In some embodiments, the method can further comprise receiving a third request to update a third collection, the third request including a third user identifier and a third collection identifier; retrieving a fourth entry from the first table based on the third user identifier and the third collection identifier; determining, based at least in part on the role indicator of the fourth entry, that the third collection is owned by the respective user of the fourth entry; updating the fourth entry according to the third request; receiving a fourth request to update a fourth collection, the fourth request including a fourth user identifier and a fourth collection identifier; retrieving a fifth entry from the first table based on the fourth user identifier and the fourth collection identifier; determining, based at least in part on the role indicator of the fifth entry, that the fourth collection is shared with the respective user of the fifth entry; identifying a sixth entry from the second table based at least in part on the fifth entry; and updating the sixth entry according to the fourth request.
In some embodiments, the method can further comprise determining that updating the sixth entry is allowed based at least in part on the role indicator of the fifth entry. The method can further comprise determining that updating the sixth entry is allowed based at least in part on a map of share permissions associated with the fifth entry or the sixth entry, the map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators, the one or more user identifiers corresponding to one or more users that share the respective collection.
In some embodiments, the fourth entry can comprise a set of user identifiers corresponding to a set of followers for the third collection and the method can further comprise causing update notifications to be provided to at least some of the set of followers regarding the update to the third collection.
In some embodiments, the sixth entry can comprise a set of user identifiers corresponding to a set of followers for the fourth collection and the method can further comprise causing update messages to be provided to at least some of the set of followers regarding the update to the fourth collection.
In some embodiments, the fourth request to update the fourth collection can comprise adding a business listing to the fourth collection and updating the sixth entry can comprise adding a mapping between a requesting user identifier and the added business listing.
In yet another aspect, one or more non-transitory, machine-readable media having machine-readable instructions thereon is provided for managing user-generated content associated with a plurality of users. The machine-readable instructions, when executed by one or more computers or other processing devices, can cause the one or more computers or other processing devices to: store a first table in a database, the first table configured to store a first plurality of entries corresponding to a plurality of user-generated collections, each of the first plurality of entries including a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user, and store a second in the database, the second table configured to store a second plurality of entries corresponding to the plurality of user-generated collections, each of the second plurality of entries including a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users; receive a first request for a first collection, the first request including a first user identifier and a first local collection identifier of the collection; retrieve a first entry from the first table based at least in part on the first user identifier and the first local collection identifier; determine, based at least in part on a first role indicator associated of the first entry, that the first collection is owned by the respective user of the first entry; transmit the first entry as a response to the first request; receive a second request for a second collection, the second request including a second user identifier and a second collection identifier; retrieve a second entry from the first table based on the second user identifier and the second collection identifier; determine, based at least in part on a second role indicator associated of the second entry, that the second collection is followed by the respective user of the second entry; retrieve a third entry from the second table based at least in part on the second entry; and transmit the third entry as a response to the second request.
In some embodiments, the second entry can comprise a global collection identifier of the third entry and retrieving the third entry from the second table can be based on the global collection identifier of the third entry. The role indicator of at least one entry of the first plurality of entries stored in the first table can further indicate whether the respective collection is shared with the respective user. The role indicator of the at least one entry of the first plurality of entries stored in the first table can further indicate whether the respective collection is shared with the respective user with read-only access or with write access.
In some embodiments, at least one entry of the first plurality of entries stored in the first table can further comprise a set of user identifiers corresponding to a set of followers for the respective collection. At least one entry of the first plurality of entries stored in the first table can further comprise a map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators, the one or more user identifiers correspond to one or more users that share the respective collection.
Further areas of applicability of the present disclosure will become apparent from the detailed description provided hereinafter. It should be understood that the detailed description and specific examples, while indicating various embodiments, are intended for purposes of illustration only and are not intended to necessarily limit the scope of the disclosure.



BRIEF DESCRIPTION OF THE DRAWINGS
The present disclosure is described in conjunction with the following appended figures.
FIG. 1 is a high-level block diagram of a system, in accordance with certain embodiments of the present disclosure.
FIGS. 2 and 2A-2E show diagrams of an architecture stack of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure, in accordance with certain embodiments of the present disclosure.
FIG. 3 is a block diagram of one non-limiting example of a client device that corresponds to a mobile communication device, in accordance with certain embodiments of the present disclosure.
FIG. 4 is a block diagram that illustrates an example method of certain aspects of a personalized business information orchestration, in accordance with certain embodiments of the present disclosure.
FIG. 5 is a block diagram that illustrates an example method of certain aspects of a personalized business information orchestration, in accordance with certain embodiments of the present disclosure.
FIG. 6 is a block diagram that illustrates an example method of certain aspects of a personalized business information orchestration, in accordance with certain embodiments of the present disclosure.
FIG. 7 illustrates a functional block diagram of certain aspects of personalized business information orchestration, in accordance with certain embodiments of the present disclosure.
FIGS. 8A, 8B, 8C, 8D, and 8E are screenshots illustrating example end-user interfaces, in accordance with certain embodiments of the present disclosure.
FIG. 9 is a screenshot illustrating an example end-user interface, in accordance with certain embodiments of the present disclosure.
FIG. 10 is a screenshot, which may be a partial screenshot, of an end-user interface that may be displayed after navigating/drilling down into a collaborative collection, in accordance with certain embodiments of the present disclosure.
FIG. 11 is an example of sharing collection information via social/business networking services account postings, in accordance with certain embodiments.
FIG. 12 is a screenshot, which may be a partial screenshot, of a public profile that may be displayed after selection of a link made available with posting, in accordance with certain embodiments.
FIG. 13 is a screenshot, which may be a partial screenshot, of the end-user interface that may be displayed after navigating to another user's public collections, in accordance with certain embodiments.
FIG. 14 is a screenshot, which may be a partial screenshot, of a search interface, in accordance with certain embodiments of the present disclosure.
FIG. 15 is a screenshot, which may be a partial screenshot, of a search interface with business-specific information that may be displayed responsive to user selection, in accordance with certain embodiments of the present disclosure.
FIG. 16 is a screenshot, which may be a partial screenshot, of an end-user interface, in accordance with certain embodiments of the present disclosure.
FIGS. 17A, 17B, and 17C are screen displays illustrating example end-user interfaces, in accordance with certain embodiments of the present disclosure.
FIG. 18 illustrates one embodiment of a merchant dashboard for an advertising platform that may correspond to a provider interface, in accordance with certain embodiments of the present disclosure.
FIG. 19 depicts a functional block diagram of certain aspects of end-user qualification, in accordance with certain embodiments of the present disclosure.
FIG. 20 depicts a functional block diagram of certain aspects of end-user data capture, analytics, and qualification, in accordance with certain embodiments of the present disclosure.
FIG. 21 illustrates one embodiment of an offer manager for an advertising platform that may correspond to a provider interface, in accordance with certain embodiments of the present disclosure.
FIG. 22 is a diagram of an exemplary environment with which embodiments may be implemented, in accordance with certain embodiments of the present disclosure.
FIG. 23 is a diagram of an embodiment of a special-purpose computer system, in accordance with certain embodiments of the present disclosure.
FIG. 24 depicts a functional block diagram of certain aspects of recommendation generation, in accordance with certain embodiments of the present disclosure.
FIG. 25 is a block diagram that illustrates an example method of offer provisioning where recommendations include offers for particular end users, in accordance with certain embodiments of the present disclosure.
FIG. 26 is a block diagram that illustrates an example method of facilitating features to allow a user of the platform to direct queries to other users, in accordance with certain embodiments of the present disclosure.
FIG. 27 depicts a functional block diagram of certain aspects of end-user qualification to facilitate querying, in accordance with certain embodiments of the present disclosure.
FIG. 28 depicts a functional block diagram of certain aspects of query recipient selection, in accordance with certain embodiments of the present disclosure.
FIG. 29 is an exemplary environment with which embodiments may be implemented is shown with a computer system that can be used by a designer to design, for example, electronic designs, in accordance with certain embodiments of the present disclosure.
FIG. 30 is an embodiment of a special-purpose computer system, in accordance with certain embodiments of the present disclosure.
FIG. 31 illustrates an exemplary environment in which a data storage system may be implemented, in accordance with embodiments.
FIG. 32 illustrates exemplary database tables used to store collection information, in accordance with embodiments.
FIG. 33 illustrates exemplary database columns or attributes used for storing collection information, in accordance with embodiments.
FIG. 34 illustrates an example process for implementing retrieval of collection information, in accordance with embodiments.
FIG. 35 illustrates an example process for implementing update of collection information, in accordance with embodiments.
FIG. 36 illustrates an exemplary environment for implementing user notification, in accordance with embodiments.



In the appended figures, similar components and/or features may have the same reference label. Further, various components of the same type may be distinguished by following the reference label by a dash and a second label that distinguishes among the similar components. If only the first reference label is used in the specification, the description is applicable to any one of the similar components having the same first reference label irrespective of the second reference label.
DETAILED DESCRIPTION
The ensuing description provides preferred exemplary embodiment(s) only, and is not intended to limit the scope, applicability or configuration of the disclosure. Rather, the ensuing description of the preferred exemplary embodiment(s) will provide those skilled in the art with an enabling description for implementing a preferred exemplary embodiment of the disclosure. It should be understood that various changes may be made in the function and arrangement of elements without departing from the spirit and scope of the disclosure as set forth in the appended claims.
Specific details are given in the following description to provide a thorough understanding of the embodiments. However, it will be understood by one of ordinary skill in the art that the embodiments maybe practiced without these specific details. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a data flow diagram, a structure diagram, or a block diagram. Although a flowchart may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
Moreover, as disclosed herein, the term “storage medium” may represent one or more devices for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “computer-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, wireless channels and various other mediums capable of storing, containing or carrying instruction(s) and/or data.
Furthermore, embodiments may be implemented by hardware, software, firmware, middleware, microcode, hardware description languages, or any combination thereof. When implemented in software, firmware, middleware or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as storage medium. A processor(s) may perform the necessary tasks. A code segment may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a class, or any combination of instructions, data structures, or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
Various embodiments according to the present disclosure may provide for windowing of business information on one or more of geographical, temporal, demographical, and/or social/business networking bases. Certain embodiments may provide an easy way for consumers to find and discover the best local merchants. Certain embodiments may allow consumers to see which local merchants are popular and trusted around them. Searching by a consumer may become more relevant and personalized to the consumer's history and business interests. Certain embodiments may provide one or more ways in which a user may organize the user's business relationship information and may automatically manage, update, and maintain relationship information in order to make the user's life a lot easier. Various embodiments may allow consumers to create and curate business information collections, add custom content to collections, get updates from the businesses of interest, see friends' recommendations, and see what businesses are trending in the consumer's local area(s) of interest.
A user's personalized business information may be retained in/with a local graph of merchants of interest to the user. Certain embodiments may allow for generating a local graph of merchants, organizing the local graph, augmenting the local graph, updating the local graph, exposing the local graph to the user, and/or sharing of the local graph with one or more third parties, which may include one or more other users. Certain embodiments may allow saving of listings information into one or more collections, and certain embodiments may automatically organize a user's listings into collections. By saving of listing information for later use, a user may readily retrieve listing information for businesses of interest. Certain embodiments may allow a user to retrieve the user's personalized business information from any suitable network-connected computing device so that the information is accessible to the user wherever the user may be.
In some embodiments, organization of business information into collections may be based on default criteria and/or user-specified criteria. As some potential non-limiting examples of collections, there may be a home collection, a garden collection, a pet collection, a family collection, a health collection, a kid's collection, a collection customized to a specific project, etc. A collection may allow for retrieval of listings at any time.
Business listing information associated with a collection may be automatically updated by the information handling system such that, when listing information is retrieved from a collection, the listing information may be updated information. Thus, a collection allows for the maintenance of listing information of interest to provide a user with the most up-to-date listing information for the businesses that matter to the user. And, thus, if a provider associated with a collection has moved or changed phone numbers, the user will not be left with obsolete information (as the user would otherwise be if such information was recorded into an address book) because the change may be captured so that the collection would be automatically updated with the new information.
Certain embodiments may provide an automated workflow to gauge a user's interests. The automated workflow may include a series of questions presented to the user, the answers to which, as provided by user selections, may indicate user interests. A user's interests may be used as one or more bases for prompting the user according to various embodiments disclosed herein.
Certain embodiments may provide the option for a user to create a custom collection. For example, a user could create a custom collection for a kitchen remodeling project. Providers that are helping, and/or could potentially help, the user with the project could be associated with the collection, with notes on them, indicia of whether the user likes particular providers or not, which providers have been contacted, information obtained from providers, which providers have been selected, etc.
A collection may allow for addition of notes by a user to a listing or a group of listings in the collection. Some embodiments could provide a preference indication feature and/or a rating feature for a user to rate a provider. The preference indication feature could include a user-selectable option allowing a user to indicate a preference for a provider in any suitable manner. The rating feature could include a user-selectable option presenting ratings for selection in any suitable manner.
Thus, a user can record notes about what might be interesting to the user. For example, the user may note having talked to so-and-so, and may generally keep track of various things related to one or more businesses of interest. For example, a user may be planning a project, say a kitchen remodeling project, and may wish to keep track of various aspects related to the project, such as impressions, progress, schedules, ideas, interactions, quotes, deals, and so forth, so that it is all in one place.
Certain embodiments may provide a user with reminders about various aspects of a collection, such as deals and offers, schedule reminders, how long it is been since the user interacted with a given business, whether the user needs to check in with a given business, and/or the like. Certain embodiments may help a user track interactions with businesses. Where the user has been and/or has not been recently may be tracked, for example. For example, the user's last interaction, whether it be a visit or otherwise, with a given restaurant could be tracked and logged with the business information for the restaurant in a particular collection. Such aspects could be managed for the user. As another example, a user's interaction with one or more dentists could be managed, such as the user's last cleaning, when the user was last searching for dentists, etc., and, based on such information, reminders and/or suggestions (such as other possible dentists of interest, for example, highly rated dentists in an area of interest to the user that the user may not have considered and which may have special offers) could be presented.
Certain embodiments may provide the option for a user to allow one or more collaborators to have access to a collection. A collaborator could be another user in some embodiments. An enlist option could be presented to the user to allow the user to enlist another user as a collaborator. A collaborator could have a viewing access and, in some embodiments, editing access and/or access to add content such that the collaborator may add notes, photos, preference indicia, ratings indicia, etc. Some embodiments may allow the user to determine a level of access granted to a collaborator. Certain embodiments may provide the option for a user to share a collection with a third party. Accordingly, the various embodiments directed to information sharing may facilitate organization and engagement with a local business community.
Certain embodiments may provide significant value to businesses through enabling a direct, but low-maintenance, relationships with consumers. Significant value to businesses may also be provided via a business platform that exposes market and consumer insights. Certain embodiments may provide businesses with visibility into their consumers and may provide an easy way to communicate and market to their customers, for example, by marketing events, pushing offers to customers, driving awareness of new products and services, responding to inquiries, etc. Embodiments may provide multiple customer touch points, which, in turn, may allow for better metrics and targeting.
Certain embodiments may provide business-specific recommendations to users. Certain embodiments may provide for harvesting of consumer data. The consumer data may be analyzed with respect to individual users. One or more categories for the individual users may be determined based on the analysis, and certain embodiments may facilitate the provisioning of business recommendations pertinent to the one or more categories to the individual users. The recommendations could be based at least in part on aggregated recommendations of other users. Information about recommendations of other users could be gathered, analyzed, and classified according to any suitable bases. For example, aggregated recommendations could be classified according to user types. Analysis of information about an identified user could entail comparing the user information to information about other users (e.g., to determine user similarities) in order to recommend businesses (e.g., others' favorite or otherwise preferred businesses) for the identified user to review. The system may then send indications to the identified user of subscribers regarding options corresponding to the rated content.
In a set of embodiments, recommendations could be based at least in part on demographic information. The demographic information could include information about income level, education level, lifestyle, age, family/household, home ownership, etc. Recommendations could be based at least in part on any suitable consumer-specific information. For example, such consumer-specific information could include information on whether the consumer is proximate to life milestones such as a graduation, a new job, a wedding, childbirth, purchasing a home, etc. Accordingly, certain embodiments may use cluster-based consumer data and/or user-targeted consumer data.
In a set of embodiments, one or more collaborative filtering algorithms may be employed to define similarities between businesses based at least in part on consumer data. One or more indexes may be created based on similarities between businesses. With respect to a particular user, the user may be identified based on user identification information and/or device identification information for a device that may be associated with a user. Information related to the user and/or specific to the user may be gathered and analyzed in view of the one or more indexes to match the user with a set of one or more recommendations.
The aggregated recommendation information could be anonymized in some embodiments so that one or more specific recommendations are offered to an individual user without revealing identities of other users from whom the one or more specific recommendations are derived. Though anonymized, a specific recommendation could be offered with a general characterization of the other users. As one example out of many possibilities, a recommendation for a dog owner in Glendale, Calif., could indicate that other dog owners in Glendale have a preference for a particular veterinarian.
In some embodiments, aggregated recommendation information may not be anonymized. Certain users of the platform may have public recommendation information. Real estate agents, for example, may curate a collection of local service providers relevant to those who have bought or in the process of buying a house in a particular area (such as recommended inspectors, handymen, and the like) and may wish to have such recommendations public. Accordingly, recommendations may not necessarily be anonymized.
In some embodiments, the recommendations may include a customized collection of advertising information for businesses. The customized collection may be automatically generated by the system for an individual user based on the analysis. The customized collection may be presented to the user as a curated collection with user-selectable options that allow the user to select and/or de-select recommended businesses for retention in association with the user. For example, the user may select one or more recommended businesses for additions to a new or existing collection of the user. As another example, the user may select a recommended collection for addition as a new collection or for addition to an existing collection.
A data storage system or service is provided to store and access data that is generated by the personalized information orchestration system (also referred to as personalization system) described herein. The data storage service can be configured to support storing, retrieving or querying, and updating of data such as user information, personalized content such as personalized business information and collection information, statistics information related to users, collections, businesses, and the like. The data model design of the data storage system may be configured to optimize performance associated with specific features or use cases of the personalized system such as following and/or sharing of collections. Additionally, the data storage system may be configured to detect and provide user notifications of triggered events.
Various embodiments will now be discussed in greater detail with reference to the accompanying figures, beginning with FIG. 1.
FIG. 1 depicts a high-level block diagram of a system 100, in accordance with certain embodiments of the present disclosure. The system 100 may allow for interaction between two or more of an interaction processing infrastructure 102 (sometimes referenced herein as interaction infrastructure 102), client interfaces 205, service tool interfaces 207, data acquisition interfaces 111, and/or media channel interfaces 114. As depicted, components of the system 100 may be communicatively coupled or couplable to one or more networks 108.
The one or more networks 108 may be a suitable means to facilitate data transfer in the system 100 and could include multiple networks and/or network components. In various embodiments, the one or more networks 108 may be implemented with, without limitation, one or more of the Internet, a wide area network (WAN), a local area network (LAN) such as one based on Ethernet, Token-Ring and/or the like, a wireless network (e.g., a network operating under Bluetooth®, any of the Institute of Electrical and Electronics (IEEE) 802.11 suite of protocols, and/or any other wireless protocol), a wireless local area network (WLAN), a cellular network, such as through 4G, 3G, GSM (Global System for Mobile Communications), etc., another wireless network, a gateway, a public switched telephone network (PSTN), and/or any other appropriate architecture or system that facilitates the communication of signals, data, and/or message. In various embodiments, the one or more networks 108 may transmit data using any suitable communication protocol(s), such as, without limitation, TCP/IP (transmission control protocol/Internet protocol), SNA (systems network architecture), IPX (Internet packet exchange), AppleTalk, and/or the like. In various embodiments, the one or more networks 108 and its various components may be implemented using hardware, software, and communications media such wires, optical fibers, microwaves, radio waves, and other electromagnetic and/or optical carriers; and/or any combination of the foregoing and/or the like. In some embodiments, the network 108 may include a telephone network that may be circuit switched, package switched, or partially circuit switched and partially package switched. For example, the telephone network may partially use the Internet to carry phone calls (e.g., through VoIP).
The interaction processing infrastructure 102 may facilitate searching of one or more information repositories in response to data received over the one or more networks 108 from any one or combination of the interfaces. In various embodiments, the interaction processing infrastructure 102 may include a set of devices configured to process, transform, encode, translate, send, receive, retrieve, detect, generate, compute, organize, categorize, qualify, store, display, present, handle, or use information and/or data suitable for the embodiments described herein. The interaction processing infrastructure 102 may be implemented in or with a distributed computing and/or cloud computing environment with a plurality of servers and cloud-implemented resources. The interaction processing infrastructure 102 may include processing resources communicatively coupled to storage media, random access memory (RAM), read-only memory (ROM), and/or other types of memory. The interaction processing infrastructure 102 may include various input and output (I/O) devices, network ports, and display devices.
In certain embodiments, the interaction processing infrastructure 102 may be communicatively coupled or couplable to one or more data sources via one or more data acquisition interfaces 111. The one or more data sources may include any suitable source of data to facilitate embodiments disclosed further herein. In various embodiments, the one or more data sources may include one or more of a database, a website, any repository of data in any suitable form, and/or a third party system. In various embodiments, the one or more data sources may correspond to one or more social media websites and/or photo-sharing websites. With some embodiments, the data sources may include one or more mobile computing device locator services that provide information regarding the location of one or more client devices 205 and/or 207 (depicted in FIG. 2A). With some embodiments, the data sources may provide various details relating to call data. With some embodiments, the data sources may provide caller name information from calling name delivery (CNAM), also known as caller identification or caller ID, may be used to determine particular details about the caller. With some embodiments, the data sources may provide information about the area of a caller. With some embodiments, the data sources may provide demographic data about an area.
In various embodiments, the data from the one or more data sources may be retrieved and/or received by the interaction processing infrastructure 102 via the one or more data acquisition interfaces 111 through network(s) 108 and/or through any other suitable means of transferring data. In some embodiments, the interaction processing infrastructure 102 and the data sources could use any suitable means for direct communication. According to certain embodiments, data may be actively gathered and/or pulled from one or more data sources, for example, by accessing a third party repository and/or by “crawling” various repositories. Certain data pulled and/or pushed from the one or more data sources may be transformed and the transformed data and/or other data generated based thereon may be made available by the interaction processing infrastructure 102 for users of client devices 205 and/or 207. In alternative embodiments, data from the one or more data sources may be made available directly to client devices 205 and/or 207.
In some embodiments, the one or more data acquisition interfaces 111 may be implemented in similar manner to interfaces 205 and/or 207 or any other suitable interface. In some embodiments, the one or more data acquisition interfaces 111 may include one or more application programming interfaces (APIs) that define protocols and routines for interfacing with the data sources. The APIs may specify application programming interface (API) calls to/from data source systems. In some embodiments, the APIs may include a plug-in to integrate with an application of a data source system. The one or more data acquisition interfaces 111, in some embodiments, could use a number of API translation profiles configured to allow interface with the one or more additional applications of the data sources to access data (e.g., a database or other data store) of the data sources. The API translation profiles may translate the protocols and routines of the data source system to integrate at least temporarily with the system and allow communication with the system by way of API calls. Data, as referenced herein, may correspond to any one or combination of raw data, unstructured data, structured data, information, and/or content which may include media content, text, documents, files, instructions, code, executable files, images, video, audio, and/or any other suitable content suitable for embodiments of the present disclosure.
According to certain embodiments, the interaction processing infrastructure 102 may include or provide a service management platform. A provider may access the interaction processing infrastructure 102 via a service tool interface 207. An end user may access the interaction processing infrastructure 102 via a client interface 205. The interaction processing infrastructure 102 may facilitate searching of one or more information repositories in response to information received over the network 108 from the client interfaces 205 and/or service tool interfaces 207.
The client interfaces 205 and/or service tool interfaces 207 may allow for transfer of and access to information in accordance with certain embodiments disclosed herein. In various embodiments, the client interface(s) 205 and/or service tool interface(s) 207 may include one or more suitable input/output modules and/or other system/devices operable to serve as an interface between a service provider(s) and the provider management platform. The client interfaces 205 and/or service tool interfaces 207 may facilitate communication over the network 108 using any suitable transmission protocol and/or standard. In various embodiments, the interaction infrastructure 102 may include, provide, and/or be configured for operation with the client interfaces 205 and/or service tool interfaces 207, for example, by making available and/or communicating with one or more of a website, a web page, a web portal, a web application, a mobile application, enterprise software, and/or any suitable application software. In some embodiments, a client interface 205 and/or service tool interface 207 may include an API to interact with the interaction infrastructure 102.
In some embodiments, a client interface 205 and/or a service tool interface 207 may include a web interface. In some embodiments, the client interface 205 and/or service tool interface 207 may include or work with an application made available to one or more interfaces, such as a mobile application as discussed herein. In some embodiments, the client interface 205 and/or service tool interface 207 may cause a web page to be displayed on a browser of a service provider. The web page(s) may display output and receive input from a user (e.g., by using Web-based forms, via hyperlinks, electronic buttons, etc.). A variety of techniques can be used to create the web pages and/or display/receive information, such as JavaScript, Java applications or applets, dynamic HTML and/or AJAX technologies. Accordingly, the interaction processing infrastructure 102 may have web site(s)/portal(s) giving access to such information, such as a provider portal.
In various embodiments, a client interface 205 and/or a service tool interface 207 may include providing one or more display screen images that may each include one or more user interface elements. A user interface may include any text, image, and/or device that can be displayed on a display screen for providing information to a user and/or for receiving user input. A user interface may include one or more widgets, windows, dashboards, text, text boxes, text fields, tables, grids, charts, hyperlinks, buttons, lists, combo boxes, checkboxes, radio buttons, and/or the like.
In certain embodiments, a client interface 205 and/or a service tool interface 207 may include a computing device of an end user and/or a service provider. In certain embodiments, a client interface 205 and/or a service tool interface 207 may include a mobile computing device that may be any portable device suitable for sending and receiving information over a network in accordance with embodiments described herein.
Certain embodiments may provide a multi-channel communication regime to coordinate multiple communication channels used by end users and providers. Multiple communication pipes within a communication pipe could be implemented according to certain embodiments. Some embodiments may implement a greater number of communication channels. For example, one set of channels could be used for a end user to request help, and one set of channels could be used for a provider to respond to the end user. The system can use web communication, text communication, voice communication, e-mail communication, push notification, and/or the like.
According to certain embodiments, the interaction processing infrastructure 102 may be or include a content provisioning platform. In some embodiments, the interaction processing infrastructure 102 may provide for the selection, generation, and provision of content objects to one or more client interfaces 205. In certain embodiments, providers may have content objects that may be placed in a web page made available to one or more client interfaces 205. In certain embodiments, providers may have content objects that may be displayed with an application made available to one or more client interfaces 205, such as a mobile application according to various embodiments. In some embodiments, placement of the content objects could be in accordance with one or more paid placement arrangements and one or more content presentation models.
Content objects may be included in a results page responsive to a keyword search initiated by an end user via, for example, a webpage and/or a mobile application. The search may be performed by an online search engine facilitated by the interaction processing infrastructure 102. A content object of provider may be included within a results page with results identified and/or compiled by the search engine and sent via the network 108 to the client interface 205 of the end user that initiated the search.
An end user, in various embodiments, may correspond to an end user of products, services, and/or information. A provider, in various embodiments, may correspond to (and may be variously referenced herein by) any one or combination of a service provider, a product provider, a merchant, a commercial entity (“entity”), an advisor, a representative, and/or the like. End users may use one or more client interfaces 205; providers may use one or more service tool interfaces 207.
FIG. 2 shows a diagram of an architecture stack 200 of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure. While architecture stack 200 is illustrated as having a particular structure, it should be understood that certain embodiments may include other structures, including those with more or less layers than illustrated, in varying orientations and divisions. The architecture stack 200 may be implemented across a plurality of systems and/or subsystems corresponding to the interaction infrastructure 102. In some embodiments, a multi-layer part of the architecture stack 200 may be implemented at a single system or device within the interaction infrastructure 102.
The different layers of the architecture stack 200 are described generally herein with reference to FIG. 2 and in detail with reference to subsequent figures. From a high level perspective, the architecture stack 200 may include an application and/or device layer 210, an application services management layer 240, and/or a master data management layer 265. The application and/or device layer 210, the application services management layer 240, and/or the master data management layer 265 may include or otherwise interface with any of various sublayers. In some embodiments, the application and/or device layer 210, the application services management layer 240, and/or the master data management layer 265 may share resources and services with any one or combination of sublayers; and, in some embodiments, certain sublayers may share resources and services with certain other sublayers.
The application/device layer 210 may include user devices and applications for interacting with the other elements of the architecture stack 200 via the elements of an interface layer 215. For example, the applications may include web-based applications, entity portals, mobile applications, widgets, and the like for requesting services from and/or otherwise accessing the interaction infrastructure 102. These applications may run on one or more user devices. The user devices may be any suitable user device as detailed herein.
The interface layer 215 of the architecture stack 200 may provide interfaces for a user device to interact with the other elements of the architecture stack 200. For example, clients, entities, administrators, and others serviced by and/or otherwise associated with the interaction infrastructure 102 may utilize one or more user devices interacting within the application/device layer 210 to request services and/or access from an application services management layer 240. In some examples, a web-based search interface, a mobile application search interface, an orchestration platform interface, a provider dashboard interface, and/or the like may be provided.
In various embodiments, the interface layer 215 may include or otherwise interface with any one or combination of an access management layer 220, a data acquisition layer 225, a media channel layer 220, a communications channel layer 235, and/or the like layer in accordance with embodiments disclosed herein.
The architecture stack 200 may include an access management layer 220. The access management layer 220 may include elements to manage access to services and/or data. For example, the access management layer 220 may include elements to verify user login credentials, IP addresses associated with a user device, device IDs, telephone numbers, locations, and/or the like in order to provide certain services and/or access.
The architecture stack 200 may include a data acquisition layer 225. In some embodiments, the data acquisition layer 225 may be included in the application services management layer 240. The data acquisition layer 225 may receive data from various data sources to facilitate various embodiments disclosed herein. The any one or combination of data sources disclosed herein and/or the like, with aggregation being facilitated in some embodiments with any one or combination of interfaces 205, 207, 111, 114 and/or client devices 205, 207.
The architecture stack 200 may include a media channel layer 220. The media channel layer 220 may provide interfaces for the interaction infrastructure 102 to utilize various media channels. For example, services may be provided to clients, entities, administrators, and others serviced by and/or otherwise associated with the interaction infrastructure 102 by way of media channels of many various types including websites, mobile applications, social/business network websites, cable and satellite television, telephone systems, video distribution, and print (e.g., newspapers and magazines).
The architecture stack 200 may include a communications channel layer 235. The communications channel layer 235 may provide interfaces for the interaction infrastructure 102 to centrally manage services based on real-time communications. For example, services may be provided to clients, entities, administrators, and others serviced by and/or otherwise associated with the interaction infrastructure 102 by way of tracking and/or handling of communications such as telephone calls, video calls, messages, chats, video conferencing, and/or the like in response to content objects presented through the various media channels.
In various embodiments, the application services management layer 240 may include or otherwise interface with any one or combination of a search engine services layer 245, a customized orchestration layer 250, a publication management layer 255, a communications management layer 260, and/or the like layer in accordance with embodiments disclosed herein. In various embodiments, the search engine services layer 245 may include elements to provide effective search services to end users, providers, and/or internal elements and/or users of the interaction infrastructure 102. In some embodiments, the search services may include geo-aware search services. The geo-aware search services may provide fast and efficient access to information tailored to particular geographies. In various embodiments, the master data management layer 265 may include or otherwise interface with any one or combination of an aggregation and transformation layer 270, a transformed data layer 275, a content management layer 280, and/or the like layer in accordance with embodiments disclosed herein.
FIG. 2A shows a diagram of a portion 200-1 of the architecture stack 200 of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure. The portion 200-1 at least partially includes the application/device layer 210, as wells as an application services system 241 and a data management system 266 of the interaction infrastructure 102. In some embodiments, the application services system 241 may correspond at least partially to the interface layer 215 and the application services management layer 240. In some embodiments, the data management system 266 may correspond at least partially to the master data management layer 265.
The application services system 241 may interface with the application/device layer 210 and the data management system 266. In some embodiments, the application services system 241 may include at least part of the application/device layer 210. The application services system 241 could be a middle tier of the interaction infrastructure 102 in some embodiments, with the data management system 266 corresponding to a back-end in some embodiments.
The application services system 241 and the data management system 266 each may be or include a server system 242 and a server system 267, respectively, that include one or more servers. In various embodiments, the server systems 242, 267 may include one or more computers, specialized server computers (including, by way of example, PC (personal computer) servers, UNIX® servers, mid-range servers, mainframe computers, rack-mounted servers, etc.), server farms, server clusters, or any other appropriate arrangement and/or combination. In various embodiments, the server systems 242, 267 may be adapted to run one or more services, operations, processing, or software applications described herein. The server systems 242, 267 may run an operating system including any of those discussed above, as well as any commercially available server operating system. The server systems 242, 267 may also run any of a variety of additional server applications and/or mid-tier applications, including HTTP (hypertext transport protocol) servers, FTP (file transfer protocol) servers, CGI (common gateway interface) servers, JAVA® servers, database servers, and the like. Exemplary database servers include without limitation those commercially available from Oracle, Microsoft, Sybase, IBM (International Entity Machines), and the like.
In some embodiments, the server systems 242, 267 may include one or more applications to analyze and consolidate data feeds and/or event updates received from various data sources. As an example, data feeds and/or event updates may include, but are not limited to, application 206, 208 updates, Twitter® feeds, Facebook® updates, updates (real-time and/or otherwise) received from one or more third party information sources and/or continuous data streams, which may include real-time events related to sensor data applications, and/or the like. The server system 242 may also include one or more applications to display the data feeds and/or real-time events via the client devices 205, 207 and/or devices internal to the interaction infrastructure 102.
The application services system 241 and/or the data management system 266 may also include one or more data stores 268. The data stores 268 may retain any data suitable for embodiments of this disclosure. The data stores 268 may include database(s), database management system(s), server(s) to facilitate management/provision/transfer of data related to embodiments of this disclosure. In various embodiments, the data stores 268 may be implemented in various ways. For example, one or more relational or object-oriented databases, or flat files on one or more computers or networked storage devices, may store the information.
The data stores 268 may reside in a variety of locations, such as on a non-transitory storage medium local to (and/or resident in) the server systems 242, 267 and/or remote from the server systems 242, 267 and in communication with the server systems 242, 267 via a network-based or dedicated connection. In certain embodiments, the data stores 268 may reside in a storage-area network (SAN). Similarly, any necessary files for performing the functions attributed to the server systems 242, 267 may be stored locally on the server systems 242, 267 and/or remotely, as appropriate. In one set of embodiments, the data stores 268 may include relational databases that are adapted to store, update, and retrieve data in response to SQL-formatted commands. It should be appreciated that information corresponding to the repositories may be stored elsewhere and/or in other ways, or may not be stored, depending on the implementations chosen. Likewise, while various segregations of data corresponding to the repositories are provided herein, it should be appreciated that such examples are non-limiting, and some or all the data may be handled in any suitable manner.
In certain embodiments, the interaction infrastructure 102 may be implemented in or with a distributed computing and/or cloud computing environment with a plurality of servers and cloud-implemented processing, memory, and data resources. Thus, with accretion of service information, the system may allow for scaling out with additional processing resources, server resources, data storage resources, data management resources, and the like. Some embodiments may use different types of servers to service different types of client device 205, 207.
The interaction infrastructure 102 may offer services provided by one or more components of the interaction infrastructure 102, and, in some embodiments, one or more of the services may be offered as cloud services. A specific instantiation of a service 202 provided by the interaction infrastructure 102 may be referred to herein as a service instance 202. In some examples, a service 202 provided by the interaction infrastructure 102 may include provisioning of content objects, facilitating real-time communications, exposing features of a provider platform, exposing features of an orchestration platform, providing protected computer network access to data generated and/or transformed, and stored by the infrastructure system 102, for example, via a hosted database, a hosted web server, a hosted application server, a software application, and/or the like. In certain embodiments, the interaction infrastructure 102 may include a suite of applications, middleware, and database service offerings that are delivered to clients and/or providers.
In the illustrated embodiment, one or more client devices 205, 207 may be used by users to interact with the interaction infrastructure 102. Although only a limited number of the client devices 205, 207 is shown, any number of client devices 205, 207 may be supported. In various embodiments, the client devices 205 and/or 207 may correspond to devices supporting and/or accessing a client interface 205 and/or a service tool interface 207. In some embodiments, the client devices 205 and/or 207 may correspond to devices supporting and/or accessing a data acquisition interface 111 and/or a media channel interface 114.
In various embodiments, the client devices 205 and/or 207 may be configured to operate a client application such as a web browser, a proprietary client application, a web-based application, an entity portal, a mobile application, a widget, or some other application, which may be used by a user of the client device 205, 207 to interact with the interaction infrastructure 102 to use services provided by the interaction infrastructure 102. The client devices 205 and/or 207 may be portable handheld devices (e.g., an iPhone®, cellular telephone, an iPad®, computing tablet, a personal digital assistant (PDA)) or wearable devices (e.g., Google Glass® device), running software such as Microsoft Windows Mobile®, and/or a variety of mobile operating systems such as iOS, Windows Phone, Android, BlackBerry 10, Palm OS, and/or the like, and being Internet, e-mail, short message service (SMS), Blackberry®, and/or other communication protocol enabled. In some embodiments, one or more of the client devices 205 and/or 207 can be general purpose personal computers including, by way of example, personal computers and/or laptop computers running various versions of Microsoft Windows®, Apple Macintosh®, and/or Linux operating systems. In some embodiments, one or more of the client devices 205 and/or 207 can be workstation computers running any of a variety of commercially-available UNIX® or UNIX-like operating systems, including without limitation the variety of GNU/Linux operating systems, such as for example, Google Chrome OS. Alternatively, or in addition, one or more of the client devices 205 and/or 207 may be any other electronic device, such as a thin-client computer, an Internet-enabled gaming system (e.g., a Microsoft Xbox gaming console with or without a Kinect® gesture input device), and/or a personal messaging device, capable of communicating over network(s) 108.
FIG. 3 is a block diagram of one non-limiting example of a client device 205 and/or 207 that corresponds to a mobile communication device 300, in accordance with certain embodiments of the present disclosure. The mobile communication device 300 may be a portable device suitable for sending and receiving information over a network in accordance with embodiments described herein. For example without limitation, in various embodiments, the mobile communication device 300 may include one or more variously referenced as a mobile phone, a cellular telephone, a smartphone (for example without limitation, a smart phone such as: the iPhone® phone available from Apple Inc. of Cupertino, Calif.; AndroidTM operating system-based phones, available from as Google of Mountain View, Calif.; and/or the like), a handheld mobile device, a tablet computer, a web pad, a personal digital assistant (PDA), a notebook computer, a handheld computer, a laptop computer, a vehicle computer, and/or the like.
In some embodiments, the mobile communication device 300 may be provided with a mobile application 351, which may correspond to a client application configured to run on the mobile communication device 300 to facilitate various embodiments of this disclosure. For example without limitation, the mobile application 351 may transform the mobile communication device 300 into a communication tracking facilitator. The mobile application 351 and the mobile communication device 300 may cooperate with the interaction infrastructure 102 to facilitate tracking and/or handling of communications (e.g., calls, messages, chats, video conferencing, and/or the like) in response to content objects presented through the mobile communication device 300. The mobile application 351 can be a computer program that can be installed and run on the mobile communication device 300.
In various embodiments, mobile communication device 300 configured with the mobile application 351 may provide one or more display screens that may each include one or more user interface elements. A user interface may include any text, image, and/or device that can be displayed on a display screen for providing information to a user and/or for receiving user input. A user interface may include one or more widgets, text, text boxes, text fields, tables, grids, charts, hyperlinks, buttons, lists, combo boxes, checkboxes, radio buttons, and/or the like. As shown in FIG. 3, the mobile communication device 300 includes a display 320 and input elements 332 to allow a user to input information into the mobile communication device 300. By way of example without limitation, the input elements 332 may include one or more of a keypad, a trackball, a touchscreen, a touchpad, a pointing device, a microphone, a voice recognition device, or any other appropriate mechanism for the user to provide input. Further, the mobile communication device 300 the input elements 332 may include a communication component reader 350 for accepting a communication component such as a SIM card 376.
In some embodiments, the interaction infrastructure 102 may provide content objects of any suitable type to a user of the mobile communication device 300 through the mobile application 351. The mobile application 351 can include a utility that communicates with the interaction infrastructure 102 to control downloading, displaying, caching, and/or other operations concerning the handling of content objects. The mobile application 351 and the mobile communication device 300 may cooperate with the interaction infrastructure 102 to facilitate communication tracking in response to content objects displayed through the one or more additional applications.
In some embodiments, the client device 305 and/or 307 may include one or more additional applications, for example, that may be provided by one or more publishers and/or may provide functionality relating to one or more publishers. A publisher may be any entity, including, for example, a news content provider, a social networking company, any entity, a gaming company, a music vendor, a multimedia content provider, and/or the like. Content objects (e.g., media objects, multimedia objects, electronic content objects, and/or the like) of any of various types may be displayed through the one or more additional applications. The mobile application 351 and the mobile communication device 300 may cooperate with the interaction infrastructure 102 to facilitate communication tracking in response to content objects displayed through the one or more additional applications. In some embodiments, the mobile application 351 could include a toolkit with client-side utility for interfacing with the one or more additional applications to facilitate tracking and/or call handling responsive to presented content. In some embodiments, the one or more additional applications could include the toolkit. In some embodiments, the mobile application 351 could be grafted into the one or more additional applications to provide tracking and/or communication handling functionalities. In some embodiments, the mobile application 351 could use a number of API translation profiles configured to allow interface with the one or more additional applications.
The user selection of a user-selectable option corresponding to a content object may involve any one or combination of various user inputs. The user selection may be in the form of a keyboard/keypad input, a touch pad input, a track ball input, a mouse input, a voice command, etc. For example, the content object may be selected by the user by pointing and clicking on the content object. As another example, the content object may be selected by an appropriate tap or movement applied to a touch screen or pad of the mobile communication device 300. The selection of a content object may initiate a voice call, video call, message, chat, and/or other communication. In some embodiments, a telephone number may be presented in content information in a format such that, when the user selects a communication reference, the client device (e.g., a cellular phone or a computer) dials a telephone number corresponding to the communication reference. For example, the call could have been initiated by end user selecting a click-to-call option displayed via the user device. In some embodiments, user devices can automatically dial the telephone number. For example, a Dual Tone Multi-Frequency (DTMF) generator can dial a phone number. In some embodiments, the user device may initiate the phone call through a VoIP system.
In some embodiments, the mobile application 351 can run continuously (e.g., in the background) or at other times, such as when the mobile application 151 is launched by an end user. In certain embodiments, the mobile application 351 can automatically run each time that a user accesses the one or more additional applications or selects a content object. The mobile application 351 may be provided in any suitable way. For non-limiting example, the mobile application 351 may be made available from the interaction infrastructure 102, a website, an application store, etc. for download to the mobile communication device 300; alternatively, it may be pre-installed on the mobile communication device 300. In some embodiments, the mobile application 351 can be pre-installed on the device platform by a mobile communication device manufacturer or carrier. In some embodiments, a mobile application 351 can be downloaded and installed by an end-user on their client device 305 and/or 307.
The mobile communication device 300 includes a memory 334 communicatively coupled to a processor 336 (e.g., a microprocessor) for processing the functions of the mobile communication device 300. The mobile communication device 300 may include at least one antenna 338 for wireless data transfer to communicate through a cellular network, a wireless provider network, and/or a mobile operator network, such as GSM, for example without limitation, to send and receive Short Message Service (SMS) messages or Unstructured Supplementary Service Data (USSD) messages. The mobile communication device 300 may also include a microphone 340 to allow a user to transmit voice communication through the mobile communication device 300, and a speaker 342 to allow the user to hear voice communication. The antenna 338 may include a cellular antenna (e.g., for sending and receiving cellular voice and data communication, such as through a network such as a 3G or 3G network). In addition, the mobile communication device 300 may include one or more interfaces in addition to the antenna 338, e.g., a wireless interface coupled to an antenna. The communications interfaces 344 can provide a near field communication interface (e.g., contactless interface, Bluetooth, optical interface, etc.) and/or wireless communications interfaces capable of communicating through a cellular network, such as GSM, or through Wi-Fi, such as with a wireless local area network (WLAN). Accordingly, the mobile communication device 300 may be capable of transmitting and receiving information wirelessly through both short range, radio frequency (RF) and cellular and Wi-Fi connections.
Additionally, the mobile communication device 300 can be capable of communicating with a Global Positioning System (GPS) in order to determine to location of the mobile communication device 300. The antenna 338 may include GPS receiver functionality. In other embodiments contemplated herein, communication with the mobile communication device 300 may be conducted with a single antenna configured for multiple purposes (e.g., cellular, transactions, GPS, etc.), or with further interfaces (e.g., three, four, or more separate interfaces).
The mobile communication device 300 can also include at least one computer-readable medium 346 coupled to the processor 336, which stores application programs and other computer code instructions for operating the device, such as an operating system (OS) 348. In some embodiments, the mobile application 351 may be stored in the memory 334 and/or computer-readable media 346. In some embodiments, the mobile application 351 may be stored on the SIM card 376. In some embodiments, mobile communication device 300 may have cryptographic capabilities to send encrypted communications and/or messages protected with message hash codes or authentication codes. Again, the example of mobile communication device 300 is non-limiting. Other devices, such as those addressed herein, may interact with the interaction infrastructure 102.
FIG. 2B shows a diagram of a portion 200-2 of the architecture stack 200 of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure. The portion 200-2 at least partially includes the interface layer 215, the access management layer 220, and the application services management layer 240. In some embodiments, the application services system 241 may correspond at least partially to the interface layer 215, the access management layer 220, and the application services management layer 240. While engines, repositories, and other components are described separately in this disclosure, it should be appreciated that the components may be combined and/or implemented differently in any combination to provide certain features in various embodiments. In various embodiments, different processes running on one or more shared resources may implement some of the components.
The interaction processing infrastructure 102 may include one or more network interfaces 211 communicatively coupled to one or more servers, which may include communication servers, web servers, gateways, application servers, database servers, and/or one or more other types of servers. The network interface(s) 211 may include any suitable input/output module or other system/device operable to serve as an interface between one or more components of the interaction infrastructure 102 and the network 108. The interaction infrastructure 102 may use the network interfaces 211 to communicate over the network 108 using any suitable transmission protocol and/or standard.
The interface layer 215 may include one or more interface engines 212. The interface engine 212 may be configured to generate one or more interfaces 205, 207, 111, 114 (e.g., web interfaces 213, mobile app interfaces 214, graphical user interfaces 216, enterprise application interfaces 217, programmatic interfaces 218, and/or the like) to enable data to flow to client devices 205, 207 via respective applications 206, 208. In various embodiments, the interfaces of interface engine 212 may be embodied in hardware and/or software. The interface engine 212 may include logic to send, present, and receive information, with one or more of the interfaces to/from one or more end users, service providers, and/or data sources. The interface engine 212 may utilize one or more network interfaces to transceive information through the network 108. The interaction infrastructure 102 may pull and/or push information from those entities.
Generally, interfaces may be configured to receive user input, present dynamic presentations that depend on user input, and otherwise respond to user input. In some examples, such input may be provided via one or more input devices (e.g., a keyboard, touchscreen, joystick, mouse, microphone, devices capable of capturing inputs, and the like) operated by one or more users of user devices. Output may be provided via one or more output devices (e.g., a display or speaker). The web interfaces 213 and mobile interfaces 214 may include any suitable web interface and mobile interface configured to interact with elements of the interaction infrastructure 102. The graphical user interfaces 216 may include any suitable graphical user interface configured to interact with elements of the interaction infrastructure 102. The enterprise interface 217 may include internal interfaces for accessing element of the interaction infrastructure 102 via an internal network of an enterprise. The programmatic interfaces 218 may include one or a combination of an API, a programmatic user interface, and/or other similar interfaces for defining core functions for accessing elements of the interaction infrastructure 102. A programmatic interface 218, for example, may specify software components in terms of associated operations.
Elements of the interface layer 215, for example, the interface engine 212, may communicate with calls and inputs directed to and/or received from the access management layer 220. In some embodiments, the access management layer 220 may include one or more identity management engines 219. Generally, the identity management engine 219 can be configured to provide identity services, such as access management and authorization services for end users and/or providers serviced by the interaction infrastructure 102. In some embodiments, the identity management engine 219 may control information about end users and providers that utilize the services provided by the interaction infrastructure 102. The control information may include information that authenticates the identities of end users and/or providers and that specifies authorized actions with respect to various system resources and services.
In some embodiments, the identity management engine 219 may include logic for implementing account features in various embodiments. By way of example without limitation, the identity management engine 219 may include logic one or more aspects of: handling user registration; managing account creation, updates, authentication, handling; and/or the like. The identity management engine 219 may be configured for acquiring, processing, formatting, and/or storing authentication information in the one or more authentication information repositories 257 (described further below).
In some embodiments, the identity management engine 219 may include a plurality of engines configured to manage different aspects of interacting with elements of the interaction infrastructure 102, such as user interactions with applications serviced by the interaction infrastructure 102. The engines may include, for example, an authentication access engine 221, a login engine 222, and a billing engine 223. The different engines of the identity management engine 219 can define routines, protocols, standards, and/or the like for interacting with elements of the interaction infrastructure 102. The authentication access engine 221 may evaluate rules and conditions under which users may access elements of the interaction infrastructure 102. These rules and conditions may be user-defined (e.g., by an administrator or reviewer), learned over time, and/or may be dynamically updated and/or evaluated based on characteristics of the user or the user's device attempting to access the interaction infrastructure 102. The login engine 222 may evaluate the rules and conditions under which users are able to log in to the interaction system or access applications associated with the interaction system. Thus, while authentication access engine 221 may evaluate the rules to determine which users may access the interaction infrastructure 102, the login engine 222 may evaluate the particular credentials, profiles, etc. associated with each authenticated user.
The application services management layer 240 may include one or more service management engines 224. The service management engines 224 may include one or more service orchestration engines 226, one or more service provisioning engines 227, and/or one or more service monitoring engines 228. By way of example without limitation, in some embodiments, a client device 205 or 207 running an application 206 or 208 may interact with the interaction infrastructure 102 by transmitting a service request 201 to the interaction infrastructure 102 for one or more services provided by the interaction infrastructure 102. In some embodiments, the service request 201 may be received via an interface facilitated by the interface engine 212. The service request 201 may be processed by the service management engine 224 and, consequent to the processing, information identifying one or more services and, in some embodiments, information uniquely identifying a user. The service orchestration engine 226 may utilize the information to orchestrate the provisioning of services and resources responsive to the service request 201. In some embodiments, the service orchestration engine 226 may orchestrate the provisioning of services and resources using the service provisioning engine 227. In certain embodiments, the service orchestration engine 226 may enable the management of processes associated with each service request 201 and may apply entity logic to determine whether and how a service 202 should be provisioned. The service orchestration engine 226 may send a request to the service provisioning engine 227 to prompt the service provisioning engine 227 to allocate resources and configure those resources needed for the service 202. The service 202 may be tracked by the service monitoring engine 228. In some instances, the service monitoring engine 228 may be configured to collect usage statistics for the services 202.
FIG. 2C shows a diagram of another portion 200-3 of the architecture stack 200 of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure. In particular, the portion 200-3 at least in partially includes the data acquisition layer 225, the aggregation and transformation layer 260, and the transformed data layer 275. The data acquisition layer 225 may receive data from components 229. In various embodiments, the components 229 may correspond to any one or combination of data sources disclosed herein and/or the like, with aggregation being facilitated in some embodiments with any one or combination of interfaces 205, 207, 111, 114 and/or client devices 205, 207. In some embodiments, the components 229 may include complimentary layers to facilitate data transmission, such as a transmission layer, generation layer, and/or a receiving layer to communicate and/or receive data via the data acquisition layer 225. In various embodiments, the input from the components 229 may correspond to any one or combination of raw data, unstructured data, structured data, information, and/or content which may include media content, text, documents, files, instructions, code, executable files, images, video, audio, and/or any other suitable content suitable for embodiments of the present disclosure. For example, data from 20, 200, or any number of different sources may be merged together with data generated internally, data previously received, data from third parties, etc. The data could relate to end users, providers, entities, geographic locations, demographic information, and/or the like. For example, the aggregation and transformation layer 260 may identify which data and records are about the same entity and may merge attributes from different sources into one composite object that can be used by the application services as a basis for services provided.
The aggregation and transformation layer 260 may provide a pipeline that processes data input from the components 229, applies rules, transforms the data, feeds the transformed data to the transformed data layer 275 and/or the application services management layer 240. The aggregation and transformation layer 260 may include one or more aggregation and/or transformation engines 231. In various embodiments, the aggregation and/or transformation engine 231 may correspond to an integral engine or separate engines working in conjunction. The aggregation/transformation engine 231 may transform, translate, or otherwise adjust data collected. In some embodiments, two or more of the components 229 may generate data according to different formats. The data can then be transformed, translated, or otherwise adjusted by the engine 231. For example, acquired data may be converted from a first format to a second format using one or more conversion rules, which may be user-defined, heuristic, and/or machine-learned. In some embodiments, the transformation engine 231 may perform similar operations with respect to other data generated by elements of the interaction infrastructure 102.
In some embodiments, the aggregation and/or transformation engines 231 may include one or more transformational adaptors 232. In some embodiments, one or more transformational adaptors 232 may be associated with the components 229 to effect the transformations. The transformational adaptors 232 may be implemented, in various embodiments, in hardware and/or software. In some embodiments, a transformational adaptor 232 may include a hardware device and/or software component that transforms, translates, converts, or otherwise adjusts the acquired data. In various embodiments, the adjustment operations may be executed within the data acquisition layer 225 and/or the transformation layer 260.
A consolidation engine 233 may process manifold data sets that may, for instance, come from different sources or the same source, for example, by way of one or more updates to data previously provided by a particular source, and the consolidation engine 233 may consolidate the data sets to form a composite data set. The consolidation may include organizing, categorizing, qualifying, and/or comparing the sets of information; detecting, identifying, and/or handling errors/discrepancies; and/or otherwise processing the data sets. In some embodiments, the consolidation engine 233 may identify subset of entities that are more important than the rest, may process data to identify relations to at least one entity of the subset of entities, and may process data having such relation first. In some embodiments, the consolidation engine 233 may only consolidate the data having such relation and may disregard and/or dispose of data that does not possess such relation.
With certain embodiments, a data integrity engine 234 with one or more processors may check data sets to ensure quality of the data. The data integrity engine 234 may assess each piece of information relating to an aspect (e.g., data relating to a listing of information for a entity, such name, location, reviews, ratings, etc.) and may assign a weight to the information according to a score. Any suitable scoring system may be used. Missing information, for example, could have a lower score than non-missing information; and the missing information could be scored even lower, the more important the information is to the aspect. Information may be weighted according to the source. For example, in some instances, information relating to a company that is gathered from the company's website may be weighted higher or lower relative to information gathered from a third party's website; tracking data gathered from an end-user device, for example, may be considered more reliable than corresponding/conflicting information from a third party directory service. Scoring profiles (e.g., compiled for end users, providers, entities, etc.) based the information based upon the underlying reliability of information may avoid provisioning of misdirected, redundant, unwanted, and/or unnecessary services.
In certain embodiments, the data integrity engine 234 may examine items of information and assign scores according to how important such information is to services, generally. The data integrity engine 234 may take into account service categories. Data pertinent to service categories may be prepared as a basis for provisioning services corresponding to particular categories. In certain embodiments, the data integrity engine 234 may adjust scoring of information in view of a specific services and/or specific categories of services. In certain embodiments, the data integrity engine 234 may examine items of information in view of a specific services and/or specific categories of services upfront, thereby rendering subsequent readjustment unnecessary. Based on the scoring, certain data may be discarded or flagged for possible follow-up and/or prompting for further information and/or clarifying information may be identified, generated, and/or provided. Accordingly, composite content can be made more reliably with possible follow-up and/or prompting for a data source to link to for more missing information.
In various embodiments, a rules engine 237 may be configured to create and manage entity rules, condition-response rules, alert/reports rules, data-formatting rules, data-sharing rules, transmission rules, aggregation rules, user authorization rules, and other similar rules. Such rules may be user-defined, fixed, heuristics, learned by elements of the interaction infrastructure 102, and any combination of the foregoing. In some embodiments, the rules engine 237 may be included in the consolidation engine 233. In some embodiments, the rules engine 237 may be separate from the consolidation engine 233.
A build engine 236 may assess quality of the data and/or the data sources. The build engine 236 may build one best data set that relates to a particular entity. In some embodiments, the build engine 236 may build multiple high-quality data sets that relate to a particular entity, but are tailored for different purposes (e.g., different locations, publisher channels, medial channels, and/or the like).
A feed engine 239 may be configured to process received input 238 from the aggregation/transformation engine 231. In some embodiments, the feed engine 239 may be integral with the aggregation/transformation engine 231. The feed engine 239 may generate one or more feeds 241 transferred to the transformed data layer 275 (e.g., for storage) and/or the application services management layer 240 (e.g., for more immediate use, by the publication management layer 255 or another application service). In some embodiments, the feed engine 239 may generate a single feeder 241—a universal feed object—to feed the transformed data layer 275 and/or the application services management layer 240. The feed engine 239 may feed transformed data (which may include transformed information and/or transformed content in some embodiments).
In some embodiments, the feed engine 239 may implement a feeding process that feeds transformed data (which may include information and/or content in some embodiments) based on a last finishing point of a previous feeding process. The feed engine 239, in some embodiments, may push the transformed data/content/information into one or more temporary indexes. In some embodiments, the feed engine 239 may further transform the transformed data/content/information into a feed object with a data-interchange format that facilitates parsing. The feed engine 239 and/or the aggregation/transformation engine 231 may translate the data into understandable data, information, and/or content. The transformed data, information, and/or content may be directed to certain tables and/or data stores 268 based on the type of and/or an entity category to which the data, information, and/or content relates. For example, in some embodiments, the master data management system 265 may manages provider content and feeds into search indexes and the publishing system.
The feeding process may include multiple processes, in some embodiments. For example, the feed engine 239 may spin out two processes: one process for communicating with a search server system 267(a); and one process for communicating with a document server system 267(b). The search server system 267(a) and/or the document server system 267(b) may process the temporary index and determine which data is absent from the data stores 268. Consequent to determining which data is needed, the data may be fed to the data stores 268.
In some embodiments, the data may be feed to the search server system 267(a) and/or the document server system 267(b) on a periodic basis (e.g., every 15 minutes or any other time period). The search server system 267(a), in some embodiments, may only retain in its search indexes information needed for retrieving content objects (e.g., documents) and ranking the content objects. Thus, with such embodiments, other information not necessary for retrieval and ranking (e.g., images corresponding to an entity). The document server system 267(b) may have every entity attribute indexed for information retrieval. This bifurcation may allow for the interaction infrastructure 102 to perform super-fast retrieval. The search server system 267(a), in some embodiments, may perform matching, sorting, and/or the like, and hence may be CPU heavy. The document server system 267(b), in some embodiments, may be a disk I/O intense system and can handle those kinds of loads.
FIG. 2D shows a diagram of another portion 200-4 of the architecture stack 200 of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure. The portion 200-4 may, in some embodiments, correspond to portions of the application services management layer 240 and the master data management layer 265; and, in accordance with some embodiments, at least part of the application services management layer 240 may at least partially correspond to the search engine services layer 245. As depicted in FIG. 7, the server system 242 may include one or more communication servers. The server system 242 may include one or more web and/or application servers 242(a), one or more email gateways 242(b), one or more instant messaging gateways 242(c), one or more telephone gateways 242(d), one or more other gateways 242(e), such as television gateways, and/or one or more other types of servers, such as an application gateway (not shown) to interface with different servers. Some embodiments may use one type of communication server 242, such as a web server 242(a), to receive search requests and another type of communication server 242 to provide the search results. Some embodiments may use different types of communication servers 242 to service different types of client devices 205, 207.
The web and/or application server(s) 242(a) (referenced hereafter as a web server 242(a)) may include one or more web server and/or one or more application servers, such as mobile app servers. In some embodiments, a web 242(a) may communicate with a client device 205, 207 via HyperText Transfer Protocol (HTTP) and/or other types of communication protocols, such as File Transfer Protocol (FTP), Wireless Application Protocol (WAP), etc. A web and/or application server(s) server 242(a) may provide static web pages, dynamic web pages, and/or web services. In some embodiments, a web server 242(a) may provide web applications to a client device 205, 207 for execution in a web browser running on the client device 205, 207; and the web applications may include scripts, such as Java, JavaScript, etc., for execution within an isolated environment in a browser. In some embodiments, the web server 242(a) may provide rich-client applications to the client device 205, 207; and the rich-client application may be programmed in traditional programming languages to have full access to functions of the operating system running on the client device 205, 207.
In some embodiments, the communication servers 242 provide a user interface for user interaction with content objects. For example, the web servers 242(a) may provide a user interface via static web pages, dynamic web pages, and/or web services, etc. For example, the web servers 242(a) may provide content objects with links to detail information pages of the provider information 249, such as a map, entity hours, driving directions, etc. The web servers 242(a) may provide user interfaces for the users to rate the content, provide reviews, view reviews from other users, etc. The web servers 242(a) may provide user interfaces to make reservations or to make purchases via the content objects. The web servers 242(a) can track various different types of user interactions with the content objects to determine or estimate the level of user interest in the content. The web servers 242(a) may provide rich client applications for execution in the mobile computing device to provide the user interfaces.
The communications server(s) 242 may be communicatively coupled to one or more information handling engines 243 that may provide functionality when executed by one or more servers to provide enhanced service handling features described herein. In some embodiments, one or more of the engines 243 and/or other modules may be servers communicating with other server(s) of the interaction infrastructure 102. The server communication may be over a network, such as an internal network, a local area network, a wide area network, an intranet, Internet, and/or the like. Any one or combination of the various servers may run on common or separate computers. In some embodiments, there may be one or more layers of application servers between communication servers and the data stores 268 to process the entity logic and data access of the rich client applications.
The information handling engines 243 may include one or more of a location engine(s) 244, a search engine(s) 246, a geo-aware spellchecking engine(s) 246A, a geo-aware autosuggestion engine(s) 246B, an area selector(s) 247, and/or a sort engine(s) 248 to process the search request and present search results based on the information stored in one or more data repositories 268. Other engines 243 may include and/or utilize the search engine 246 in various embodiments. In some embodiments, the search engine 246 may include logic for implementing searching the data stores 268 according to a search request. The searching may be in response to information received over the network 108 from a user. Responsive to a query, the search engine 246 may search, retrieve, modify, and/or cause transfer of particular information from one or more information repositories.
The one or more data repositories 268 may include provider information 249 about commercial entities or public end-user information, or other types of searchable end-user information. The one or more provider information repositories 249 may retain any local provider information (e.g., listings of provider information) suitable for embodiments of this disclosure, such as entity, product, and service information. In certain embodiments, the local provider information may correspond to directory information of the kind that may be available via Yellow Pages services and the like.
Provider information 249 of entities or people, such as restaurants, car dealers, retailer locations, gas stations, parking lots, plumbers, and the like, may have street addresses or other location parameters, such as longitude and latitude coordinates, stored as locations in one or more location information repositories 251. The provider information 249 may include addresses, telephone numbers, descriptive content, notifications, and/or end-user information, etc. Provider information 249 may be associated with locations 251. The locations 251 may be part of the provider information 249, or associated with the provider information 249. In some embodiments, the provider information 249 may include information related to entity entities at corresponding locations 251. The entities may be entities or people. Some of the entities may pay fees to promote their content. Some of the entities may have free promotion. In some embodiments, the provider information 249 may be accessible to the public or to registered members.
In some embodiments, the data repository(ies) 268 may include one or more end-user information repositories 252. In some embodiments, a client device 205, 207 may store end-user information 252. In some embodiments, both the client device 205, 207 and the online data repository(ies) 268 store the end-user information 252 for a particular end user. In some embodiments, when there is a data communication connection between the client device 205, 207 and the online data repository(ies) 268, the client device 205, 207 and the online data repository(ies) 268 may synchronize their copies of the end-user information 252 for the end user. The end-user information 252 may be associated with the corresponding end users. In some embodiments, an end user may create corresponding end-user information 252. The web servers 242(a) may generally limit the access to the end-user information 252 to those who created the corresponding end-user information 252.
In various embodiments, the data repository(ies) 268 may be implemented in various ways. For example, one or more data processing systems may store the information related to the provider information 249, the locations 251, and the end-user information 252. For example, one or more relational or object-oriented databases, or flat files on one or more computers or networked storage devices, may store the information related to the provider information 249, the locations 251, and the end-user information 252. In some embodiments, a centralized system stores the information about the provider information 249, the locations 251, and the end-user information 252; alternatively, a distributed/cloud system, network-based system, such as being implemented with a peer-to-peer network, or Internet, may store the information about the provider information 249, the locations 251, and the end-user information 252.
In various embodiments, one or more of the location engine 244, the search engine 246, the geo-aware spellchecking engine 246A, the geo-aware autosuggestion engine 246B, the area selector 247, the sort engine 248, and/or other modules may be stored in the one or more memories and may include one or more software applications, executable with the processors, for receiving and processing data requests. In some embodiments, one or more of the location engine 244, the search engine 246, the geo-aware spellchecking engine 246A, the geo-aware autosuggestion engine 246B, the area selector 247, the sort engine 248, and/or other modules may be servers communicating with the communication server(s) 242. The server communication may be over a network, such as a local area network, a wide area network, an intranet, Internet, and/or the like. Any one or combination of the various servers may run on common or separate computers. In some embodiments, there may be one or more layers of application servers between the communication server 242 and the data stores 268 to process the entity logic and data access of the rich client applications. Alternatively, application servers may be integrated with the communication servers 242, such as the web servers 242(a). Certain embodiments are not limited to a particular type of connections among the communication servers 242, the location engine 244, the search engine 246, the geo-aware spellchecking engine 246A, the geo-aware autosuggestion engine 246B, the area selector 247, the sort engine 248, the data repository(ies) 268, and/or other modules.
In some embodiments, one computer system implements one or more of the servers 242, the location engine 244, the search engine 246, the geo-aware spellchecking engine 246A, the geo-aware autosuggestion engine 246B, the area selector 247, and the sort engine 248. Alternatively, different processes running on one or more shared computers may implement some of the components 242, 244, 246, 246A, 246B, 247, and/or 248. For example, one computing module, thread, or process may implement multiple of the components. In some embodiments, special purpose data processing systems implement the one or more of the components, such as using Application-Specific Integrated Circuit (ASIC) or Field-Programmable Gate Array (FPGA). In some embodiments, processes running according to software instructions on general purpose data processing systems, such as general purpose personal computers or server computers, can implement the components. Thus, the implementations are not limited to hardware, software, or particular combinations of hardware and software.
One or more of the location engine 244, the search engine 246, the spellchecking engine 246A, the geo-aware spellchecking engine 246A, the geo-aware autosuggestion engine 246B, the sort engine 248, and/or other modules may be configured to perform any of the steps of methods according to the present disclosure. In some embodiments, the location engine(s) 244 may include one or more engines and may use GPS coordinates, cellular tower triangulation techniques, Wi-Fi-based location information, carrier-provided location information, and/or other location determination systems to identify a location of the client device 205, 207. In some embodiments, the location engine 244 determines a location of interest to the end user related to a search request. In some embodiments, the location engine 244 determines a location of interest to the end user related to a phone call initiated with the client device 205, 207. The location of interest may be based on a location of the client device 205, 207. In some embodiments, the end user may explicitly specify the location of interest in a search request; and the location engine 244 extracts the location of interest from the search request. In some embodiments, a location of interest may be based on end-user information 252 stored for a particular end user and associated with identification information of the end user or the client device 205, 207. In some embodiments, the end user may specify some or all of the end-user information 252.
In some embodiments, the location engine 244 may automatically identify the location of interest based on determining the current location of the client device 205, 207 that is used to submit a search request and/or initiate a phone call. For example, the location engine 244 may determine the location of the client device 205, 207 based on a connection point the client device 205, 207 used to access the network 108 (e.g., based on the location of a wireless network access point, a base station of a cellular communication system, or a connection point to a wired network). In some embodiments, the client device 205, 207 automatically determines its current position (e.g., via a satellite positioning system, or a cellular positioning system) and transmits the determined or estimated position to the web server 242(a) with the search request, or provides the position in response to a request from the location engine 244.
In some embodiments, the search engine 246 may retrieve content from the data stores 268 according to a search request. In some embodiments, the search engine 246 may include or otherwise be configured to use the geo-aware spellchecking engine 246A, and/or the geo-aware autosuggestion engine 246B. In some embodiments, the geo-aware spellchecking engine(s) 246A may be used with the string corresponding to the search request to identify corrections for misspellings in search strings and/or to otherwise account for spelling variations in order to provide results with a greater degree of relevance. In some embodiments, the geo-aware spellchecking engine(s) 246A may be used with the string corresponding to the search request to identify corrections for misspellings in search strings and/or to otherwise account for spelling variations in order to provide results with a greater degree of relevance. In some embodiments, the geo-aware autosuggestion engine 246B may be used with the geo-aware spellchecking engine(s) 246A, may include the geo-aware spellchecking engine(s) 246A, and/or may be otherwise configured to account for geo-aware spelling variations and to provide such geo-aware features in conjunction with the geo-aware suggestion features described herein.
In some embodiments, the sort engine 248 may rank content objects pertaining to providers in the search results according to the distance between the location of interest and the locations 251 corresponding to the provider, or according to current levels of user interest in the retrieved content. The web servers 242(a) may track various different types of user interactions with the content objects to determine or estimate the level of user interest in the content objects. The sort engine 248 may rank the content objects according to other criteria, in accordance with other embodiments described herein. In various embodiments, the search engine 246 may be configured to search for and/or correlate user data, provider data, location data, and/or other data, in accordance with various embodiments described herein. In some embodiments, the sort engine 248 may be used to provide sorting features in conjunction with the geo-aware suggestion features described herein.
In various embodiments, the area selector 247 may be configured to select areas of interest, in accordance with various embodiments described herein. In some embodiments, the area selector 247 may select a first geographic area based on the location of interest identified by the location engine 244. The search engine 246 may then retrieve a first set of content objects (which could include service provider information in some embodiments) that have corresponding location(s) within the selected first geographic area and that satisfies the search criteria. In some embodiments, if sufficient results are not found for the first geographic area, a second geographic area may be selected in an iterative process, which second area may or may not include the first geographic area, for searching. The first geographic area could correspond to a service area in some embodiments. In some embodiments, the search engine 246 may search for providers in a target area to obtain a set of search results; the area selector 247 may select geographic areas and selects groups of results that are within the selected geographic areas respectively. In some embodiments, the geo-aware autosuggestion engine 246B may be used with the area selector 247, may include the area selector 247, and/or may be otherwise configured to provide for such area selection features in conjunction with the geo-aware suggestion features described herein.
In some embodiments, the client device 205, 207 includes a web browser which allows the end user to submit a search request to one of the web servers 242(a) for location dependent information, such as a listing 252 of entities or people, such as restaurants, car dealers, retailer locations, gas stations, parking lots, plumbers, and/or the like. Alternatively or additionally in some embodiments, the client device 205, 207 includes a mobile application which allows the end user to submit a search request to one of the web servers 242(a) for location dependent information. Alternatively, the client device 205, 207 may provide the search request via other communication channels, such as email, short message service (SMS), instant messaging (IM), telephone connection, etc. For example, the client device 205, 207 may provide the search request to an email gateway 242(b) via email, or to an IM gateway 242(c) via instant messaging, or to a telephone gateway 242(c) via a telephone call, or to a television gateway 242(e) via an interactive television system. Some embodiments may use other types of gateways, such as gateways for SMS. Thus, the disclosure is not limited to the examples or combinations illustrated.
Certain embodiments may provide for associating listing information 249, location information 251, and prefixes 249′ for the listings of provider information. One or more indexes 253 for the associated provider information 249, location information 251, and prefixes 249′ may be built, updated, and maintained in some embodiments. In some embodiments, one or more inverted indexes 253 may be implemented. The one or more inverted indexes 253 may store mapping for the associated provider information 249, location information 251, and prefixes 249′. The one or more inverted indexes 253 may allow for faster information retrieval with search engine(s) 246 according certain embodiments.
In some embodiments, particular words may be stored in indexes 253. In some embodiments, each word may be linked to one or more documents, collections, files, fields, database structure/elements, or other forms of listing information that contain those words. In some embodiments, one or more inverted lists for each n-gram corresponding to the words may be created and may be associated with the words. For example, consider the string of “Max Bar & Grill,” which can be decomposed into 2-gram sets such as {‘ma’, ‘ax’, ‘x#’, ‘#b’, . . . } where # stands for a space; into 3-gram sets such as {‘max’, ‘ax#’, ‘x#b’, . . . }; and/or into other n-grams sets. In some embodiments, the decomposition may include word-level decomposition. Using the same example string of “Max Bar & Grill,” various n-gram sets could include {‘max’, ‘bar’, ‘grill’, ‘max bar’, ‘bar &’, ‘& grill’, ‘max grill’, ‘bar & grill’, . . . }, for example.
An inverted list for a given n-gram may include any and/or all instances of strings from a plurality of strings that contain the n-gram. In some embodiments, a list may include identifiers of strings, in lieu of actual strings, for mapping to actual strings. This may improve efficiency. The string identifiers could be unique identifiers.
In some embodiments, the indexes 253 may allow for approximate string matching at least partially based on decomposition of strings, such as into n-grams or words, and building inverted lists based on the decompositions. In some embodiments, inverted lists may be based on tokens or other identifiers associated with the n-grams or words. In some embodiments, similarity of strings may be measured in terms of similarity of the respective n-grams, words, and/or identifiers. In some embodiments, the indexes 253 may include a multiplicity of possible variations for various strings. For example, the example string of “Max Bar & Grill” can have multiple corresponding strings at the word level, such as “mac's bar & grill,” “mack's bar & grill,” “mac's bar 'n grill,” “max bar 'n grill,” “macs bar & grill,” “maxbar grill,” “maxbargrill,” etc. Thus, misspellings and spelling variations may be anticipated. Stemming may be used to allow for variations such as “sport bar” instead of “sports bar.” Including misspellings and spelling variations may allow for the capture of the relevant information. The same example string of “Max Bar & Grill” can have multiple corresponding strings at the character level for various n-gram sets in some embodiments. Accordingly, the indexes 253 may allow for prefix matching that is not too strict and, more generally, the indexes 253 may allow for fuzzy search engine capabilities.
Various embodiments may employ various similarity measures that may be tailored to facilitate linking to the indexes and/or retrieval of documents and/or listing information retained in any other suitable form, collection, file, field, database structure/element, etc. For example, TF/IDF (term frequency/inverse document frequency) may be used to assess the significance of a particular word/n-gram with respect to a particular document and/or with respect to particular strings. The IDF for each n-gram in one or more strings, such as strings within a database, dataset, or table within a database, may be determined. The IDF of a token or string is the inverse of the total number of times that this token or string appears in a data collection, such as a database. In some embodiments, an IDF may indicate a weight for weighted similarity measures.
In some embodiments, the search engine may employ similarity measures between multiple strings to allow for fuzzy searching. The search engine may process one or more characters corresponding to user input of a search string and parse the search string into sets of n-grams compared the search string with index information. For example, the characters of an incomplete user-entered search string could be “macs b”. The characters could be processed and decomposed into n-grams similar to the examples given above. The sets of characters could be compared to index entries to assess similarity using any suitable algorithm. Some embodiments may identify intersections between multiple sets and assigned a similarity score based on the extent of n-gram intersections between the search string and index entries, with a greater extent of an intersection of common characters indicating a greater degree of potential similarity between corresponding sets. For example, the search string “macs b” may be identified as a having a high extent of intersection with one or more index entries for “Max Bar & Grill,” which may include the variant “macs bar & grill.”
In some embodiments, the string length may be taken into account as a qualification for similar measures in order to allow for anticipatory/predictive auto-suggestion features discussed herein. In other words, the shorter length of the incomplete search string “macs b” with respect to the longer length of the index entries for “Max Bar & Grill” may be accounted for when assessing similarity. The disparity of lengths may not prevent identification of similarity. Hence, the high extent of intersection with n-grams of similar length and ordering associated with the n-grams of the first portion(s) of “Max Bar & Grill” may be identified even though the incomplete search string “macs b” may not have a high extent of intersection with subsequent portion(s) of “Max Bar & Grill.” However, comparable string lengths may also be considered in assigning greater similarity scores. For example, the incomplete search string “macs b” may have high similarity with index entries for “Max Bar & Grill,” but also with index entries for “Mac's Bar.” In such instances, the aspect of comparable lengths of the search string and “Mac's Bar” may be recognized as indicating even greater similarity and thus the similarity score between the two may be higher than the similarity score between the search string and “Max Bar & Grill.”
In some embodiments, a similar order of the intersecting sets may be taken as an additional indication of similarity. For example, a user-entered search string with “grill macs” may have a certain extent of character intersection with index entries corresponding to one entity, “Max Bar & Grill,” and may have a certain extent of characters section with index entries corresponding to another entity, “Grill Max,” however the orders of the intersecting sets may be recognized as being different with respect to these example cases. The ordering of n-grams of the search string “grill macs” has a greater correspondence to the ordering of n-grams of “Grill Max” than it does with respect to “Max Bar & Grill.” Accordingly, the search string “grill macs” may be accorded a greater similarity score with respect to “Grill Max” and a lesser similarity score with respect to “Max Bar & Grill.”
The above examples consider a entity name, however various embodiments may employ the same methods with respect to other types of listing information. For example, category and/or keyword strings can be decomposed in similar manner. Furthermore, entity names may be associated with various categories and/or keywords. For example, in some embodiments, sets corresponding to a given entity may include associated categories and/or keywords. Shingles of words associated with listings, service areas, and popular queries may be stored. In some embodiments, sets corresponding to a given entity may be linked to other sets of categories and/or keywords, for example, via pointers and/or other look-up tables. It should be understood that any suitable relational database approach may be used to associate the various sets and/or members thereof.
As addressed above, certain embodiments may provide a spellchecker service that is geo-sensitive. For example, for a search in the area of Monrovia, Calif., the geo-aware spellchecker 246A may recognize that an entry of “Plummer” should not be corrected to “Plumber.” To facilitate the geo-sensitive spellchecking, words corresponding to listings, and variations of the words, may be stored and linked to corresponding location information. The linking may be provided by way of the one or more indexes 253, with the word variations and locations being stored in inverted index(es) in some embodiments. Accordingly, with the word variations, the indexes 253 may store corrections for misspelled search strings in order to account for spelling variations. However, not all corrections make sense for a particular area, as in the example given above. To address that reality, the indexes 253 may be configured such that the linked location information allows for spellchecking tailored to a location of interest. The geo-aware spellchecker 246A may determine whether one or more corrections or an original query makes more sense in a particular area. Based on that determination, corrections which do not make sense in that area may be filtered out. Accordingly, the accuracy of spelling corrections may be improved, and false positives may be minimized.
The geo-aware spellchecker 246A may receive the search string and may identify one or more potential corrections for the search string. The geo-aware spellchecker 246A may look up the search string and the one or more potential corrections in the index(es) 253, comparing the search string and the one or more potential corrections to listing information for the identified location. If the search string is identified as a possibility for the particular location, then that may be an indication that the search string should not be corrected. If, however, the search string is not identified as a possibility for the particular location, then that may be an indication that the search string should be corrected. In some embodiments, a decision tree may be employed to check the search string first, then the most likely applicable potential correction, then the next most likely applicable potential correction, and so on until a positive indication is found in the index(es) 253. In some embodiments, the geo-aware spellchecker 246A may identify one or more potential corrections for the search string first in a geo-oblivious manner, and then analyze the potential corrections for applicability to an identified location. In some embodiments, the geo-aware spellchecker 246A may only identify a limited set of one or more potential corrections for the search string that are applicable to an identified location.
Certain embodiments may provide a clustering-based approach to facilitate the geo-sensitive spellchecking. Words corresponding to listings, and variations of the words, may be stored and linked to corresponding location information, where the location information may include location identifiers, such as latitude and longitude coordinates, for the listings. For example, entity names may be stored with coordinates for the entities. Then, clusters may be formed based on the location information. For example, when displayed on a map, entities with a given entity name (such as a chain of restaurants) may have multiple locations. Using any suitable clustering algorithm, one or more boundaries may be drawn or otherwise defined to surround one or more clusters of the entities.
The corresponding clusters of data may be used for verification of a search string and one or more potential corrections for the search string. The geo-aware spellchecker 246A may receive the search string and may identify one or more potential corrections for the search string. The geo-aware spellchecker 246A may look up the search string and the one or more potential corrections in the clustered data, comparing the search string and the one or more potential corrections to listing information in the cluster that corresponds to the identified location. Stated otherwise, the geo-aware spellchecker 246A may check if a word and/or n-gram is found in the cluster. If the search string is identified as a possibility for the particular location, then that may be an indication that the search string should not be corrected. If, however, the search string is not identified as a possibility for the particular location, then that may be an indication that the search string should be corrected. In some embodiments, a decision tree may be employed with the cluster, as discussed above.
As addressed above, certain embodiments may provide an autosuggestion service that is geo-sensitive. The autosuggestion service may provide type-ahead suggestions that are geographically relevant. As a user types a search query, the user may be presented with the type-ahead suggestions that are relevant to user's current geography and/or another geography of interest. Though reference is made herein to type-ahead suggestions and in some embodiments one or more suggestions could appear in the query field as a type-ahead suggestion, the term type-ahead suggestion could include other manners of presentation, such as over at least a portion of the query field, or beside the query field so that a user may accept a suggestion via selection of a space key, selection of an enter key, or any other suitable manner of selection. In some embodiments, the search engine 246 may configured with the geo-aware autosuggester 246B to effect a geo-aware autosuggest search engine. In some embodiments, the search engine 246 may include the geo-aware autosuggester 246B. In some embodiments, the search engine 246 may not include, but may be configured to work in conjunction with, the geo-aware autosuggester 246B. In various embodiments, the geo-aware autosuggester 246B may be integral with or independent of the search engine 246. In various embodiments, a geo-aware autosuggester 246B could be implemented separately or without the spellchecking module 246A. In some embodiments, the geo-aware spellchecking module 246A could be configured as a geo-aware autosuggester 246B such that autosuggestion features are an extension of spellchecking features.
The geo-aware autosuggester 246B could receive a series of search string characters and perform a lookup with the reception of each character or set of multiple characters. The lookup could be performed with one or more indexes 253. In some embodiments, one or more filters 254 could be used in conjunction with the one or more indexes 253. To facilitate the geo-aware autosuggestion, words corresponding to suggestions/listings, and variations of the words in some embodiments, may be stored and linked to corresponding location information. For example, suggestions/listings corresponding sets of words and/or n-grams may be linked to location information in the indexes 253.
The autosuggestion service may provide suggestions that are relevant to a geographical area(s) of interest. The suggestions may correspond to listings that in close proximity to an area of interest, as providing suggestions that are too far away from the area of interest may negatively impact the user experience. In providing suggestions, the autosuggestion service may allow for a quick response time so that suggestions are provided between key presses of a user. By way of example, the autosuggestion service may provide suggestions on the order of milliseconds or tens of millisecond in response to each character input. Given such constraints, it may be advantageous to divide geographical areas into multiple smaller areas. A code may be assigned to each small area, and that area code may be assigned to the suggestions relevant to that area.
Accordingly, the location information may include location identifiers. Linked information may be distinguished, segregated, and/or categorized based on location in any suitable manner, with any suitable location identifiers being used to link information to corresponding areas. In various embodiments, the location could have any suitable level of specificity, e.g., including a county, a municipality, zip code, school district, entity directory service area, and/or the like. For example, a zip code, a collection of zip codes, one or more listing service directory codes (which may correspond to particular telephone directory service areas, which service areas could be defined by zip code(s)), and/or the like may be used as a basis for linking information to a location.
FIG. 2E shows a diagram of another portion 200-5 of the architecture stack 200 of the interaction infrastructure 102, in accordance with certain embodiments of the present disclosure. The portion 200-5 may, in some embodiments, correspond to portions of the application services management layer 240 and the master data management layer 265; and, in accordance with some embodiments, at least part of the application services management layer 240 may at least partially correspond to the customized orchestration layer 250.
The customized orchestration layer 250 may include one or more of the information handling engines 243. The engines 243 may include one or more information orchestration engine(s) 256. In some embodiments, the information orchestration engine(s) 256 may include logic for implementing any features of personalized orchestration of entity information and/or user-specific services in various embodiments disclosed herein. In some embodiments, the information orchestration engine(s) 256 may facilitate an application on the end-user device to provide any such features. In some embodiments, the information orchestration engine(s) 256 may be incorporated in the application.
In certain embodiments, the information orchestration engine(s) 256 may be configured to compile keyword criteria, for example, in an ontology, and could include an ontology reasoner or semantic reasoning module to make logical inferences from a set of facts in the ontology. Accordingly, the information orchestration engine(s) 256 may correspond to a reasoning engine configured to effect one or more features described herein. A pattern-based reasoner could be employed to use various statistical techniques in analyzing interest data in order to make inferences based on the analysis. A transitive reasoner could be employed to infer relationships from a set of relationships related to interest data. In certain embodiments, the information orchestration engine(s) 256 may include logic for implementing workflow features in various embodiments.
In some embodiments, the information orchestration engine(s) 256 may include logic to implement and/or otherwise facilitate any taxonomy, classification, categorization, correlation, mapping, qualification, scoring, organization, and/or the like features discussed herein. In some embodiments, the information orchestration engine(s) 256 may include a matching engine 256(a) configured to facilitate one or more such features. For example, the matching engine 256(a) may be or include a classification engine configured to classify each of a plurality of entities into at least one category of a set of categories that represent classifications of entities based at least in part on one or more sets of attributes defined for classifying various entities. For example, information with respect to a particular entity may be analyzed in order to identify one or more entity attributes. The matching engine 256(a) can receive entity information, identify attributes of the entity based at least in part on the entity information, and match the entity to one or more categories based on category information retained in a repository. The entity may be matched to one or more categories that each represent classifications of entity sharing common attributes. In some embodiments, one or more taxonomies that map particular profile information to particular categories may be used in correlating entity profile information with one or more categories. The entity could be classified according to products and/or services that the entity provides. The entity could be classified according to location, for example, a market that the entity serves and/or a physical site of the entity. The entity could be linked to location identifier(s) (such as a directory code(s) relevant to the entity listing of the suggestion); geo coordinates corresponding to the entity (e.g., latitude and longitude); and/or the like.
As another example, the matching engine 256(a) may be or include a classification engine configured to classify each of a plurality of end users into at least one category of a set of categories that represent classifications of end users based at least in part on one or more sets of attributes defined for classifying various end users. As a further example, the matching engine 256(a) may be configured to process first information enabling unique identification of a particular end user, process second information about a first location corresponding to the end user, and match the end user to a first category from the set of categories.
In some embodiments, the matching engine 256(a) may be configured to match the user to one or more entities based at least in part on correlating categories. The matching could, in some embodiments, be based at least partially on comparing user attributes/categories with entity attributes/categories. For example, they may be matched according to preferences, certain biographical information, demographic information, interests, location information, etc.
Any suitable correlation process may be employed. A scoring system could be correlated to the category scheme in some embodiments, such that certain scores correspond to matches of certain categories. Some embodiments may score a match with a numerical expression, for example, a match score, with higher scores being assigned to higher correlations of user attributes/categories with entity attributes/categories. A high correlation may be identified using any suitable qualification scheme (e.g., a score threshold, a score ranking, etc.).
In some embodiments, the information orchestration engine(s) 256 may include one or more harvesting engines 256(b). In some embodiments, the harvesting engine 256(b) may include logic for implementing information logging features in various embodiments. In some embodiments, the harvesting engine 256(b) may be configured to gather data about an identified end user from one or more data sources. By way of example without limitation, the harvesting engine 256(b) could process data pulled and/or pushed from various entities. The harvesting engine 256(b) could handle process, extracting, formatting, and/or storing/recording data including data for indicia of interest, preference data, taxonomy data, mapping data, and/or the like. In some embodiments, the harvesting engine 256(b) may work in conjunction with the service monitoring engine 228; in some embodiments, the harvesting engine 256(b) may correspond in whole or in part to the service monitoring engine 228. The harvested data may then be analyzed to determine one or more attributes of the first end user.
In some embodiments, the information orchestration engine(s) 256 may include interest data analytics modules may include logic to retrieve, process, derive, compile, aggregate, handle, store, report, and/or present information relating to interest data. In some embodiments, the information orchestration engine(s) 256 may include one or more end-user data analytics engines 256(c) configured to facilitate one or more such features. In some embodiments, one or more data analytics engines 256(c) may include logic to retrieve, process, derive, compile, aggregate, handle, store, report, and/or present information relating to end-user data. The performance analytics engine(s) 256(c) may be configured to present any desirable information in any desirable manner. With respect to a particular provider, the logging engine(s) 256(b) and end-user data analytics engine(s) 256(c) may facilitate various features of one or more provider interfaces, in accordance with certain embodiments herein.
In some embodiments, the information orchestration engine(s) 256 may include one or more recommendation engines 256(d). The recommendation engine 256(d) may be configured to analyze end-user information 252 for particular end users and aggregated, classified provider information 249 to identify a set of one or more recommendations (e.g., of offers, entities to add to a collection, etc.). The recommendation engine 256(d) may generate one or more recommendations. Certain embodiments may identify recommendations based at least partially on similarities of characteristics of a first end user and characteristics of other users having associations with entities (e.g., having added the entities to their collections). Any suitable algorithm for assessing similarity may be employed. Some embodiments may identify intersections between multiple sets of characteristics. Having set intersections identified, the intersections may be compared. A greater extent of an intersection may be an indication of a greater degree of similarity between the users. In some embodiments, the sets may be ranked according to the extent of the intersections.
In some embodiments, the data stores 268 may include one or more authentication information repositories 257 may retain any authentication information suitable to facilitate security for embodiments of this disclosure. The authentication information repositories 257 may include database(s), database management system(s), server(s) to facilitate management/provision/transfer of authentication information, and/or the like. The repositories 257 may retain authentication information of one or more particular end users, providers, and/or other data sources. The authentication information may include information to check credentials of end users, providers, and/or other data sources that may use one of their corresponding interfaces to seek access, transfer information, and/or make entity-related transactions with the interaction infrastructure 102. The authentication information may be used to provide security for transactions, restrict the access granted to a certain set of information and/or features, implement certain control and/or features for certain parties, and/or the like.
In some embodiments, the one or more data stores 268 may include one or more taxonomy information repositories 258 to retain any suitable information associated with taxonomy feature in accordance with various embodiments disclosed herein. For example, one or more taxonomy information repositories 258 may retain mapping information, classification information, scoring criteria, and/or the like. Information retained in one or more taxonomy information repositories 258 may be used to classify user interest data/indicia, classify entities, map user interests, entities, and/or interest categories, and/or otherwise correlate and organize information in accordance with various embodiments disclosed herein.
As described above, the one or more provider information repositories 249 may retain provider information of particular providers. The repositories 249 may retain any information related to providers, including entities and people, which may have street addresses or other location parameters, such as longitude and latitude coordinates, maps, driving directions, and/or the like, stored as locations in one or more location information repositories 251. For example, one or more provider information repositories 249 may retain any information related to provider identification information, provider profiles, provider certification information, entity description, product descriptions, service descriptions, ratings/reviews/comments/preference indicia associated with providers, provider websites, provider authentication information, provider statuses, provider relationships, organization details, payment methods, accounting information, credit information, asset information, collateral information, address information, contact information, entity hours, availability, user account information, descriptive content, notifications, and/or the like.
In some embodiments, provider information may include local graph information 249(a). The local graph information 249(a) may include mapping information about a provider's connections to collections, windows, end users, and/or the like via the orchestration service. The local graph information 249(a) may include classification information about a provider and relation to user interest data and entity categories. Generally, the local graph information 249(a) may include any information to facilitate provider inclusion in the orchestration platform in accordance with various embodiments described herein.
Provider information may include analytics information 249(b). The analytics information 249(b) may include any performance information related to particular providers, including any end-user data analytics related to particular providers. Provider information may include offer information 249(c) retained for particular providers. The offer information 249(c) may include offers that particular providers have created, entity rules associated with provisioning offers to end users, and/or the like. Provider information may include linked account information 249(d). The linked account information 249(d) may include information about a provider's account(s) that are linked with the orchestration system, such authentication information for linked accounts, which accounts may include email accounts, short messaging accounts, online social/entity networking accounts, and/or the like. The analytics information 249(b), the offer information 249(c), and the linked account information 249(d) may include any information to facilitate various features of one or more provider interfaces, in accordance with certain embodiments herein.
The one or more end-user information repositories 252 may retain any suitable information associated with users in accordance with various embodiments disclosed herein. The end-user information may include end-user identification information, payment methods, accounting information, contact information, user account information, and/or the like. One or more end-user information repositories 252 may retain any information related to end-user location information 252(a), curation information 252(b), interest information 252(c) related to end user (which may include information related to indicia of interest), linked account information 252(d), and/or the like. The curation information 252(b) may include local graph information, which may include information about providers of interest, providers that have been added to a user's collection, geo-specific criteria for end user collections/profile, entity information otherwise associated with the end user (which may include collection followings, e.g.), notes by the end user, photos and/or other images associated with the end user, preferences of the end user, arrangement/organizational particulars for entity information associated with the end user, end-user requests, and/or any suitable information to facilitate any one or combination of the personal curation features described herein. The linked account information 252(d) may include information about an end user's account(s) that are linked with the orchestration system, end-user notification profiles, end-user authentication information, and/or any information to facilitate various features of one or more end-user interfaces, in accordance with certain embodiments herein.
In some embodiments, a client device 205, 207 may store end-user information 252. In some embodiments, both the client device 205, 207 and the online data stores 268 may store the end-user information 252 for a particular end user. In some embodiments, when there is a data communication connection between the client device 205, 207 and the online data stores 268, the client device 205, 207 and the online data stores 268 may synchronize their copies of the end-user information 252 for the end user.
FIG. 4 is a block diagram that illustrates an example method 400 of certain aspects of a personalized business information orchestration, in accordance with certain embodiments of the present disclosure. According to certain embodiments, the method 400 may begin as indicated by block 402. Teachings of the present disclosure may be implemented in a variety of configurations. As such, the order of the steps comprising the method 400 may be shuffled in any suitable manner and may depend on the implementation chosen. Moreover, while the following steps may be separated for the sake of description, it should be understood that certain steps may be performed simultaneously or substantially simultaneously.
One aspect of personalized business information orchestration may correspond to an end-user onboarding phase. The onboarding may include application initialization stage, as indicated by block 402. In some embodiments, the application could correspond to a webpage. In some embodiments, the end user could be using a mobile computing device. In some embodiments, a mobile application configured to run on a mobile computing device may be provided for the end user's mobile computing device. For example, the mobile application may be made available from the system 102 or any website for download to the mobile computing device; alternatively, it may be pre-installed on the mobile computing device and stored in the device's memory and/or computer-readable media. An end user installing a mobile application may correspond to initializing a client application on a computing device in some embodiments.
The end-user interface provided by the platform may facilitate the onboarding phase. In various embodiments, an end-user interface may include providing one or more display screens that may each include one or more user interface elements. An end-user interface may include any text, image, and/or device that can be displayed on a display screen for providing information to a user and/or for receiving user input. An end-user interface may include one or more widgets, text, text boxes, text fields, tables, grids, charts, maps, hyperlinks, buttons, lists, combo boxes, checkboxes, radio buttons, and/or the like.
FIGS. 8A, 8B, 8C, 8D, and 8E are screenshots illustrating example end-user interfaces 800, in accordance with certain embodiments of the present disclosure. FIG. 8A illustrates a graphical user interface 802 that may be used in implementations of certain embodiments of the present disclosure. FIG. 8A shows a screenshot, which may be a partial screenshot, of a search interface 802 that may be displayed via a mobile application or any suitable end-user interface 205 in various embodiments. In some embodiments, a webpage could implement a same or similar search interface, for example.
The search interface 802 can be displayed at a user device 300, for example. A query field 804 may be configured for input of keyword information for a search by a user, for example, via text entry and/or voice entry. In some embodiments, the search interface 802 may also include a location field 806 for location information to indicate a location of interest related to the keyword information for the search input by the user, for example, via text entry and/or voice entry. The location field 806 could automatically indicate a default location for the user automatically determined based any suitable location identification method, such as one or more of the location identification methods disclosed herein, including user history, a user profile, and/or the user's current location as detected by GPS, cellular positioning, network access point, and/or the like.
The search interface 802 can present user-selectable options 808 for quick searches according to any suitable category. The search interface 802 can present user-selectable options 810 related to one or more personalized collections of business information. The options 810 could correspond to an initialization process for a user to set up one or more personalized collections of business information; the options 810 could correspond to a navigational feature that enables the user to navigate to one or more personalized collections that have already been set up.
Referring again to FIG. 4, the onboarding phase of personalized business information orchestration may include a user profile stage, as indicated by block 404. A user profile may be created along with initialization of an application or embodiments for along with registering as a user via webpage in some embodiments. The user profile may be created automatically for the user, and user may be able to thereafter customize the profile. A user profile may include persistent information that is maintained about an end user. A user profile may include any data stored in an end-user information repository whether or not it is part of the profile as shown to an end-user via an end-user portal.
A personalized collection utility may include various features for identifying a user's interests. In some embodiments, as indicated by block 406, one or more questions may be presented to the user to gauge a user's interests. In certain embodiments, an automated question flow may present a series of questions presented to the user, the answers to which, as provided by user selections, may indicate user interests.
In some embodiments, organization of business information into collections may be based on default criteria and/or user-specified criteria. As some potential non-limiting examples of collections, there may be a home collection, a garden collection, a pet collection, a family collection, a health collection, a kids collection, a collection customized to a specific project, etc. A collection may allow for retrieval of listings at any time.
FIG. 8B illustrates a graphical user interface 822 for a personalized collection utility that may be used in implementations of certain embodiments of the present disclosure. FIG. 8B shows a screenshot, which may be a partial screenshot, of an interface that may be displayed via a mobile application or any suitable end-user interface 205 in various embodiments. In some embodiments, a webpage could implement a same or similar interface, for example. The personalized collection utility may provide one or more ways in which a user may organize the user's business relationship information. The personalized collection utility may automatically manage, update, and maintain relationship information in order to make the user's life a lot easier. Certain embodiments allow saving of listings information into one or more collections 824, and certain embodiments may automatically organize a user's listings into collections 824. By saving of listing information for later use, a user may readily retrieve listing information for businesses of interest.
In the example depicted, options or various collections 824 are presented, including a food collection option 826, a home collection option 828, a car collection option 830, and a shopping collection option 832. The options may be user-selectable options that enable a user to navigate to business information associated with each collection 824. A collection 824 may allow for retrieval of listings and/or other business-specific information at any time. In some embodiments, certain collection options could be presented to the user as a default, which the user may thereafter customize.
Referring again to FIG. 4, the onboarding phase of personalized business information orchestration may include a collection creation stage, as indicated by block 408. In some embodiments, a default set of collections could be presented to the user. In some embodiments, collection creation could include correlating responses, which were received from the user per the question flow, to interest categories/collections, as indicated by block 410. The most appropriate set of collections determined based on the responses may be suggested to the user, or the application could simply be configured to include the set of collections, and the user may thereafter customize the collections in any suitable manner.
As indicated by block 412, options for customization of collections may be presented to the user. And, as indicated by block 414, the collections may be populated with business information. Certain embodiments may provide the option for a user to create a custom collection. For example, a user could create a custom collection for a kitchen remodeling project. Providers that are helping, and/or could potentially help, the user with the project could be associated with the collection. Features could also be provided to the user to allow the user to make and retain notes related to the project, such as notes on the providers, indicia of whether the user likes particular providers or not, which providers have been contacted, information obtained from providers, which providers have been selected, etc.
FIG. 5 is a block diagram that illustrates an example method 500 of certain aspects of a personalized business information orchestration, in accordance with certain embodiments of the present disclosure. According to certain embodiments, certain aspects of the method 500 may be implemented in addition to or in alternative to certain aspects of the method 400. As indicated by block 502, indicia of user interests may be gathered. The personalized collection utility may include various features for identifying potential indicia of user interests.
In some embodiments, as indicated by block 504, one or more questions may be presented to the user to gauge a user's interests. This may correspond to block 406 of the method 400. Accordingly, an automated workflow may include a series of questions presented to the user, the answers to which, as provided by user selections, may indicate user interests.
Some embodiments may provide for porting and categorization of previously identified businesses of interest to the user from a user-created repository of information on businesses of interest, as indicated by block 506. Some embodiments may provide for options for user initiation of porting and categorizing; some embodiments may perform the process automatically. The application implementing the personalized collection utility may be configured with a plug-in, module, API, and/or otherwise to gather information from the end-user device and/or relate that information to the businesses of potential interest to the user.
In some embodiments, the personalized collection utility may include features for automatically identifying potential businesses of interest to a specific user based at least in part on user history information, as indicated by block 508. A particular user could have a history and/or profile associated with using search features facilitated by the business information handling system 102, for example, via a client application, a webpage, a mobile application, and/or the like. For example, businesses of potential interest may be identified from web browsing history information retained on the user computing device. Not only may businesses associated with the history and/or profile be identified, but also attendant business-specific information may be identified for population of collections. Some embodiments may provide for options for user initiation of gathering indicia from user history information; some embodiments may perform the process automatically.
In some embodiments, the personalized collection utility may include features for automatically identifying potential businesses of interest to a specific user based at least in part on business contacts of the user, as indicated by block 510. Some embodiments may provide for options for user initiation of gathering indicia based on business contacts; some embodiments may perform the process automatically. For example, business contacts retained on the user computing device (such as business contacts in an address book, a phone book, etc.) may be harvested.
Once one or more business contacts are identified based on harvesting of the user computer device and/or account, the backend system 102 may search for business information based on the identified business contact, supplying the application with pertinent updated information. In various embodiments, if the backend system 102 cannot confirm the identified business contact, the contact may be discarded or indicated as a potential business of interest needing clarification from the user. And more generally, in various embodiments, various indicia of interest may be captured, searched, correlated to logged business information, verified, updated, and/or used to gather additional related business-specific information by the application and/or the backend system 102.
In some embodiments, the personalized collection utility may include features for automatically identifying potential businesses of interest to a specific user based at least in part on user interactions with businesses, as indicated by block 512. Some embodiments may provide for options for user initiation of gathering indicia based on user interactions with businesses; some embodiments may perform the process automatically. Some embodiments may identify businesses of potential interest based on applications installed on the user computing device, such as mobile applications that are associated with particular businesses and/or business types. Some embodiments may identify businesses of potential interest based on phone call and/or messaging history information retained on the user computing device and/or available from other data sources. Some embodiments may identify businesses of potential interest based on email contact with businesses and/or business representatives. Some embodiments may identify businesses of potential interest based on calendar items related to appointments with businesses (such as hair appointments, nail appointments, dental appointments, etc.).
Some embodiments may identify businesses of potential interest based on user indications of preference (such as positive rating business, an indication of liking the business, friending or otherwise linking to a business, sharing business information with others, etc.) that the user has made via webpages and/or social media. Such indications of preference may be garnered from information associated with application on the user's computing device and/or via other data sources 110. The personalized collection utility may include features for automatically identifying potential businesses of interest to a specific user based at least in part on one or more other accounts of the user. The user's orchestration account could be linked (e.g., via API) to one or more other accounts of the user, including an account associated with online social/business networking services (which may include microblogging/short messaging services), an email account, and/or any other suitable data source 110. In some cases, the user may be prompted to login to the user's other account(s) to allow for the harvesting. In some cases, previously provided authentication information stored by the system 102 may be used so that logging in is not necessary to enable the harvest. Businesses of interest could be identified by approval/disapproval indicators, which may be in form of likes, dislikes, thumbs-up, thumbs-down, star-scale ratings, number-scale ratings, fan indications, affinity group association, messages to businesses, and/or the like. The approval/disapproval indicators could be those associated with the user's profile and/or profiles of friends/associates/connections of the user.
In some embodiments, the gathering of indicia of interest may support the generation of user profiles, and could be used to refine user profiles. In some embodiments, user profiles may be transferred from the application to the information handling system 102. In other embodiments, only information related to the profiles may be transferred to the backend system 102. The information handling system 102 may have profiles for businesses. As indicated by block 514, one or more collections may be created based on the gathered indicia of interest. As indicated by block 516, the gathered indicia of interest may be correlated to interest categories/collections. In some embodiments, the business profiles may include or be linked to one or more taxonomies that map particular businesses/business categories, particular interests/interest categories and/or particular questions for presentation to users.
As indicated by block 518, options for customization of collections may be presented to the user. As indicated by block 520, one or more collections-specific that questions may be presented to the user for identification of collection-specific businesses of interest. User-selectable options corresponding to interest categories may be presented for user selection. For example, options corresponding to categories such as my kids, my home, my pets, etc. may be presented to the user. The user-selectable options may allow the user to drill down into particular interest categories. For example, once a user taps into an individual collection, one or more questions may be presented to the user relating to the individual collection to help user set up that collection. Referring to FIG. 8B, for example, say a user taps the individual collection 828 relates to the user's category of “my home.” The user may be presented with a collection-specific graphical user interface 842, as illustrated by FIG. 8C, which shows a screenshot, which may be a partial screenshot for a personalized collection utility that may be used in implementations of certain embodiments of the present disclosure.
As indicated by 844, one potential question presented the user could be “Who's your plumber?” The question could be presented with options 848 for a number of actual plumber names, plumber business names, and/or other plumber listings for the user to select. The options 848 presented with the question could be identified based on gathered indicia of businesses of interest to the user and/or options near the location of the user, such as the nearest three or so plumbers. Though not depicted, the nearby options could be indicated on a map presented to the user with the interface 842. A text entry field 844 could allow the user to enter an indication of a plumber in response to the question. Along with such questions, a user-selectable option to skip 846 a given question or a series of questions may be presented. Referring again to FIG. 5, one or more businesses of interest may be associated with one or more collections based on user responses to the collection specific questions, as indicated by block 522.
In some embodiments, information harvested regarding a user may be used to infer potential businesses of interest to the user, as indicated by block 524. And such potential businesses of interest may be suggested to the user, as indicated by block 526. For example, if interest data indicates that a user has a pet, local businesses related to pets and/or that otherwise would only be of interest if one has a pet could be identified/suggested as potential businesses of interest. Similarly, if interest data indicates that a user is a parent, businesses that would only be of interest to parents could be identified/suggested as potential businesses of interest. As indicated by block 528, business information corresponding to businesses/potential businesses of interest may be organized into collections as discussed herein.
FIG. 6 is a block diagram that illustrates an example method 600 of certain aspects of a personalized business information orchestration, in accordance with certain embodiments of the present disclosure. According to certain embodiments, the method 600 may begin as indicated by block 602. Teachings of the present disclosure may be implemented in a variety of configurations. As such, the order of the steps comprising the method 600 may be shuffled in any suitable manner and may depend on the implementation chosen. Moreover, while the following steps may be separated for the sake of description, it should be understood that certain steps may be performed simultaneously or substantially simultaneously.
As indicated by block 602, an end-user may identify/confirm business information of interest. In some cases, a user may be performing a search with the application. FIG. 8D illustrates a graphical user interface 862 for searching for business information, in accordance with certain embodiments of the present disclosure. FIG. 8D shows a screenshot, which may be a partial screenshot, of an interface that may be displayed via a mobile application. In some embodiments, a webpage could implement a same or similar interface. Responsive to a search request by an end user, a set of businesses may be selected by the system 102 as corresponding to the user's search criteria, including location. The set of businesses may be compiled and presented to the consumer with as search results 864. Along with each search result 864, a user-selectable option 866 may be presented to the user so that upon user selection, e.g., a single click, a particular business may be added to the user's collections. Thus, in the example case, a specific business may already be identified by the system 102 prior to being presented to the user. In some cases, however, a specific business may need to be confirmed by the user, for example, when a suggestion has been identified based on gathered indicia of interest, and a potential business of interest is presented to the user.
As indicated by block 604, in some embodiments, the business information of interest may be correlated to a specific business if necessary. For example, when the business information of interest is not specific, is ambiguous, and/or corresponds to multiple businesses, a specific business may need to be identified based on the business information. The business information of interest could include one or more of gathered indicia of interest, responses to questions presented to the user, and/or interest categories.
As indicated by block 606, business-specific information may be associated with a particular collection. In some embodiments, the association may be according to a collection specified by the user, as indicated by block 608. In some embodiments, a user-selectable option may be presented to the user upon identification of a business of interest. For example, after a user selects an option such as option 866, a prompt could be presented to the user to indicate to which of the user's collections the particular business should be linked. In some embodiments, a user-selectable option could be presented for the particular business to be automatically correlated and linked with the appropriate collection. In some embodiments, the automatic correlation and linking of the particular business with the appropriate collection could be by default such that the user need not be prompted. Accordingly, as indicated by block 610, the business identifier or other business-specific information may be automatically correlated with a germane collection. In some embodiments, the user may be notified of the automatic correlation, and, as indicated by block 612, a user-selectable option may be presented to customize the association with the particular collection, in some embodiments.
As indicated by block 614, additional information pertinent to the specific business may be linked to the collection for presentation to the user. FIG. 8E illustrates a graphical user interface 882 for specific business information saved or savable in a collection, in accordance with certain embodiments of the present disclosure. FIG. 8E shows a screenshot, which may be a partial screenshot, of an interface that may be displayed via a mobile application. Business listing information 886 may be linked to the collection. The business listing information 886 may include address information, directions, ratings information, map information, business details, user reviews, coupons, etc. An indicator 884 may indicate that the specific business is saved in a collection or could be a selectable option to add the listing information for the specific business in a collection.
Referring again to FIG. 6, as indicated by block 616, business-specific information associated with a collection may be updated based on information from the information handling system 102. Business listing information associated with a collection may be automatically updated by the information handling system 102 such that, when listing information is retrieved from a collection, the listing information may be updated information. Thus, a collection allows for the maintenance of listing information of interest to provide a user with the most up-to-date listing information for the businesses that matter to the user. And, thus, if a provider associated with a collection has moved or changed phone numbers, the user will not be left with obsolete information (as the user would otherwise be if such information was recorded into an address book) because the change may be captured so that the collection would be automatically updated with the new information.
FIG. 7 depicts a functional block diagram of certain aspects of personalized business information orchestration 700, in accordance with certain embodiments of the present disclosure. Various embodiments may employ any one or combination of various methods of correlation of interest data, interest categories, and businesses.
Interest data may include any suitable information that may be captured via an interest data capture process 702 to indicate, infer, and/or determine interest categories and/or businesses of interest. As discussed herein, certain embodiments may use a client application 351 installed on the user's computing device to facilitate data capture. In some embodiments, the client application 351 may qualify captured data in part or in whole and/or send captured data to the information handling system 102 for qualification.
Having interest data, the information handling system 102 and/or the application 351 may implement a qualification process. Some embodiments may qualify an interest according to a graduated scale. Any suitable scale may be used in various embodiments. In some embodiments, a scale could entail a categorization scheme 714, with any suitable categories. In some embodiments, a taxonomy scoring system 712 could be correlated to the category scheme, such that certain scores may correspond to certain categories so that, based on a given set of interest data, a high correlation score to a particular category may indicate the category is more appropriate. Some embodiments may score with a numerical expression. Accordingly, a taxonomy score may indicate which categories are more/most likely to be appropriate for a user, thus providing a quantitative estimate of a user interest. By way of example without limitation, a scale could include a range of scores from 0 to 100, or from 0 to 1,000, with the high end of the scale indicating greater probability. Some embodiments may use methods of statistical analysis to derive a score. Various embodiments may determine a score based on any one or more suitable quantifiers.
Some embodiments may employ a decision tree, checklist, workflow, and/or the like to capture various aspects of interest data and assess those aspects to infer interest qualification. Such a decision tree, checklist, and/or workflow may incorporate any one or combination of the depicted aspects and/or similar aspects in any desired order, according to various embodiments. Interest data can be consolidated and processed to yield a taxonomy score 712.
Certain embodiments may provide for keyword processing 704 of gathered interest data, such as any data related to indicia of interest discussed herein. In some embodiments, an impression engine, which could be included in the engine(s) 243, could perform keyword identification. The call impression engine could be configured to recognize evidence of interest potential. Taxonomy scores 712 may be based at least in part on keywords gathered.
The impression engine may identify keywords as distinctive markings and could compile the keywords for the purposes of characterization from the perspective of interest potential. The keywords could be correlated with keyword criteria 708 to characterize the data from the perspective of interest potential and to generate correlation results 708 that can be taken into account with scoring 712. In some embodiments, the correlation results 708 can be taken into account in conjunction with other indicia 710, which could correspond to any one or combination of the other indicia of interest potential discussed herein such as location information and/or the like. As discussed herein, various embodiments may employ any one or combination of methods of capturing location information, including but not limited to, gathering location information via any one or combination of the user's computing device, such as the device GPS capabilities, access points, third parties, receiving explicit location information with one or more search requests, inferring location information from one or more search requests, and/or the like.
FIG. 9 is a screenshot illustrating an example end-user interface 900, in accordance with certain embodiments of the present disclosure. FIG. 9 shows a screenshot, which may be a partial screenshot, of the end-user interface 900 that may be displayed via any suitable end-user interface 205, which may correspond to a webpage or mobile application in various embodiments. The end-user interface 900 may correspond to an end-user's personal account that would be accessible to the end-user after login and authentication.
The end-user interface 900 may present user identification information 902 that may retain in the one or more repositories 268. In various embodiments, user identification information 902 may include, for example, the user's name/alias, one or more images associated with the user (such as, images uploaded by the user, more or less generic images selected by default, and/or images pulled from other data sources, such as the user's linked online social media account(s)), and/or the like.
The end-user interface 900 may be presented responsive to a request for user's personalized business information transmitted from the end-user computing device, such as a login request. The system 102 may access the user's personalized business information retained in the one or more repositories 268. In some embodiments, certain personalized business information may be retained locally on the end-user computing, and the local information may be synchronized/updated based on the information retained in the one or more repositories 268. In other embodiments, personalized business information may be freshly transmitted, in whole or in part, from the system 102 to the end-user computing device.
The user's personalized business information may be provided in according with the user's curation information. The personalized curation information may include geo-relevant graph information specific to the user. The geo-relevant graph information may include collection information that specifies one or more collection characteristics. The collection characteristics may include any suitable parameters defining aspects of the user's collections, including one or more of collection themes, associated business categories, information about location(s) of interest to the user, businesses windows mapped to the collections, arrangement information specifying a visual arrangement of collections to presented to user, custom content added and/or modified by the user and/or other users (such as notes, images, graphical customizations, editorial customizations, etc.), privacy attributes, and/or any other collection characteristics described herein.
The geo-relevant graph information may include window information that specifies one or more window characteristics. The window characteristics may include any suitable parameters defining aspects of the windowed information provided to the user, including one or more of specific businesses mapped to a given window, geo-specific criteria for the specific businesses, custom content added and/or modified by the user and/or other users (such as notes, images, graphical customizations, editorial customizations, etc.), privacy attributes, and/or any other window characteristics described herein.
In some embodiments, the system 102 may access a set of business information retained in the one or more repositories 268, the set of business information being related to businesses specified by the geo-relevant graph information. The system 102 may window the set of business information to at least partially form one or more windowed sets of information. The windowing could include one or more of identifying selecting, processing, compiling, arranging, and/or providing any pertinent business information for a particular business of interest described herein.
For example, in various embodiments, the windowing could include using geo-specific criteria to furnish information for a particular business location (e.g., one out of multiple location options, say, for a business chain or other business that has multiple sites), a particular provider and/or contact (e.g., one out of multiple provider and/or contact options for a particular business), and/or the like. The windowing could include selecting only particular information items that pertain to a particular window. In some cases, a user could modify the type of content desired for a particular business, and particular information items could be furnished accordingly. The windowing could include checking the set of business information for updated information (such as changes in contact information, location information, review information, and/or any other pertinent information).
In some embodiments, the windowing could include gathering user-generated content pertaining to a particular business, discussed further herein. In some cases, user-generated content was previously provided by the end user and retained by the system 102. In some cases, user-generated content was previously gathered, pushed, and/or pulled from data sources 110 and retained by the system 102. In some cases, user-generated content is actively gathered, pushed, and/or pulled from data sources 110 on an as-needed basis to freshly provide the content with the windowed set of information and/or to update/check content previously retained and that is to be provided with the windowed set of information.
In some embodiments, windowed sets of information may be formed and retained by the system 102 in anticipation of a request to provide the information to the user. In some embodiments, windowed sets of information may be formed responsive to a request. In some embodiments, previously formed windowed sets of information may be updated responsive to a request. In various embodiments, window information components may be compiled prior to transmission to an end-user computing device and/or may be transmitted separately.
In the example depicted, the end-user interface 900 may present the user's current collections 904, the curation of which is facilitated by the platform. The user's current collections 904 may be indicated in any suitable manner, including with images, color coding, alphanumeric indicia, and/or the like. A sorting feature 918 may allow for presentation of one or more user-selectable options to sort the collections 904 in any suitable manner, including according to activity (e.g., activity by the user, a collaborator, a business, business information updating via the system 102, review activity, activity by other users registered with the orchestration service and/or other users interacting about the particular businesses via online social media services, and/or the like), latest updates, latest additions of businesses to a collection, alphabetically according to collection name, number of businesses associated with a collection, collaborative/non-collaborative characteristic, public/non-public characteristic, and/or the like.
In some embodiments, like the example depicted, numbers of businesses associated with each collection may be indicated. For example, twenty-one businesses are indicated as associated with the collaborative collection directed to the Santa Monica Restaurant theme, in the collaborator section 908 and in the collection section 904 with indication of the Santa Monica Restaurant collection 914. And, generally, with presentation of collections 904, whether collaborative or not, numbers of businesses associated with each collection 904 may be indicated as in the depicted example (e.g., the Car collection is textually indicated as having seven associated businesses) or in any other suitable manner.
One or more user-selectable options may be available to the user to designate whether a collection is public or private. A private designation could be a default in some embodiments. If a collection is designated as public, the collection could be viewable/searchable to other users. In some embodiments, collections may be graphically distinguished in any suitable manner based on being public or private. The example depicted portrays illustrative graphical private collection indicators 924 and public collection indicators 926. A collection could also be designate as viewable/searchable to a select group of other users. For example, the select group could include other users individually selected by the user, other users who are also friends/associates via an online social/business networking service, other users who associated with a certain affinity group, and/or the like.
The end-user interface 900 may include one or more social panes 906. The one or more social panes 906 could include a collaborator section 908 for embodiments that provide the option for the user to allow one or more collaborators to have access to one or more collections. For example, a husband and wife may both curate a Kitchen Remodel collection, like the depicted example, in view of their kitchen remodeling project. As another example, a user may collaborate with another in planning a trip, say a tour of the West Coast, visiting whiskey bars along the way. To that end, the tourists could curate a West Coast Whiskey Bars collection, like the depicted example. Accordingly, the collaborator section 908 could include information about one or more collaborators that have access to one or more collections of the user.
The end-user interface 900 may be configured to indicate, not only collaborators, but also the particular collaborative collections. In the example depicted, Angela M. is indicated in the collaborator section 908 as a collaborator with Ricardo on a kitchen remodel collection and a Santa Monica Restaurant collection. Collaborative collections may be graphically distinguished from non-collaborative collections. For example, a graphical indicator 916 corresponding to the Santa Monica Restaurant collection may indicate the collaborative nature of the collection. However, collections may be distinguished in any suitable manner, including with images, color coding, alphanumeric indicia, and/or the like.
One or more user-selectable options may be provided to navigate to a collaborative or non-collaborative collection. For example, the user may tap or click into one of the collaborative collections 904 that is designated as being collaborative. FIG. 10 shows a screenshot, which may be a partial screenshot, of the end-user interface 900-1 that may be displayed after navigating/drilling down into a collaborative collection 1002. The example depicts a Kitchen Remodel collection 1002 relating to a remodeling project. The collection 1002 may include one or more curated information windows 1008, each corresponding to a business.
Each information window 1008 may present any suitable listing information for the respective business. In some embodiments, the listing information may be retained on the backend system 102 and provided to the user portal on demand. In some embodiments, the listing information may be retained on the user device 205 and updated by the backend system 102 on any suitable basis, including, for example, based on one or more of user login, user access of particular collections, launch of the application, a batch process, a real-time update when new information is available, and/or the like. In some embodiments, an information window 1008 may include advertisements from a business, images associated with a business, options for video/audio from a business for presentation to the user, a video/audio/textual chat option to connect with a business, a select-to-call option to connect with a business, and/or the like. An information window 1008 may include a directions feature 1012 configured to provide directions and/or mapping information consequent to user selection. The information may be provided in conjunction with a mapping application, resident on the device 205 and/or network-facilitated.
An information window 1008 may include a notes feature 1010 configured to allow the user to make and retain notes related to the provider, such as notes on the providers, indicia of whether the user likes particular providers or not, which providers have been contacted, information obtained from providers, which providers have been selected, etc. Any suitable content could be added in accordance with various embodiments. A user could add photos, for example. Say, a user has a photo of a desired kitchen design that the user wants to mimic for the user's kitchen remodel; the user could upload the photo to a kitchen remodel collection. In some embodiments, a user could import a photo from another account of the user, say a photo-sharing/repository account, an online networking services account, etc. The user could link to the other account as described herein, and a data collection utility provided by the orchestration account may be configured to port the photo(s) to the user's collection/window.
As another example, photos of one or more of a service need, a completed service, a service in progress, receipt(s), warranties, invoices, and/or the like could be uploaded to the orchestration account. Each photo may be time-stamped by the system 102 and retained in the one or more repositories 268 for later access and retrieval by the user. Accordingly, the platform may provide a way to have a filing system directed to services—a record system for the user. As described herein, a vendor could be a collaborator or could be otherwise enabled to view certain collections/windows of the user. In this manner, certain embodiments may provide an additional means to facilitate ongoing engagement with local vendors.
An information window 1008 may include a share feature 1014 configured to share an information window 1008 with others in one or more ways. For example, the share feature 1014 may include one or more user-selectable options to propagate the information window 1008 to another collection in some embodiments. Say, for example, that the user decides a particular business is appropriate for another collection of the user, the user can add the corresponding information window 1008 to the other collection via the share feature 1014.
As another example, the share feature 1014 may include one or more user-selectable options to share the information window 1008 with another user of the online orchestration service in some embodiments. In some embodiments, entire collections can be shared. The end-user interface 900-1 may include one or more collection share options 1020 configured to allow sharing of collection information in any suitable manner.
A window and/or collection could be shared with another user of the online orchestration service, for example, via a notification to an account associated with another user. Responsive to a share selection, the platform may send a notification to an account associated with another user. The notification could be provided via the other user's account. By way of example, the end-user interface 900-1 may include notification features 1016 that allow a user to be apprised of new notifications received as directed to the user, and allow the user to view the notification(s) upon user selection of one or more notification options. Thus, in the example depicted, the user, Ricardo, could receive a notification 1016, which could be a result of another user sharing an information window 1008 and/or collection 1002.
In various embodiments, the shared information could be at least partially viewed and/or incorporated into user's account with viewing of the notification 1016, with viewing a message corresponding to the notification 1016, and/or with selection of one or more user-selectable options provided consequent to the notification 1016. The presentation of shared information could be by way of summary information that summarizes and/or characterizes information from/relating to the shared collection. For example, summary information about the shared information could be generated and included for viewing with viewing of the notification 1016 and/or a message corresponding to the notification 1016. In some embodiments, the shared information could be viewed, at least in part, with selection of one or more user-selectable options provided with the notification 1016 and/or a message corresponding to the notification 1016. In some embodiments, one or more user-selectable options may be provided for incorporating the corresponding collection/information window into a collection of the user.
The share feature 1014, 1020 may include one or more user-selectable options to share the information window 1008 and/or collection 1002 with others via any suitable means of notification. For example, text messages, voice notifications, push notifications, e-mails, social/business networking services account postings/messages, alerts with the application, and/or other any suitable means could be employed to allow for the presentation of collection/window information. In some embodiments, the user's orchestration account could be linked (e.g., via API) to one or more other accounts of the user, say, an email account, for example. The end-user interface 900-1 may include linked account features 1018 that may allow for notifications of any communications received via the other account and/or may provide one or more user-selectable options to launch and/or otherwise access the other account.
The user's orchestration account could link to any suitable account of the user, including an account associated with online social/business networking services and/or any other suitable data source 100. And, thus, a posting about the business could be made in association with the user's account and/or another's account responsive to the user selection of the share option. In some cases, the user may be prompted to login to the user's social/business networking media account to make the posting. In some cases, previously provided authentication information stored by the system 102 may be used so that logging in is not necessary to make the posting in the other account. The share feature 1014, 1020 may be configured to facilitate the setup of the information sharing, whether it be a networking services account posting, an email, a text message, or otherwise, and present the communication setup for previewing and dispatch by the user. A link or other user-selectable option could be shared to allow for the viewing/incorporation of further collection information. In some embodiments, users who are not yet registered with the service could be invited to do so in conjunction with a collection sharing communication.
In some embodiments, a snapshot of a collection or a single window could be shared. The snapshot could take any suitable form, include an image, a text file, and/or the like. A share feature 1014, 1020 could present an option to send a snapshot, and, consequent to user selection, could convert a collection/window to a snapshot form and proceed with communication in a manner discussed above.
FIG. 11 shows an example 1100 of sharing collection information via social/business networking services account postings, in accordance with certain embodiments. Say, for example, the user, Ricardo, is asked about who did the work on his kitchen remodel. The user can share information about his Kitchen Remodel Collection via a posting 1102 to his social media account. The posting 1102 may include summary information 1104 about the collection. The posting 1102 may include one or more user-selectable options to view more collection information, to view collection information via the online orchestration service, to login/register with the orchestration service, and/or the like.
For example, one or more user-selectable options may be provided to navigate to a public profile accessible via the orchestration platform. FIG. 12 shows a screenshot, which may be a partial screenshot, of a public profile 1000-2 that may be displayed after selection of a link made available with posting 1102. The example depicts Ricardo's public Kitchen Remodel Collection 1102-1. The collection 1102-1, having been designated as public, could be a landing page viewable, for example, as a result of a user selection of a link from a posting 1102.
In some embodiments, one or more user-selectable options may be presented depending on the viewer. For example, login/registration options 1202 may be provided. For a registered user, a follow option 1206 may be provided to enable the user to follow Ricardo's collection. After the user opts to follow the collection, update notifications may be sent to the user based on subsequent actions taken with respect to the collection, such as collection curation, annotation, augmentation, and/or any modification of interest taken.
For a registered user, a copy option 1208 may be provided to enable the user to copy the collection 1102-1 to the user's set of collections. Once copied over to the user's collection set, the copy could become the user's collection. The user may then use and modify the collection as desired.
Referring again to FIG. 11, in some embodiments, user feedback from the social/business networking services may be captured by the system 102. For example, information about user approval/disapproval indicators 1106, which may be in form of likes, dislikes, thumbs-up, thumbs-down, star-scale ratings, number-scale ratings, and/or the like, could be captured. Captured user feedback could be processed and reflected back through the orchestration services platform. Thus, a certain collection and/or business may have accumulated user feedback from other for a and such feedback could be indicated via the user's collection(s) and/or information window(s) in any suitable manner.
Referring again to FIG. 10, the interface 900-1 may indicate user feedback data in any suitable manner. For example, an information window 1008 may include one or more user review indicators 1022. Similar review features could be provided on a collection basis, in addition or alternative to an individual business basis. The one or more user review indicators 1022 may include composite and/or segregated review information garnered from reviews via the listing service of the platform, online social/business networking service(s), the orchestration service, and/or any suitable data source(s) 100. In various embodiments, the system 102 may actively monitor, gather, push, and/or pull user feedback data from such sources in any suitable way. As a particular example of gathering user feedback on businesses, in many cases, businesses associated with the system 102 may have individual business pages setup for public viewing/interfacing via a one or more online social/business networking services and/or other data sources 100. In some cases, the system 102 may facilitate setup of such business pages for the businesses. User feedback data from such sources may be monitored, gathered, and/or pulled by the system 102.
When presented via the interface 900-1, the source of composite review information could be distinguished. For example, review information coming from the listing service could be so indicated, review information coming from social media could be so indicated, etc. Moreover, the types of review information could be differentiated. For example, say user feedback from one social media site includes feedback in the form of “like” indications; an information window 1008 could indicate the number of likes that the business received via that social media site over any time period(s) of interest (e.g., the past year, six months, month, week, day, hour, etc.). Thus, certain embodiments may provide for temporal windowing may allow a user to see businesses trending in the user's neighborhood, city, and/or other local area.
The example depicts the collection 1002 configured as having one collaborator, as indicated by 1004. A collaborator could be another user of the online orchestration service in some embodiments. In some embodiments, users who are not yet registered with the service could be invited to do so in conjunction with an invitation from a registered user to be a collaborator. One or more user-selectable options 1006 could be presented via the end-user interface 900-1 to allow the user to enlist collaborators, who may be registered users or who may not be registered. Responsive to enlist option selection, the platform may send a notification to an account associated with an invitee. In some embodiments, where an invitee is a registered user, the notification could be provided via the invitee's accounts. The end-user interface 900-1 may include notification features 1016 that allow a user to be apprised of new notifications received as directed to the user, and allow the user to view the notification(s) upon user selection of one or more notification options. Thus, in the example depicted, the user, Ricardo, could receive an invitation via a notification 1016. However, any suitable means of notification may be employed. For example, text, voice, e-mail, alerts with the application, and/or the like could be sent. In some embodiments, the user's orchestration account could be linked (e.g., via API) to another account of the user, say, an email account, for example. The end-user interface 900-1 may include linked account features 1018 that may allow for notifications of any communications (which communications are not limited to collaboration and registration invitations) received via the other account and/or may provide one or more user-selectable options to launch and/or otherwise access the other account. A notification could include a link or other communication reference referring back to the platform, prompting the invitee to respond. For example, the notification could provide a link for users to register and/or login to the platform to respond. In some embodiments, the invitee may respond via the same medium in which the notification was sent (e.g., text, voice, e-mail, etc.), and the system 102 may process the response, extracting requested information.
Some embodiments may allow the user to determine a level of access granted to a collaborator. In some embodiments, the access could be read-only access. Thus, the user could specify that one or more other users may only be allowed to view a certain collection. In addition to viewing access, the level of access could include write access. A collaborator could have editing access and/or access to add content such that the collaborator may add notes, photos, preference indicia, ratings indicia, additional business selections/information, etc. Accordingly, any changes that one collaborator makes to a collection may be reflected in the collection as viewed by one or more other collaborators.
A collaborator could be a service provider associated with one or more of the businesses designated in the collaborative collection. For example, a user might want a general contractor to be a collaborator on a project, which general contractor could be associated with a designated business or could be independent. Accordingly, such collaborators could help coordinate a project or otherwise provide input on a project. And, more generally beyond the example of a general contractor, any desired business provider could be a collaborator and be enabled to provide input.
Referring again to FIG. 9, the one or more social panes 906 could include a friends section 918 for embodiments that provide for interaction between the orchestration service and one or more online social media services (e.g., via API). A user may have the option to associate the user's orchestration account with one or more social/business networking services. One or more user-selectable options and workflows may be provided for the user to provide necessary authentication information for the user's other networking account(s) and to associate the other networking account(s). In some embodiments, the system 102 may retain the authentication information and link to the data sources 110 to coordinate interface with the other accounts, gather information from the user's particular account(s), and provide information for presentation via the end-user interface 900. Consequent to such association, the friends section 918 could identify friends and/or others that are linked to the user via social/business networking services. Additional information, such as whether certain friends/associates are logged in to the orchestration service and/or social/business networking services, could be presented via the friends section 918. Those friends/associates that have orchestration accounts could be distinguished from those that do not in any suitable manner.
In some embodiments, one or more user-selectable options may be provided to navigate to another user's account. The friend indicators in the friends section 918 could in include such options, for example. In addition or alternative, a search interface could be provided to search for other user accounts. FIG. 13 shows a screenshot, which may be a partial screenshot, of the end-user interface 900-3 that may be displayed after navigating to another user's public collections, for example, by selecting an option 1302 from the social panes 906. The example depicts public collections 1304 of another user, Jason. Accordingly, only those collections 1304 which have been designated as public would be viewable.
Referring again to FIG. 9, the one or more social panes 906 could include a collection following section 920. The collection following section 920 may identify public collections that the user has selected to follow. Additional information, such as update information or any other suitable information pertaining to the followed public collections, could be indicated, as well. Update notifications could be general or could be specific, indicating, for example, that business information has changed (new telephone number, new reviews, new ratings, a change in ratings of the business by third party organizations, a change in business profiles/webpages, etc.)
The user may be presented with options to search 922 for public collections of others. The search could be geo-aware such that public collections associated with the user's general vicinity could be searched. The option to search another vicinity of interest to the user could also be provided so that the user may indicate a different vicinity of interest. In some embodiments, options to input a trip, by starting point, endpoint, route, and/or otherwise may be provided so that the user could search for collections relevant to the trip. For example, a user may be interested in a tour of California wineries and may so indicate in order to search for collections pertaining thereto. Public collections could be selected for presentation to the user based at least in part on one or more of business location(s) in relation to a location of interest to the user, relevance of a business to an identified interest of the user, how many users are following the collections, positively trending collections with respect to a particular time period(s) (which trending could be based on collection additions, collection followings, ratings, and/or any suitable basis), activity in the collections, ratings of the collections, and/or the like. Certain public collections could be selected for presentation to the user as suggestions, though the user may not have actively searched for the public collections. Having found a public collection of interest, one or more user-selectable options may be presented to the user to peruse, share, incorporate into the user's collection(s) (selectively or in whole), and/or follow the collection.
FIG. 14 shows a screenshot, which may be a partial screenshot, of a search interface 1400 that may be displayed via a mobile application, webpage, or any suitable end-user interface 205, in accordance with certain embodiments of the present disclosure. A search feature 1402 may be provided with one or more of the end-user interfaces 800, 900, and/or the like. The search feature 1402 could be made available to registered users, non-registered users, and/or non-logged-in users. The search feature 1402 may include a query field and a location field, and may be the same or similar to search interface features described herein. Responsive to a search request by an end user, a set of businesses may be selected by the system 102 as corresponding to the user's search criteria, including location. The set of businesses may be compiled and presented as search results 1404.
In some embodiments, interest data, user preferences, curation characteristics, collection characteristics, demographic characteristics, business characteristics, profile types/characteristics, and/or the like that correspond to particular end users could be characterized by the system 102 and retained as user-specific profiles associated with various criteria (e.g., keyword criteria, taxonomy criteria, categorization criteria, etc.) that allow for correlation of multiple end users based on end-user characteristics. The system 102 could anonymize any of such information and could provide anonymous depictions of user preferences and profile types to help personalize the experience for a given end user and help find businesses that other users like the given end user enjoyed. User-selectable options for user-specific profile types, criteria, and/or any suitable characterization of other users could be presented via the search interface 1400 to allow for searching. For example, a user could search for other users that have interest in pets, children, or any suitable interest category, and be presented with anonymized search results for the user to see what businesses are of interest to those other users. A user could refine a search by demographic characteristics, location characteristics, interest data, user preferences, curation characteristics, collection characteristics, business characteristics, profile types/characteristics, and/or the like. In some embodiments, the system 102 may automatically search on behalf of the user, without user selection, and present search results as suggestions to the user. The search results could anonymously indicate any suitable characterization of the other users.
In some embodiments, certain public collections could be selected for presentation to the user with the search results 1404. In some embodiments, the collection could be selected as suggestions, though the user may not have actively searched for the public collections. One or more user-selectable options may be presented to the user to peruse, share, incorporate into the user's collection(s) (selectively or in whole), and/or follow the collection.
In some embodiments, with respect to particular business listing in the search results 1404, an indicator 1406 may indicate whether a particular business listing is in a collection by other users and may further indicate a number of users who have added the particular business listing to a collection. Such information indicated by the collection addition indicators 1406 may lend a measure of credibility and trustworthiness to a business; an addition to one's collection indicates a willingness/desire to engage with a business.
Some embodiments may provide a map view 1414 of search results. The map view 1414 could indicate search results depicted in a vicinity of a reference location 1416 that corresponds to the location of interest. Collection addition indicators 1418 could be positioned on the map view 1414 to indication business locations corresponding to the search results. The collection addition indicators 1418 may each indicate a number of users who have added a particular business listing to a collection. In some embodiments, the collection addition indicators 1418 may correspond to a set of the most relevant search results, and relatively less relevant search results could be indicated by different collection addition indicators 1420. The indicators 1418 and 1420 could be graphically distinguished in any suitable manner, including with images, shape differentiation, color differentiation, alphanumeric indicia, and/or the like. One or more of the indicators 1418 and 1420 could correspond to user-selection options that allow a user to view further details and/or adding businesses to collections consequent to selection of a particular indicator. In some embodiments, the map view 1414 and/or a similar map interface may be provided to allow for interactive searching and adjustment in order to find businesses of interest for addition to collections.
In some embodiments, one or more user-selectable options may be provided for refining location criteria for the collection addition indicia. For example, a user may be able to indicate a range, such as a radius of X miles from specified location of interest. In some embodiments, a user could indicate an area of interest with any suitable parameters, e.g., including one or more counties, municipalities, zip codes, distances from reference points, etc. In some embodiments, a user-selectable map interface may be presented, enabling user to define an area by selecting one or more points on the map interface. For example, predefined service areas, such as zip codes and/or the like, could be presented on the map for selection. The map interface could allow a user to define a perimeter of a service, e.g., by drawing on the map with a line drawing tool, cursor, finger/stylus contact with a touch interface, selection of perimeter boundaries such as roads, rivers, etc. Hence, collection addition indicia may be location-specific and refined to any suitable degree of granularity to provide enhanced relevance.
A user logged in to the orchestration platform could have a linked social/business networking services account. And, in some embodiments, with respect to a particular business listing in the search results 1404, an indicator 1408 may indicate whether a particular business listing has been added by others who are friends/associates/connections of the user via an online social/business networking service, other users who associated with a certain affinity group, and/or the like. Thus, certain embodiments may surface user-generated content from social graphs in order add a trust factor for consideration of particular businesses, if applicable. The network-specific addition indicators 1408 may be differentiated from more general collection addition indicators 1406 in some embodiments in order to add trustworthiness differentiation, as an addition of a business to personal collection by social media friends may be considered as an endorsement and may further allow reaching out to the others for further information if desired.
User-selectable options may be presented to the user with search results to allow a drill-down to more specific information for a particular business. FIG. 15 shows a screenshot, which may be a partial screenshot, of a search interface 1400-1 with business-specific information 1502 that may be displayed responsive to user selection, in accordance with certain embodiments of the present disclosure. With respect to a particular business, the business-specific information 1502 may include any one or combination of information items and/or features described herein. A user-selectable option 1504 may be presented to the user so that upon user selection, e.g., a single click, a particular business may be added to the user's collections. A collection addition indicator 1506 may indicate whether a particular business listing is in a collection by other users and may further indicate a number of users who have added the particular business listing to a collection. A network-specific indicator 1508 may indicate whether a particular business listing has been added by others who are friends/associates of the user via an online social/business networking service, other users who associated with a certain affinity group, and/or the like. In some embodiments, the network-specific indicator 1508 may include images of the friends/associates scraped from the social/business networking service.
The business-specific information 1502 may include a friends/associates review window 1510 that surfaces review content by the user's friends/associates gathered from one or more online social/business networking services. The system 102 may actively monitor, gather, push, and/or pull review content from one or more online social/business networking services in any suitable way. In some embodiments, like the example depicted, the review window 1510 may surface individual review content, that is, content from an individual friend/associate of the user. The review content may include any one or combination of reviewer identification information, ratings, review comments, preference indicia, date information, and/or the like. The review content may be gathered from business pages associated with the one or more online social/business networking services in some cases. In some embodiments, review content may be gathered from business websites, with the reviewers being correlated to the user as being related via the online social/business networking services.
FIG. 16 shows a screenshot, which may be a partial screenshot, of an end-user interface 1600 that may be displayed via a mobile application, webpage, or any suitable end-user interface 205, in accordance with certain embodiments of the present disclosure. The end-user interface 1600 may be similar to other interfaces described herein and may include any one or combination of features of other interfaces described herein. In some embodiments, the end-user interface 1600 may include one or more targeted advertising windows 1602.
The targeted advertising window 1602 may allow for presentation of advertising offers that are targeted to the user. The targeted advertising window 1602 may allow for a business to have an option of deciding to which consumer to send offer information and/or which offer information to send. With some embodiments, a targeted advertising option may be made available to businesses that have been added to a collection of the user. In some embodiments, the targeted advertising could be customized to the consumer by the business. Thus, a business could develop and/or maintain a relationship with the user after the collection addition by pushing a special offer to the user. For example, say a particular business has been added to a collection, but no further engagement between the consumer and the business has ensued. Noting this, the business may wish to have the option to direct one or more offers to the consumer in order to incentivize further engagement. Similarly, say a particular business has been added to a collection and has done business with the consumer, the business may wish to have the option to follow up with the consumer with directed offers to maintain and/or develop the relationship with the consumer. Perhaps, the business has not had contact with the consumer in a while; noting this, the business may wish to send a special offer to the consumer. The targeted advertising information could include one or more of an electronic coupon (which could correspond to a savable and/or printable discount coupon), advertising information, promotion information, offer information, business card information, any suitable business-related information, and/or the like. In various embodiments, in addition or alternative to the targeted advertising window 1602, an advertiser may have any one or combination of options for presenting offers, including via email, text messaging, a mobile app, a website, linked online social/business networking service(s), regular mail, push notifications, telephonic notification, etc.
In some embodiments, the end-user interface 1600 may include one or more selected business windows 1604. The selected business windows 1604 may present certain business information windows for businesses that the user has not already added to a collection. With some embodiments, as in the example depicted, business information may be selected for presentation as the most popular businesses based on total collection additions. Business windows could be selected for presentation based at least in part on one or more of business location(s) in relation to a location of interest to the user, relevance of a business to an identified interest of the user, a number of collection additions by other users with respect to particular businesses, a number of collection additions by other users who are related to the user via online social/businesses networking service(s), trending of such collection additions with respect to a particular time period(s), ratings of businesses, and/or the like. The selected business windows 1604 may include collection addition indicators 1606, as described herein. Along with each selected business window 1604, a user-selectable option 1608 may be presented to the user so that upon user selection, e.g., a single click, a particular business may be added to the user's collections. In some embodiments, the selected business windows 1604 may be selected regardless of what has already been added to the user's collections, and whether a particular business has been added to the user's collections could be graphically indicated in any suitable manner (e.g., though not depicted as such, an indicator 1608 for a business already in the user's collections could be different than an indicator 1608 for a business not already added).
In some embodiments, the end-user interface 1600 may include one or more selected coupon windows 1610. In some embodiments, the selected coupon windows 1610 may present certain coupon information for businesses near a location of interest to the user. In some embodiments, the system 102 could select the coupon information by actively monitoring location of interest data of the user and correlating that data to coupon information retained by the system 102. In some embodiments, coupon information could be correlated to businesses already added to the user's collections in order to apprise the user of pertinent offers relating to those businesses of interest. In some embodiments, the system 102 could monitor location of interest data for the user and notify businesses already added to the user's collections of an opportunity to direct coupon information to the user. Responsive to the notification, a business could provide coupon information to the system 102 for presentation to the user. In some embodiments, the system 102 may gather, push, and/or pull coupon information from businesses, business websites, and/or any suitable data source 110 in any suitable way, and then provide pertinent coupon information to users via one or more selected coupon windows 1610. The selected coupon window 1610 could be configured to provide an electronic coupon that could be savable and/or printable. Along with each selected coupon window 1610, a user-selectable option 1612 may be presented to the user so that, upon user selection (e.g., a single click), the coupon may be saved in association with the user's account. If the corresponding business is already added to the user's collections, the coupon information could be retained and accessible in association with the corresponding business in the appropriate collection. In some embodiments, if the corresponding business is not already added to the user's collections, selection of the option 1612 could also add the corresponding business to the user's collections, in conjunction with retaining the coupon information for later access in association with the corresponding business.
In some embodiments, the end-user interface 1600 may include an activity reporter 1614. The activity reporter 1614 could include one or more widgets, in some embodiments. The activity reporter 1614 may be configured to a report activity about the orchestration platform as the activity is occurring in real-time and/or at a high speed. The activity reporter 1614 may report any suitable information regarding any suitable activity, such as collection additions, new users joining the orchestration service, new reviews, new businesses joining the service, new followings of public collections, etc.
In some embodiments, the end-user interface 1600 may include an editorial section 1616 that may surface editorial content. As in the example depicted, the editorial section 1616 could expose promotional/editorial material that incorporates links to a public collection. The public collection could correspond to a collection associated with a celebrity, and could be tied to one or more endorsements. The public collection could be made available for public viewing, following, sharing, and/or copying.
FIGS. 17A, 17B, and 17C are screen displays illustrating example end-user interfaces 1700, in accordance with certain embodiments of the present disclosure. The end-user interfaces 1700 may be displayed via a mobile application or any suitable end-user interface 205 in various embodiments. The end-user interfaces 1700 may be similar to other interfaces described herein and may include any one or combination of features of other interfaces described herein. In some embodiments, the end-user interfaces 1700 may include one or more popular collections windows 1702. In various embodiments, the system 102 and/or the end-user device 300 may be configured to identify location information corresponding to the current or recent location of the end-user device 300 and/or user, and use the location information as a basis for identifying geo-aware selections for indication via the end-user interfaces 1700. In addition or alternative to the location information and relative business location(s) as bases, collections may be selected for presentation to the user based at least in part on relevance of a business to an identified interest of the user, relevance of a business to an identified demographic aspect of the user, how many users are following the collections, positively trending collections with respect to a particular time period(s) (which trending could be based on collection additions, collection followings, ratings, and/or any suitable basis), activity in the collections, ratings of the collections (which could include user votes for collections), instances of sharing of the collections, copies of the collections, and/or the like. Thus, certain embodiments may provide for temporal windowing may allow a user to see businesses trending in the user's neighborhood, city, and/or other local area.
As indicated by collection 1704, certain collection may not be created by and users but may be created and curated by staff of the orchestration service in some embodiments. In conjunction with such staff-curated collections, feedback from the crowd/community may be solicited. For example, incentives may be provided so that users provide feedback on certain collections corresponding to geographical area and business category. In some cases, users may be enticed to add businesses to such a collection. Those that bubble to the top of such a collection (e.g., in terms of ratings, additions, shares, copies, and/or the like) may be given greater visibility in the collection and/or otherwise via the orchestration service features.
In some embodiments, celebrity collections may be available for public viewing, following, sharing, and/or copying. In some embodiments, particular businesses, which may include individual or groups of service providers, may have collections tailored for clients. For example, a real estate agent may curate a collection of local vendors tailored for sharing with clients that have bought or in the process of buying a house in a particular area. Such a collection could include recommended vendors that could be of use to such clients, such as an inspector, a handyman, a pool service, utility providers, lawn care service, housecleaning service, etc. Additionally, the real estate agent may want to have multiple collections tailored to various categories of clients—clients in certain metropolitan areas, neighborhoods, income classes, etc.
In some embodiments, the system 102 may track instances of collection sharing in order to track referrals. Say, for example, a real estate agent shares a collection with a client, and the client contacts a merchant via the shared collection, for example, via a communication reference provided via the collection, which reference could be a click-to-call reference, click-to-message reference, click-to-email reference, click-to-chat reference, and/or the like. The application and/or system 102 could monitor for such communications made via the collection. The system 102, being notified of such communications, may retain tracking information, which could be used as a basis for rewarding the real estate agent for the referral. In some embodiments, for example, an account of the real estate agent could be automatically credited with a referral reward in any suitable form for the lead that was delivered. Beyond the example of a provider having an incentive to provide referrals, the end user could similarly be incentivized to give referrals by sharing of collection/window information. Such incentives may be based on end-user qualification, scoring, and monetization discussed herein.
In some embodiments, a network-specific indicator 1706 may indicate whether a particular collection has been added by others who are friends/associates of the user via an online social/business networking service, other users who associated with a certain affinity group, and/or the like. The network-specific indicator 1706 may identify one or more of the friends/associates. In some embodiments, the end-user interfaces 1700 may provide collection-specific detail information 1708, copy options 1710, and/or follow options 1712, as described herein. The end-user interfaces 1700 may provide one or more collection share options 1714 configured to allow sharing of collection information in any suitable manner, as described herein. For example, as indicated in FIG. 17C, a collection could be shared via social/business networking services account postings, and the collection share options 1714 may facilitate that. In some embodiments, the collection share options 1714 may include user-selectable options 1716 to restrict the posting to a certain audience. Additionally, the user-selectable options 1716 may provide the option to geographically restrict the posting to an audience associated with a certain geographical area. The system 102 may, for example, only make the posting to those friends/associates who have associated locations, as indicated by a social/business networking service, within a particular vicinity corresponding to the user-specified location.
FIG. 18 illustrates one embodiment of a merchant dashboard 1800 for an advertising platform that may correspond to a provider interface(s) 700, in accordance with certain embodiments of the present disclosure. The merchant dashboard 1800 may provide a particular merchant (i.e., a provider) access to demographic information about orchestration service users that have added the merchant's business to their collections. In some embodiments, the dashboard 1800 may correspond to a home page that a provider might see upon initialization of an app or logging on to the platform. After a provider logs in, different data points that can be of use to provider may be presented via the dashboard 1800. The dashboard 1800 may include any software process or module operable to present and receive information to/from a provider, allow a provider monitor advertising information, select different types of advertising data, identify desired metrics, automatically generate dashboard views, customize dashboard views, and/or the like. The dashboard 1800 may provide a graphical user interface (GUI) that includes any number and type of user-selectable options to facilitate various embodiments. In various embodiments, one or more user-selectable options may include one or more of a screen-labeled function key, an icon, a button, a soft button, a window, a menu, a control widget, a scroll bar, a slider, a listbox, and/or the like. In various embodiments, one or more user-selectable options may be selectable via one or more of touch, push, movement-based selection, and/or any suitable navigation feature. The example of the dashboard 1800 is not limiting, but may be illustrative of a mobile application and/or web interface 105 and/or 107.
In some embodiments, the dashboard 1800 may expose purchase consideration data 1802 about users who have added the particular merchant to their collections. A purchase consideration metrics feature may be configured to present access to details regarding any suitable aspects of consumer data capture and consumer qualification. FIG. 19 depicts a functional block diagram of certain aspects of end-user qualification 1900, in accordance with certain embodiments of the present disclosure. Various embodiments may employ any one or combination of various methods of qualifying end users. In some embodiments, an end-user may be simply identified as one having, or not having, made a purchase, engaged services, and or otherwise conducted business. In some embodiments, providers may be charged by the orchestration or other service based at least in part on such an identification.
Captured data may be used to qualify and users. End-user data may include any suitable information that may be captured to indicate, infer, and/or determine which end-users are likely to bring in business and/or actually have brought in business. An end-user's interactions with the orchestration platform can be broken down and assessed based on any one or combination of various factors, such as, for example, duration of various directed interactions, locations of the end user relative to business locations, demographic information of the end user, collection/window development by the end user, content added by the end user, communications with merchants, keyword analysis user-generated content and/or communications, and/or the like. Based on such indicia, an end user can be qualified.
Some embodiments may employ a decision tree, checklist, workflow, and/or the like to capture various aspects of consumer qualification data and assess those aspects to infer consumer qualification. Such a decision tree, checklist, and/or workflow may incorporate any one or combination of the depicted aspects and/or similar aspects in any desired order, according to various embodiments. End-user qualification data can be consolidated and processed to yield an end-user qualification score. Any one or combination of types of end-user data may be captured, analyzed, and qualified.
The system 102-2 may receive and process data regarding an end user in implementing the end-user data capture process 1902. In some embodiments, the system 102-2 may analyze any information received from an end user, which information may be associated with the end-user account and retained by the system 102-2 to provision orchestration service features to the end user. As discussed herein, certain embodiments may use a client application installed on the end-user computing device 205 to facilitate data capture. The end-user data capture process 1902 may include any one or combination of various embodiments as discussed herein that gather information.
Having end-user data, the system 102-2 may implement a lead qualification process 1904. The system 102-2 may be configured to qualify end users in whole or in part. Though certain aspects of end-user qualification 1900 are depicted as being performed by the system 102-2, the processes for qualifying end users may, in some embodiments, be performed in whole or in part by a client application 351 installed on the end-user computing device 205 and/or the provider computing device 207.
Some embodiments may qualify an end-user according to a graduated scale. Any suitable scale may be used in various embodiments. In some embodiments, a scale could entail a categorization scheme 1906, with any suitable categories. For example, as depicted in FIG. 18, categories 1804 such as very high, high, medium, and low could be used to segment end users by purchase consideration.
Referring again to FIG. 19, in some embodiments, a scale could entail an end-user scoring system 1908. The end-user scoring system 1908 could be correlated to the category scheme in some embodiments, such that certain scores correspond to certain categories. Some embodiments may score an end user with a numerical expression, for example, an end-user score. An end-user score may be an assessment of an end-user's potential to engage a merchant and conduct business. Accordingly, an end-user score may indicate which end users are more likely than others to bring in business, thus providing a quantitative estimate of the probability that a given end user will provide business. By way of example without limitation, a scale could include a range of end-user scores from 0 to 100, or from 0 to 1,000, with the high end of the scale indicating greater probability. Some embodiments may use methods of statistical analysis to derive an end-user score. Various embodiments may determine an end-user score based on any one or more suitable quantifiers.
In some embodiments, the system 102-2 may implement an end-user data logging process 1910 which gleans data pertinent to qualification from end-user data associated with the end-user account. The system 102-2 may generate and maintain an end-user qualification profile that may include any suitable qualification information corresponding to a particular end user. As indicated by block 1912, any suitable end-user qualification information of interest may be surfaced, for example, by way of the merchant dashboard 1800. For example, information about end users that have added a particular provider to collections could be compiled, analyzed, formatted, and/or otherwise processed to window any analytics of interest.
In some embodiments, the system 102-2 may implement business rules 1914 to take action based at least in part on the end-user qualification. The provider advertising with the orchestration/listing service could be charged based on the end-user qualification 1916 in some embodiments. The account management/billing module(s) 112(f) could implement a code system by which a provider is charged based on the end-user qualification. For example, a provider could be charged differently based on whether end-users are more or less qualified. The charging process could be a performance-based system where charges based on an addition of a provider to an end-user collection and/or based on end-user actions taken with respect to the particular provider thereafter.
In some embodiments, the charges could be based on end-user score. Charges could be proportional to end-user score in some embodiments. Charges could be applied contingent on one or more thresholds. For example, a minimum threshold could be employed, where an end-user score not meeting the minimum threshold could result in no charge. An end-user score above the minimum threshold could result in a charge. The charge could be based on one or more score bands, for example, one or more score bands above the minimum threshold. By way of example, an end-user score above a 50% minimum threshold could be correlated to quartile bands. A discounted charge could be applied based on an end-user score correlated to a 50-75% band. A full charge could be applied based on an end-user score correlated to the 75-100% band. Some embodiments could implement a proportional charge, such as an end-user score correlated to 75% could result in a charge of 75% (or some other proportion) of the full charge.
FIG. 20 depicts a functional block diagram 2000 of certain aspects of end-user data capture, analytics, and qualification, in accordance with certain embodiments of the present disclosure. The criteria for qualifying consumers may take into account the extent of end-user interaction. A greater extent of interaction could increase a ranking assigned to a particular user. The user interaction considered may include one or more of interaction directed to the merchant, the business area of the merchant, and/or other merchants related to the merchant's business area. The criteria for qualifying consumers may take into account the extent of user interaction with a collection and/or information window associated with the merchant, the business area of the merchant, and/or other merchants related to the merchant's business area. The qualification of a particular consumer may also be weighted as a result of keywords being used in communication and/or commentary associated with a collection and/or window related to the merchant—e.g., the keywords may indicate a user ready to buy, engage services, and/or otherwise conduct business. The qualification of a particular consumer may be weighted more heavily as a result of indicia that the consumer made a purchase, engaged services, and or otherwise conducted business.
As indicated by block 2002, in some embodiments, location information may be captured to provide an indication of the end user's location. As discussed herein, various embodiments may employ any one or combination of methods of capturing location information, including but not limited to, gathering location information via any one or combination of the end-user orchestration platform profile, the communication device 205, 300, such as the device GPS capabilities, access points, third-party data sources, determining the area code associated with the device, differentiating between whether a caller uses a landline or wireless network, receiving explicit location information with one or more search requests, inferring location information from one or more search requests, and/or the like. Gathering of location information may be facilitated by the application 351 of the end-user device sending tracking information to the system 102. In some embodiments, gathering of location information may be performed before an end user places a call, for example, via the mobile application. Various location quantifiers could be assigned to a user based on the business of interest. For example, with some businesses, proximate location of an end user is important, say, for a plumber for example. With other businesses, proximate location of an end user may not be so important, or the fact that an end user travels frequently may be more important some businesses, for example, businesses which tailor to travelers. As an example, a number of points could be assigned to the end user based on an identification of the importance of proximity to the business/category of interest and the location information gathered for the end user.
In some embodiments, as indicated by block 2004, an end user's interaction on the orchestration platform may be captured as data of interest. For example, as indicated by blocks 2006 and 2008, in some embodiments, end-user interaction with the mobile application 351 and/or website provided by the system 102 may be captured. As indicated by block 2010, the user interaction may involve one or more searches. A user, for example, may spend significant time searching for businesses relating to a certain category. As indicated by block 2012, the amount of time and/or the number of searches may be taken into account as an indicator of relatively greater interest. The time spent searching a particular category of service providers and/or the number of searches could be correlated to an increased indicator of interest in any suitable manner. Merely by way of example, a number of points could be assigned to an end user based on the time spent searching and/or the number of searches. Various interest quantifiers could be assigned to an end user based on search time in a proportionate manner. For example, a number of points could be assigned for every minute of search time. Various interest quantifiers could be assigned to an end user based on the user meeting any one or combination of various thresholds of search time. As an example, a number of points could be assigned after the end user accrues 5 minutes of search time.
As indicated by block 2014, in some embodiments, a search pattern may be taken into account as lead data of interest. The search focus or non-focus may be considered. Certain embodiments could differentiate between searches to detect a pattern of searches corresponding to a given category of searches. For example, an end user might spend 5 minutes of searching, viewing results, linking to provider websites, reading reviews, etc., all related to a particular category of service providers, say plumbers in a particular geographic area. Such search time could be distinguished from non-focused searching, such as searching related to various categories, which might not be related. In such cases, no additional points or a lower number points may be assigned.
As indicated by block 2016, in some embodiments, end-user curation may be taken into account as end-user data of interest. End-user curation 2016 may be assessed in terms of curation time 2018. For example, time spent arranging and customizing a collection and/or information window maybe taken as a higher level of interest and be assigned points accordingly. Time spent accessing, editing, and/or augmenting a collection and/or information window may be taken as an indication of interest and be assigned points accordingly. End-user curation 2016 may be assessed in terms of curation instances 2020. For example, instances if arranging, customizing, editing, and/or augmenting a collection and/or information window may be gauged to determine interest. End-user curation 2016 may be assessed in terms of user-added content 2022. User-added notes and/or reviews, for example, could be assigned certain points, with more extensive notes/reviews being assigned a greater amount of points. As another example, instances of user-added photos and/or images may be assigned points accordingly. User-added photos and/or images that correspond to receipts, invoices, warranties, etc. may be identified as evidence that the end-user has transacted business with a merchant, thus evincing a greater level of interest. Other user-added content that could be assessed may include any other suitable user added content discussed herein, including ratings indicia, preference indicia, etc.
As indicated by block 2024, in some embodiments, an end user's interaction with one or more other merchants via the orchestration platform could be assessed and assigned points accordingly. For example, if a user adds a merchant as a collaborator or otherwise allows a merchant to view a collection, then that situation may be taken as an indicator of a high level of interest. As another example, if a user communicates with a merchant via the platform (e.g., via a type of click-to-contact link, chat window, email, text, and/or like means that is facilitated by the orchestration platform and/or links thereto), that likewise can be taken as an indicator of interest. An end user's interaction with one or more other merchants could be assessed based on instances, repeated engagements with specific merchants, frequency of interaction (with merchants of a certain business type, e.g.), duration of interaction, type of interaction, and/or the like.
As indicated by block 2026, in some embodiments, an end user's collection/window share activity could be assessed and assigned points accordingly. Instances of sharing could be assessed based on numbers of occurrences 2028, form of sharing 2030, the size of the audience 2032 to whom the information shared, the platform 2034 to which the information shared, feedback on shares 2036 by others (e.g., in the form of preference indicia, reviews, re-shares, etc.), and/or like. As indicated by block 2038, in some embodiments, an end user's collaborator activity could also be assessed, with instances/numbers of collaborators being taken into account.
As indicated by block 2040, in some embodiments, an end user's public collection share activity could be assessed and assigned points accordingly. Instances of collection publicizing could be assessed based on numbers of occurrences, numbers of followers, instances of copying, feedback on public collections by others (e.g., in the form of preference indicia, reviews, etc.), and/or like.
With regard to any of these bases for qualification or similar bases, scoring or otherwise assigning significance to such bases may be implemented to any suitable level of granularity. For example, with respect to feedback on shares 2036, type of feedback and extent of feedback can be differentiated and accorded various levels of significance. As a specific example, a simple indication that a friend/connection of the end user likes something that the end user shared on a social/business network may be accorded less significance than a re-share and/or comment by a friend/connection. Similarly, not all comments need be treated the same. In some abundance, keyword analysis such as described herein may be used to assess the significance of comments made by friends/connections.
Accordingly, various embodiments according to the present disclosure may provide for windowing end-user analytics that can provide market insights to providers. Moreover, various embodiments may qualify end-user aspects of the orchestration platform so that expansion, collaboration, sharing, and/or other use of the orchestration platform may be monetized (e.g., based on end-user qualification analytics). Such monetization can be used to incentivize sharing, marketing efforts, endorsement efforts, and/or other use of the orchestration platform. And, the incentive position may take the form of a reward system, be it monetary or otherwise.
Referring again to FIG. 18, the purchase consideration data 1802 about end users who have added the particular merchant to their collections could be presented based on the end-user qualification information analytics. The purchase consideration data 1802 could correspond to any time period(s). Additionally, the purchase consideration data 1802 could compare to past data. The past data could also be presented, however, like in the example depicted, differential information 1806, such as percentage increases/decreases, could be presented. In addition to segmented analytics information about multiple end users, any suitable information about individual end users, such as a qualification score, underlying qualification data, and/or the like, could be viewable, for example, responsive to user selection of one or more user-selectable options.
Other end-user analytics that could also be presented may include purchase information 1808. For example, the purchase information 1808 may take into account purchases made by respective end users. A last purchase of each respective end user may be taken into account, and a user distribution of numbers of end users 1810 who have made last purchases over any suitable time period of interest 1812 may be presented, like in the example 1808 indicated. In various embodiments, the purchases considered could be purchases made with the particular merchant, with other competitor merchants that end users have added to a collection and that are in the same business category of the merchant, and/or with other collection-added merchants generally.
The dashboard 1800 may provide one or more user-selectable time options. A time period selection feature may be configured to allow for selection of a time period for which to view certain performance metrics. Past performance, current performance, and projected options may be provided. Past performance could show performance metrics for past week, month, billing period, three months, six months, year, etc. Current performance could show real-time performance in the context of recent activity such as the last hour, day, week, etc. Projected performance could show extrapolation of past and/or current performance data into future, such as any coming time period. Projected performance could be based on any suitable factor, including aggregate performance of competitors in the market, publisher/platform performance, market data for a particular location, and/or the like.
Other end-user analytics that could also be presented may include reach information 1814. The reach information 1814 may include information about the number of users reached. The reach information 1814 could indicate one or more of users reached by a particular merchant, by merchants corresponding to a particular category (e.g., a service category, a product category, any suitable business category, etc.), by merchants corresponding to a particular locale, and/or the like. Such reach information 1814 could be graphically differentiated along any suitable lines. The reach information 1814 could be refined to expose reach information for any suitable time period, which time period could be user-selectable. The reach information 1814 could be differentiated based on specific platforms used. For example, users reached via the orchestration platform could be distinguished from users reached via social network connections. The reach information 1814 could include any share activity described herein. The reach information 1814 could reflect users who have specifically added a particular merchant to a collection. The reach information 1814 could also reflect users who have visited a particular merchant website, contacted a particular merchant, and/or otherwise linked to a particular merchant via the orchestration platform. Any one or combination of reach information 1814 items could be qualified according to any suitable bases, e.g., demographic information, visit number, value of customer, potential value of customer, quality of leads, social network connections, customer score, etc. And, such qualification could be graphically presented/distinguished in any suitable manner.
Other end-user analytics that could also be presented may include share activity information 1816. Any suitable share information may be gathered, analyzed, and windowed. The share activity could correspond to sharing of window information for a particular merchant, which could correspond to sharing based on an individual window and/or sharing based on a collection that includes window information for the particular merchant. The share activity could correspond to sharing between users of the orchestration platform. The share activity could correspond to sharing by a user of the orchestration platform to a non-user via any one or combination of the various means described herein. In the example depicted, the share activity information 1816 may correspond to sharing via one or more social networks.
The share activity information 1816 may be segmented by geography, like in the depicted example. While the example depicts segmentation by state, any suitable geographic segmentation may be employed in various embodiments, including neighborhood, city, metro area, county, and/or the like. In some embodiments, one or more user-selectable options may be provided for user-specified geos of interest to analyze data corresponding to the user-specified geos. For example, a user may be able to indicate a range, such as a radius of X miles from specified location of interest. In some embodiments, a user could indicate an area of interest with any suitable parameters, e.g., including one or more counties, municipalities, zip codes, distances from reference points, etc. In some embodiments, a user-selectable map interface 1818 may be presented. Some embodiments may enable a merchant user to define an area by selecting one or more points on the map interface 1818. For example, any predefined service areas, such as zip codes and/or the like, could be presented on the map for selection. The map interface could allow a user to define a perimeter of a service, e.g., by drawing on the map with a line drawing tool, cursor, finger/stylus contact with a touch interface, selection of perimeter boundaries such as roads, rivers, etc. Hence, share indicia may be location-specific and windowed in any suitable degree of granularity to provide enhanced relevance.
In the example 1818 depicted, user-selectable options may be presented for selecting share activity information by state. Consequent to user selection, geo-specific information 1820 may be presented. The geo-specific information 1820 may include any suitable details regarding the share activity. The share activity details may include one or more of platforms 1822 to which shares were directed, locations 1824 associated with the sharing end user, dates 1826 on which the shares occurred, times 1826 at which the shares occurred, distinctions 1828 as to whether the shares were individual business shares or collection shares, information on re-shares 1830, specifics as to collections shared 1832 (which may include one or more of comments received, ratings received, approval/disapproval indicia received, re-shares be a particular platforms, etc.), and/or the like. The share information presented with the merchant dashboard 1800 may be presented in any suitable manner. User-selectable options may be provided for exporting/converting the share information, in whole or in part, and to any desired format, including spreadsheets and other commonly used document formats.
FIG. 21 illustrates one embodiment of an offer manager 2100 for an advertising platform that may correspond to a provider interface(s) 700, in accordance with certain embodiments of the present disclosure. The offer manager 2100 may be provided in conjunction with the merchant dashboard 1800. The offer manager 2100 may allow for the creation of an advertising profile and may be configured to facilitate marketing automation. With an advertising profile, a merchant may be able to indicate specific offer information for provisioning to end users of the orchestration platform. An advertiser profile may include persistent offer provisioning information that is maintained for subsequent offer provisioning based on one or more trigger events. An advertiser profile may be retained in the one or more repositories 268.
One or more user-selectable options 2102, which may include workflows, may be provided via the offer manager 2100 to allow a merchant to create and/or designate certain offer information. In some embodiments, one or more templates 2104 may be provided for selection and/or input of desire details. Various coupon templates could be provided by the system 102 and presented to allow a choice of one or more templates. The various coupon template options could differ in terms of style, content, form, and/or the like. A coupon template 2104 could include fields for entry of information by the merchant. For example, the merchant may have an option to designate a service and/or product, offer/discount information, start date, expiration date, terms and conditions, and/or any suitable information to facilitate offer information provisioning. In some embodiments, the system 102 may at least partially populate a template with merchant information based at least in part on listing information and/or previous offer information already retained for a specific merchant. For example, a template could be pre-populated with merchant information such as business name, business location, and/or the like. In cases where there are multiple options for a given advertiser (say, multiple locations, multiple goods/services, and/or the like), the system 102 could identify those options and facilitate user-selectable options for the merchant to designate.
In some embodiments, a merchant may upload information for use in offer provisioning, and the offer manager 2100 could be configured to provide user-selectable options to facilitate such uploading. A merchant could upload any suitable offer information in any suitable form in various embodiments. For example, a merchant could upload an electronic coupon, images and/or other graphical/video data, audio data, and/or the like. Such uploaded data could correspond to any suitable advertising content.
In some embodiments, a merchant may be provided with options to designate certain business rules 2106 for offer information provisioning. Such business rules 2106 could specify one or more temporal conditions, such that provisioning may depend on one or both of temporal condition(s) and trigger events. Temporal conditions could include one or more of time parameters, day parameters, date parameters, location parameters, and/or the like that could be conditions for offer provisioning. Business rules 2106 specifying time parameters could include, e.g., rules for handling provisioning in view of a time of day when a trigger event occurs. Business rules 2106 specifying day parameters could include, e.g., rules for handling provisioning in view of a day of the week when a trigger event occurs. Business rules 2106 specifying date parameters, e.g., could include rules for handling provisioning in view of a date on which a trigger event occurs. Any suitable interface features, including input fields, telephone dialer inputs, IVR inputs, and/or user-selectable clock, calendar, and/or like GUI components could be provided to facilitate advertiser specification of business rules in various embodiments.
Business rules 2106 specifying location parameters could include, e.g., rules for handling provisioning in view of a location identified for an end user. Accordingly, with an advertiser profile, a merchant may be able to indicate specific areas for which particular offer provisioning to be targeted. In various embodiments, a target area could be specified in any suitable manner, including, for example, by one or more counties, municipalities, zip codes, distances from reference points, etc. In some embodiments, a user-selectable map interface may be presented as described herein.
Business rules 2106 specifying trigger event(s) 2108 could include, e.g., rules for handling provisioning in view of any one or combination of events associated with an end user's orchestration account. For example, trigger events 2108 could include one or more of an end user adding a business to a collection, a forming of a new collection around a theme, an addition of collaborator (e.g., adding a merchant as a collaborator), otherwise allowing a merchant to have access to a collection/window, a sharing of a collection and/or business window with another orchestration service user, a sharing of a collection and/or business window with a linked account (e.g., email, text message, online social/business networking services—one or more of which could be differentiated with distinct rules for handling sharing with distinct accounts), a copying/following of a collection, making a collection/window public, adding content to a collection/window, a time period since a last activity with respect to a business window, an end user's search relevant to a merchant not already added to the end user's collection, an end user's search relevant to a merchant already added to the end user's collection, a search for other merchants (e.g., a search relevant to a business already added to a collection of an end user, which search could potentially turn up competitors), and/or the like. In some embodiments, one or more trigger events 2108 could include location parameters to allow for provisioning in view of a location identified for an end user.
Business rules 2106 specifying a form of provisioning 2110 could include, e.g., rules for provisioning offer information via one or more of text messages, voice notifications, push notifications, e-mails, social/business networking services account postings/messages, alerts with the application, and/or other any suitable means. The offer manager 2100 may be configured to present an offer that a merchant has set up for previewing 2112. In some embodiments, the system 102 may subsequently use any one or combination of merchant-specific business rules 2106 to identify appropriate offer information options for one or more of a particular end user, trigger event, and/or conditions. In some embodiments, the system 102 may be configured to automatically provide offer information to an end user based on the merchant-specific business rules 2106 on behalf of the particular merchant without further merchant intervention. In some embodiments, the system 102 may be configured to present automatically identified offer information (i.e., identified based on the merchant-specific business rules 2106) for merchant selection so that the merchant may have the choice as to whether to dispatch the offer information.
In some embodiments, the system 102 can select pertinent offer information for transmission, select a delivery manner/form, and/or transmit pertinent offer information responsive to a trigger event based at least in part on the advertiser profile. In some embodiments, the system 102 may be configured to provide one or more offer information options to a merchant based on the merchant-specific business rules 2106. Accordingly, the system 102 can filter various offer information provisioning options with the merchant-specific business rules and present an appropriate subset of those options to a merchant for merchant selection.
In some embodiments, the offer manager 2100 may include a dashboard summary 2114 configured to present information and user-selectable options for offers retained by the system 102 for the merchant. The dashboard summary 2114 may present information such as offer creation date 2116, offer identification information 2118, specific form of provisioning 2120, offer status 2122, offer expiration 2124, and/or any other appropriate offer information. In some embodiments, the offer manager 2100 may be configured to present offer suggestions. The offer suggestions could prompt the merchant to create offers that the merchant has not already created. For example, offer manager 2100 may identify potential trigger events related to the merchant (e.g., an end user adding the merchant to a collection), and may query the merchant to whether create an offer in view of the potential trigger events.
Accordingly, certain embodiments may provide a merchant with a way to communicate with end users that are not only potential customers, but also potential promoters of the merchant. Certain embodiments may allow a merchant to market events, product offerings, and/or service offerings to end users.
FIG. 22 shows a block diagram of a method 2200 of assisting a user to identify one or more businesses of interest, in accordance with certain embodiments of the present disclosure. One or more engines 243 may be configured to harvest and qualify end-user data. According to certain embodiments, the method 2200 may begin as indicated by block 2202.
Teachings of the present disclosure may be implemented in a variety of configurations. As such, the order of the steps comprising the method 2200 and other methods disclosed herein may be shuffled in any suitable manner and may depend on the implementation chosen. Moreover, while the following steps (and those of other methods disclosed herein) may be separated for the sake of description, it should be understood that certain steps may be performed simultaneously or substantially simultaneously.
As indicated by block 2202, end-user data may be gathered. The end-user data gathering may include capturing interest data, as indicated by block 2204. The capturing of interest data may include any one or combination of interest data capturing features disclosed herein.
The end-user data gathering may further include capturing demographic data, as indicated by block 2206. The capturing of demographic data for particular end users could be a part of interest data capturing. Any suitable demographic information could be harvested in various embodiments, for example, information about income level, education level, lifestyle, age, family/household, home ownership, etc. In some instances, demographic data could be provided by an end user as part of profile setup and/or development with the platform. Demographic data could be inferred from interest data and/or collection information, in some embodiments. For example, a user who has a collection directed to children or who has added a particular child-directed business to a collection (e.g., a pediatric dentist) could be taken as an indication that the user has or is otherwise associated with one or more children. In some embodiments, demographic data could be harvested from accounts that a user has linked with the system. In some embodiments, demographic data could be gathered from one or more third-party data sources 110.
The end-user data gathering may further include capturing other consumer-specific data, as indicated by block 2208. Any suitable consumer specific information could be harvested in order to allow for characterization of a particular user. For example, such consumer-specific information could include information on whether the consumer is proximate to life milestones such as a graduation, a new job, a wedding, childbirth, purchasing a home, etc. Consumer-specific information could include particular purchases or buying habits of the consumer, in some embodiments. Consumer-specific information could be inferred from interest data and/or collection information, in some embodiments. In various embodiments, demographic data could be harvested from accounts that a user has linked with the system and/or gathered from one or more third-party data sources 110.
As indicated by block 2210, particular end users may be qualified based at least in part on the end-user data gathered. The consumer data may be analyzed with respect to individual users. One or more engines 243 may be configured to classify end users into one or more categories. In some embodiments, the engines 243 may include a classifying engine to classify end users into one or more categories. In some embodiments, the orchestration engine 256 may be or include a classifying engine. A classifying engine may classify each of a plurality of end users into at least one category of a set of categories that represent classifications of end users based at least in part on one or more sets of attributes defined for classifying various end users.
The end-user qualification may include any one or combination of qualification features disclosed herein. As indicated by block 2212, an end-user may be classified into one or more categories based at least in part on the end-user data. Any suitable categories may be employed for characterization of end users. By way of example, and users may be categorized according to interests, demographics, consumer habits, life stages/milestones, and/or the like to any suitable degree of granularity.
As indicated by block 2214, information relating to business recommendations may be gathered. Such information may include information pertinent to end users having indicated a preference for particular businesses. Preference indicia may include users having indicated a preference for particular businesses, ratings for particular businesses, and/or the like. Business recommendation information may be aggregated from the platform. For example, such information could include instances of businesses being added to collections, being shared, being copied, being rated, and/or the like.
In addition or alternative, business recommendation may be aggregated from outside the platform. Some embodiments may identify business recommendation information based on user indications of preference (such as positive rating business, an indication of liking the business, friending or otherwise linking to a business, sharing business information with others, etc.) that the user has made via webpages and/or social media. Business recommendation information could be identified by approval/disapproval indicators, which may be in form of likes, dislikes, thumbs-up, thumbs-down, star-scale ratings, number-scale ratings, fan indications, affinity group association, messages to businesses, and/or the like. The approval/disapproval indicators could be those associated with the user's profile and/or profiles of friends/associates/connections of the user.
Information relating to business recommendations may further include location information pertinent to the businesses and/or users associated therewith. Information relating to business recommendations may further include the date and/or time information associated with the pertinent activities (e.g., additions to collections, shares, likes, etc.). The information may include any suitable information pertaining to explicit and/or implicit indicia of preference for businesses, interest in businesses, ratings of businesses, and/or like, such as the examples disclosed herein.
As indicated by block 2216, information relating to business recommendations may be qualified. As indicated by block 2218, businesses may be classified into one or more categories based at least in part on the information relating to business recommendations. Information about recommendations could be gathered, analyzed, and classified according to any suitable bases.
As indicated by block 2220, one or more indexes may be created based at least in part on similarities between businesses. The one or more indexes may link businesses based on the classifications and associated recommendation-specific information. By way of example, the one or more indexes may associate businesses based at least in part on any one or combination of the following.
Information with respect to a particular business may be analyzed in order to identify one or more business attributes. In some embodiments, the system may include a matching engine that can receive business information, identify attributes of the business based at least in part on the business information, and match the business to one or more categories based on category information retained in a repository. The business may be matched to one or more categories that each represent classifications of business sharing common attributes. In some embodiments, one or more taxonomies that map particular profile information to particular categories may be used in correlating business profile information with one or more categories. The business could be classified according to products and/or services that the business provides. The business could be classified according to location, for example, a market that the business serves and/or a physical site of the business. The business could be linked to location identifier(s) (such as a directory code(s) relevant to the business listing of the suggestion); geo coordinates corresponding to the business (e.g., latitude and longitude); and/or the like.
The indicia of preference for each business may be quantified and qualified according to the form of preference indicia (e.g., additions to collections, shares, likes, etc.). The various forms could be qualified differently to assess varying degrees of preference. For example, sharing a business that a user has added to a collection could indicate a greater degree of preference than simply adding the business to the collection. Likewise, a user actually communicating and/or engaging with the business may indicate a greater degree of preference than simply adding the business to the collection.
Aggregated recommendations may be classified according to user types/categories. In a set of embodiments, one or more collaborative filtering algorithms may be employed to define similarities between businesses based at least in part on demographic and/or consumer data. Businesses may be classified according to demographic data for particular end users that have indicated preferences for the businesses. For example, types of users that predominantly recommend certain businesses may be identified based at least in part on income level, education level, lifestyle, age, family/household, home ownership, etc. Types of users that predominantly recommend certain businesses may be identified based at least in part on user proximity to life milestones (such as a graduation, a new job, a wedding, childbirth, purchasing a home, etc.) and/or particular purchases or buying habits.
Information about user identifications associated with preference indicia with respect to businesses may be retained. For example, information about multiple relationships between user identifications may be retained. Such relationships could include relationships of users of the orchestration platform, of a social network, of a business network, of an affinity group, and/or the like. Accordingly, various embodiments aggregate recommended businesses and user identifications of people that recommend businesses in any one or combination of forums. The relationship information could include relationship graphs about relationships between user identifications via the orchestration platform and/or other forums. For example, the relationship information could indicate which users are related as collaborators on the platform, which users are related based on followings via the platform, which users are related as friends or connections via the platform and/or the other forums, which users are related as indirect connections through intermediate users, which users are members of affinity groups, etc. Mapping of related user identifications may be retained to facilitate identification of multiple user identifications associated with a particular user. For example, a user of the orchestration platform may have one user identification for logging into the platform and a different user notification for logging into a linked account.
In some embodiments, one or more of the data repositories and/or indexes may be updated periodically. Updating may occur at any suitable time. Updating may capture one or more of listing name changes, new business openings, business closings, preference data changes, and/or the like.
Certain embodiments may ensure or improve data integrity based on assessing frequencies for particular preferences over time. For example, preference distribution can change over time. There can be seasonal distribution changes, weekly distribution changes, and daily distribution changes. Analyzing the distributions may identify popular changes over a particular time period, such as the last 60 or 90 days. For example, analyzing the distributions may identify: how many preferences are indicated for a particular business in a particular area; how many businesses correspond to a particular user types in a particular area; how the changes impact the collaborative filtering analysis; and/or the like.
FIG. 23 is a block diagram that illustrates an example method 2300 of certain recommendation features for particular end users, in accordance with certain embodiments of the present disclosure. One or more engines 243 may be configured to facilitate the recommendation features. As indicated by block 2302, end-user information for a first end user may be analyzed with respect to qualified business information to identify a set of one or more businesses based at least in part on the end-user qualification. The user may be identified based on user identification information and/or device identification information for a device that may be associated with a user.
Information related to the user and/or specific to the user may be gathered and analyzed in view of the one or more indexes to match the user with a set of one or more recommendations. Analysis of information about an identified user could entail comparing the user information to information about other users (e.g., to determine user similarities) in order to recommend businesses (e.g., others' favorite or otherwise preferred businesses) for the identified user to review.
In some embodiments, the one or more engines 243 (e.g., a recommendation engine 2402 discussed further herein, which may include a matching engine) may be configured to match the user to one or more businesses based at least in part on correlating categories. The matching could, in some embodiments, be based at least partially on comparing user attributes/categories with business attributes/categories. For example, they may be matched according to preferences, certain biographical information, demographic information, interests, location information, etc.
Any suitable correlation process may be employed. A scoring system could be correlated to the category scheme in some embodiments, such that certain scores correspond to matches of certain categories. Some embodiments may score a match with a numerical expression, for example, a match score, with higher scores being assigned to higher correlations of user attributes/categories with business attributes/categories. A high correlation may be identified using any suitable qualification scheme (e.g., a score threshold, a score ranking, etc.).
As indicated by block 2304, one or more recommendations for the user may be generated as to at least one business from the set of one or more businesses. The one or more engines 243, for example, may be configured to assess matches of the user and one or more businesses. A recommendation could be based on the highest correlation between the user and a business. As part of generating the recommendation, descriptive content indicative of a business may be selected, as indicated by block 2306. As indicated by block 2308, the descriptive content may be transmitted to a computing device and/or account associated with the user.
As indicated by block 2310, one or more user-selectable options to indicate an interest in the recommended business may be presented for selection by the user. Options could be provided for a user to add the recommended business. Descriptive content indicative of the recommended business may be provided with one or more user-selectable options and/or may be revealed with user selection of an option. Options could also be provided to allow the user to indicate disinterest in the recommendation and/or further recommendations.
In some embodiments, descriptive content could be anonymized so that one or more specific recommendations are offered to an individual user without revealing identities of other users from whom the one or more specific recommendations are derived. Though anonymized, a specific recommendation could be offered with a general characterization of the other users. As one example out of many possibilities, a recommendation for a dog owner in Glendale, Calif., could indicate that other dog owners in Glendale have a preference for a particular veterinarian.
In some embodiments, descriptive content may not be anonymized. Certain users of the platform may have public recommendation information. Real estate agents, for example, may curate a collection of local service providers relevant to those who have bought or in the process of buying a house in a particular area (such as recommended inspectors, handymen, and the like) and may wish to have such recommendations public. Accordingly, recommendations may not necessarily be anonymized.
In some embodiments, the recommendation may include a customized collection of advertising information for businesses. The customized collection may be automatically generated by the system for an individual user based on the analysis. The customized collection may be presented to the user as a curated collection with user-selectable options that allow the user to select and/or de-select recommended businesses for retention in association with the user. For example, the user may select one or more recommended businesses for additions to a new or existing collection of the user. As another example, the user may select a recommended collection for addition as a new collection or for addition to an existing collection.
As indicated by block 2312, end-user actions may be monitored consequent to the recommendation being provided. Any one or combination of actions and determinations may be correlated to indicia of greater or lesser interest in any suitable manner (e.g., based on a scoring scheme). As indicated by block 2314, an indication/disinterest of user interest by the user responsive to the recommendation may be processed. The user adding the recommended business to a collection may be taken as an indication of user interest. Alternatively, the user may indicate disinterest in the recommendation and/or further recommendations by selecting the appropriate option.
As indicated by block 2316, the end-user responses to recommendations could be monitored for implicit indicia of user interest. For example, it may be determined whether the user ignores the recommendation for a particular period of time. If the user has not taken action with respect to the recommendation after a threshold of time, such inaction may be taken as an indication of disinterest.
As another example, it may be determined whether the user ultimately removes the recommended business from a collection after having added the business. This may be deeded as an indication of disinterest in the business. Other examples may include monitoring for indications that the user engages with the business (e.g., through communication links provided by the platform), develops notes regarding the business, enlist collaborators for a collection including the business, and/or shares the business information with others, which actions may be taken as indications of interest in the business.
As indicated by block 2318, profile information associated with the user may be adjusted based at least in part on the monitoring. For example, the profile information may be updated in view of positive responses to the recommendation (e.g., adding the recommended business to a collection, engaging with the business, sharing the business information, etc.). Thus, in certain instances, additional recommendations can be made for the user periodically or at any suitable frequency, taking into account the addition of the business to the user's collection, as indicated by block 2320.
The profile information could be updated in view of negative responses to the recommendation. The system can disable the recommendation features based on the explicit rejection of the recommendation feature by the user. Instances of the user indicating disinterest in particular recommended businesses may be considered for future recommendations to adjust to the user preferences.
The system could also take into account implicit negative responses. For example, repeated instances of the user ignoring a certain number of recommendations may be taken as a lack of interest in recommendations, generally, and the generation of further recommendations could be halted indefinitely or for certain period of time, so as not to provide unwanted features to the user of the platform. A threshold number of ignored recommendations over a certain period of time, without the user having taken any action on any recommendation, could be employed to determine when to halt the recommendation provisioning process with respect to the particular user.
FIG. 24 depicts a functional block diagram of certain aspects of recommendation generation 2400, in accordance with certain embodiments of the present disclosure. Various embodiments may employ any one or combination of various methods of determining recommendations for particular end users based at least in part on user characteristics. In a set of embodiments, recommendations could be based at least in part on demographic information. Recommendations could be based at least in part on any suitable consumer-specific information that may be cluster-based consumer data and/or user-targeted consumer data. In some embodiments, one or more aspects of the functional model 2400 may correspond to assessing/ranking/scoring relevance of recommendations in various embodiments discussed herein. In some embodiments, the functional model 2400 may be implemented as a decision tree.
One or more engines 243 may be configured to provide a recommendation engine 2402. The recommendation engine 2402 may analyze end-user information 2404 for a first end user and aggregated, classified business information 2406 to identify a set of one or more businesses. The recommendation engine 2402 may generate one or more recommendations, which may correspond to block 2304 of FIG. 23.
Certain embodiments may identify recommendations based at least partially on similarities of characteristics of a first end user and characteristics of other users from whom the business information 2406 has been derived. Any suitable algorithm for assessing similarity may be employed. Some embodiments may identify intersections between multiple sets of characteristics. Having set intersections identified, the intersections may be compared. A greater extent of an intersection may be an indication of a greater degree of similarity between the users. In some embodiments, the sets may be ranked according to the extent of the intersections. Any one or combination of the following aspects of end-user information 2404 and aggregated, classified business information 2406 may be used by the recommendation engine 2402 generate recommendations.
In some embodiments, end-user location information 2408 may be processed. The location information 2408 may correspond to location information for the user previously retained in conjunction with the platform as an area of interest for the user, such location information having been identified by the user and/or derived from user selections made with the platform. In some embodiments, the location information 2408 may include location information gathered by the system via the end-user computing device 205. Thus, the user's location may be updated, for example, as the user travels to various locations. While the user may generally be associated with a specific locale, certain embodiments may provide recommendations that are directed to a different location to which the user travels. The recommendation engine 2402 may use the end-user location information 2408 with location filtering 2422 to identify location-relevant business recommendations. Recommendations could be scored based on proximity to a relevant location of interest of the user.
In some embodiments, end-user platform interaction 2410 may be processed by the recommendation engine 2402. This may correspond to the data capture and analysis of user interaction further described herein. The end-user platform interaction 2410 may include information on end-user collections 2412 and end-user interest information 2414. For example, the current state of one or more of the user's collections could be analyzed as input to determine businesses already associated with the collections, similarities with businesses not currently associated with the collections, similarities with other users, and/or the like.
Further, the end-user interest information 2414, described further herein, may likewise be used as input to determine matching businesses and users. The end-user collections 2412 and end-user interest information 2414 may be used by the recommendation engine 2402 in conjunction with collection filtering 2424, which could include one or more collaborative filtering algorithms and/or indexes, to determine similarities between the first end user and other users and their business preferences. For example, say a set of collection/interest information for the first end user includes five characteristics, recommendation engine 2402 may determine that a threshold number of other users sharing those five characteristics have indicated a preference for a particular business in the relevant location that the first end user has not already included in a collection. Recommendations could be scored based at least in part on the extent of common characteristics shared by the first end user and the other users.
In the case that it is determined that the user travels to a new location that is different from a location with which the user is generally associated, it may be further determined whether businesses in the user's current collections have additional business sites in the new location. For example, a user may have a business already in the user's collection that is a part of a chain of businesses that includes an additional site in the user's current location. In some embodiments, an identification of the additional site in the new location may trump other recommendations such that the additional site may be selected as a top recommendation for the particular user. In other embodiments, the additional site may not automatically trump other recommendations but may be scored, perhaps relatively highly, along with other recommendation possibilities. In some embodiments, the additional site is a recommendation possibility may be further qualified based on other criteria, such as frequency of user visits to the business in the previous location (e.g., a chain business may be scored highly if the user frequently visited the business in the previous location).
In some embodiments, end-user relationship information 2416 may be processed by the recommendation engine 2402. The recommendation engine 2402 may select businesses based at least in part on the end user relationship information 2416 and relationship filtering 2426. Recommendations could be selected based at least in part on a number of recommendations derived from users within a certain degree of closeness to the first end user in one or more relationship graphs about relationships between user identifications via the orchestration platform and/or other forums. Recommendations could be scored based at least in part on the relationships between the first end user and the other users, with various embodiments differentiating degrees of closeness and/or forums.
In some cases, only the most relevant relationships to the first end user are used as a basis for selecting recommendations. For example, associated user identifications within a predetermined maximum degree of closeness between the user identifications of the recommending users and the first end user may be considered for selecting recommendations. Closeness may be based on the number of independent relationships between two users. For example, two users may be directly related though a friendship/connection and may be considered to have a closer relationship when they are also members of the same group as compared to two users that do not share a common group. Furthermore, two users that share multiple common groups and have friendships or connections on multiple forums/networks may be considered to be closer than those that have fewer connections.
In some embodiments, end-user demographic information 2418 may be processed by the recommendation engine 2402 to select businesses based at least in part on demographic filtering 2428. The recommendation engine 2402 may determine a correspondence of demographic information of the first end user and other users associated with recommendations. Such determinations may be made based at least in part on any suitable demographic information, such as, for example, information about income level, education level, lifestyle, age, family/household, home ownership, etc. By way of example, the recommendation engine 2402 may determine based at least in part on demographic information that the first end user fits the profile of a relatively young, single male that is a recent college graduate living in an upscale downtown apartment, and may identify recommendations of other users that fit that profile at least to a certain extent. Recommendations could be scored based at least in part on the extent of common demographic characteristics shared by the first end user and the other users.
In some embodiments, end-user consumer information 2420 may be processed by the recommendation engine 2402 to select businesses based at least in part on buying habit filtering 2430. The recommendation engine 2402 may determine a correspondence of buying habit information of the first end user and other users associated with recommendations. By way of example, the recommendation engine 2402 may determine based at least in part on the buying habit information that the first end-user matches a category corresponding to a cutting-edge technology consumer that tends to adopt the latest technology with regard to wireless devices for communication and home control, and may identify recommendations of other users of that consumer type. Recommendations could be scored based at least in part on the extent of common consumer characteristics shared by the first end user and the other users.
In some embodiments, end-user life milestone information 2422 may be processed by the recommendation engine 2402 to select businesses based at least in part on life milestone filtering 2432. The recommendation engine 2402 may determine a correspondence of life milestones of the first end user and other users associated with recommendations. For example, imminent and/or recent college graduates may be matched in order to identify recommendations based at least in part on the similarity. Recommendations could be scored based at least in part on the extent of common milestone characteristics shared by the first end user and the other users.
In some embodiments, the recommendation engine 2402 may use time filtering 2434 to take into account relevant time factors with recommendations. For example, certain recommendations may be more relevant to particular seasons or times during the year. Proximity to certain holidays, for example, may be relevant to certain businesses. In certain embodiments, a time decay factor may be implemented in order to qualify the relevance of recommendations based on how recent the preferences were indicated. For example, a time decay factor may be used with time-based recommendations (e.g., based on season, holiday, user actions, etc.) so that more recent preferences may be given more weight than less recent preferences.
Correspondence between the end-user information 2404 and aggregated, classified business information 2406 may be scored in certain embodiments. For example, weights may be assigned to intersecting sets of characteristics, and the weights may be taken into account with an overall relevance score. Any suitable criteria may be used to identify and assign a weight, and any one or combination of the weights may be summed or otherwise used at least as a partial basis for deriving an overall relevance score. Any suitable scale may be used for the scoring. The recommendation engine 2402 may use one or more blending algorithms to select businesses from a rich set of recommendations based at least in part on the scoring.
In some cases, only recommendations with a predetermined minimum number of associated user identifications may be considered for selection. In some cases, only recommendations having a minimum number of user recommendations overall and having a minimum number of recommendations from recommending users within a maximum degree of closeness to the first end user may be considered for selection.
In some embodiments, the recommendation engine 2402 may rank recommendations according to popularity of the recommendations (e.g., numbers of users indicating the preferences) and/or similarity between the first end user and recommenders. In some embodiments, having identified pertinent recommendations based on user similarities, subsets of recommendations may be selected based at least in part on popularity of the recommendations. In some embodiments, recommendations may first be selected based at least in part on popularity of the recommendations, and then subsets of recommendations may be selected based at least in part on user similarities. Various embodiments may balance popularity of recommendations and similarity of recommenders to the first end user in various ways, with various embodiments placing greater weight on one of those two considerations or equal weight on both.
Accordingly, in some embodiments, the engines 243 (e.g., the orchestration engine 256) may be configured to facilitate individual selections, by end users, of businesses to retain information corresponding to the businesses. The engines 243 may process indicia of selections made by each end user, the indicia being received via a network. The engines 243 may retain collections of business information in one or more repositories. In some embodiments, the engines 243 (e.g., the orchestration engine 256 which may include a classifying engine) may be configured to classify each end user into at least one category of a set of categories that represent classifications of end users based at least in part on one or more sets of attributes defined for classifying various end users.
In some embodiments, the engines 243 (e.g., the recommendation engine 2402 which may include a matching engine) may be configured to process first information enabling unique identification of a first end user, process second information about a first location corresponding to the first end user, and match the first end user to a first category from the set of categories. The engines 243 may identify a first set of collection information associated with a first set of end users that correspond to the first category and the first location, determine a recommendation for the first end user based at least in part on the first set of collection information, the first category, and the first location, cause indication of the recommendation to a first end-user computing device, and facilitate selection of the first business to retain information corresponding to the first business in association with the first end user. In some embodiments, the engines 243 (e.g., the recommendation engine 2402 which may include a harvesting engine) may be configured to: gather data about the first end user from one or more data sources, and analyze the data about the first end user to determine a first set of one or more attributes of the first end user. The matching the first end user to the first category may be based at least in part on determining that the first set of one or more attributes of the first end user correspond to the first category, and the first set of end users that correspond to the first category may share the first set of one or more attributes in common with the first end user. In some embodiments, the engines 243 (e.g., the recommendation engine 2402 which may include a ranking engine) may be configured to rank a set of businesses associated with the first set of collection information based at least in part on a first metric, where the determining the recommendation for the first end user comprises selecting the first business based at least in part on the ranking.
FIG. 25 is a block diagram that illustrates an example method 2500 of offer provisioning where recommendations include offers for particular end users, in accordance with certain embodiments of the present disclosure. The features of method 2500 may be facilitated by the recommendation engine 2402 with the recommendation generation described above.
As indicated by block 2502, one or more businesses may be identified based at least in part on the end-user information 2402 and the recommendation information 2406. As indicated by block 2504, one or more advertising profiles corresponding to the one or more businesses may be retrieved and processed. With an advertising profile, a merchant may have previously indicated specific offer information, such as coupons, for provisioning to end users of the orchestration platform based on one or more trigger events. Advertising profiles may be defined via the offer manager 2100 in some embodiments.
As indicated by block 2506, one or more business rules may be identified based at least in part on the one or more advertising profiles. As previously described, an advertising profile may include certain business rules 2106 for offer information provisioning. The business rules 2106 could specify trigger event(s) 2108 that could include, e.g., rules for handling provisioning in view of any one or combination of events associated with an end user's orchestration account. In some embodiments, one or more trigger events 2108 could include location parameters to allow for provisioning in view of a location identified for an end user. The business rules 2106 could specify location parameters could include, e.g., rules for handling provisioning in view of a location identified for an end user. The business rules 2106 could specify one or more temporal conditions, such that provisioning may depend on one or both of temporal condition(s) and trigger events.
In various embodiments, the business rules 2106 could specify any one or combination of user type aspects of the recommendation information 2406, such as demographic criteria and/or buying habit criteria. As indicated by block 2508, in some embodiments, it may be determined whether the business rules specify user type criteria. In the case that the business rules do specify such criteria, it may be determined whether the first end user satisfies the criteria, as indicated by block 2510.
However, in the case that the business rules do not specify such criteria, the criteria could be system-inferred in some embodiments, as indicated by block 2512. The criteria could be inferred based at least in part on the aggregated and classified recommendation information 2406. For example, recommendation information for a given advertiser may be determined to correspond to certain demographic and/or buying habit criteria, as previously described. Even though an advertiser did not specify user type criteria, the system may determine a high correlation between users recommending the business and certain user type characteristics. Thus, as the inferred criteria may be based on recommender that share similarities with the first end user, the system could assume that the inferred criteria are satisfied as to the first end user. Accordingly, an advertiser may target consumers based on specific user type criteria, or the platform may identify specific user type criteria for the advertiser as a potential target.
As indicated by block 2510, it may be determined whether the conditions specified by the business rules are satisfied. As indicated by block 2514, it may be determined whether the business rules specify conditions for provisioning offer information to users that have not already added the respective business to a collection. If the business rules do specify such conditions, the system 102 may automatically provide offer information to an end user based on the merchant-specific business rules 2106 on behalf of the particular merchant without further merchant intervention. The flow may transition to block 2306 of FIG. 23, where descriptive content that is selected for the recommendation may include the offer information that an advertiser has specified, and the descriptive content may be transmitted to the first end user in accordance with the business rules 2106 specifying a form of provisioning 2110.
However, if the business rules do not specify such conditions, the system 102 may be configured to present automatically identified offer information (i.e., identified based on the merchant-specific business rules 2106 and the recommendation analysis) for merchant selection so that the merchant may have the choice as to whether to dispatch the offer information, as indicated by block 2516. In addition to the identified offer information, any suitable descriptive information pertaining to the recommendation analysis may be provided. For example, the merchant may be notified that the first end user matches certain categories that correspond to the merchants offer, other users that have recommended the merchant, and/or the like. Accordingly, the platform may provide recommendations to merchants as to particular users to whom the merchants may wish to send offer information.
FIG. 26 is a block diagram that illustrates an example method 2600 of facilitating features to allow a user of the platform to direct queries to other users, in accordance with certain embodiments of the present disclosure. The features of method 2600 may be facilitated by the one or more engines 243 in some embodiments, which may be configured to provide a query engine. As indicated by block 2602, one or more user selectable options may be provided to facilitate queries directed other users.
User-selectable options could be presented in any suitable manner. For example, user selectable options may be presented with any one or combination of the user interfaces and/or user interface features disclosed herein and the like. As indicated by block 2604, one or more user selections and a user query may be processed.
As indicated by block 2606, a specific business may be identified based at least in part on the query in some embodiments, where the query and/or selections explicitly indicate a particular business. Certain embodiments may provide features to allow a user of the platform to ask other users of the platform about a business that the other users have added to their collections. A user could identify a particular business via a search interface, a suggestion, a public collection, a shared window, and/or the like.
As indicated by block 2608, in some embodiments, one or more business categories may be identified based at least in part on the query. Certain embodiments may provide features to allow a user of the platform to ask other users of the platform about a business category and/or something related/relatable to a business category. For example, a user may enter question, and the platform may parse the words of the question and relate the keywords of the question to one or more business categories. Thus, embodiments disclosed herein with respect to processing interest data and correlating keywords of the interest data to business categories may also be applied to correlating user queries to one or more business categories.
As indicated by block 2610, a set of users may be identified as a potential audience for queries. In some embodiments, the set of users may be identified based at least in part on one or more user selections that may indicate a desired audience. The set of users could be restricted to users of the platform in some cases.
However, certain embodiments may provide features to allow for queries to be directed not only to other platform users, but also to users of one or more networking forms, such as a social and/or business network. A query could, for example, be directed to other users related to the querying user via a social graph. The querying user may be able to select one or more desired audiences with some embodiments.
As indicated by block 2612, in some embodiments, a subset of the users may be identified based at least in part on user qualification. Any suitable user qualification, such as any one or combination of the user qualification aspects disclosed herein, may be used in various embodiments. Users could be selected on the basis of interaction with the business and/or business category. For example, the subset of users may be selected based at least in part on the users having added the business and/or a business in the particular business category to collections.
In a set of embodiments, the platform may identify a set of users as a potential audience for queries based at least in part on an assessment of the likelihoods that the users will reply to queries. Users could be selected based at least in part on user interaction with the platform. Users could be selected based at least in part on whether the users have engaged the business and/or business in a particular business category.
FIG. 27 depicts a functional block diagram of certain aspects of end-user qualification 2700 to facilitate querying, in accordance with certain embodiments of the present disclosure. Various embodiments may employ any one or combination of various methods of qualifying end users. End-user data may be captured, as disclosed herein, and used to qualify users to indicate, infer, and/or determine which end users are likely to respond to particular queries and/or have a good basis to respond. An end-user's interactions with the orchestration platform can be broken down and assessed based on any one or combination of various factors, such as, for example, duration of various directed interactions, locations of the end user relative to business locations, demographic information of the end user, collection/window development by the end user, content added by the end user, communications with merchants, keyword analysis user-generated content and/or communications, and/or the like. Based on such indicia, an end user can be qualified.
Having end-user data, the system 102-2 may implement an end-user qualification process 1904-1. Some embodiments may qualify an end-user according to a graduated scale. Any suitable scale may be used in various embodiments. In some embodiments, a scale could entail a categorization scheme 2706, with any suitable categories to characterize likelihood of responsiveness and/or response quality, and could correspond to very high, high, medium, and low likelihood segments. A scale could entail an end-user scoring system, as disclosed herein, with an end-user score corresponding to an assessment of an end-user's potential to respond to queries.
The criteria for qualifying consumers may take into account the extent of end-user interaction. A greater extent of interaction could increase a ranking assigned to a particular user. The user interaction considered may include one or more of interaction directed to the merchant, the business area of the merchant, and/or other merchants related to the merchant's business area. The criteria for qualifying consumers may take into account the extent of user interaction with a collection and/or information window associated with the merchant, the business area of the merchant, and/or other merchants related to the merchant's business area. The qualification of a particular consumer may also be weighted as a result of keywords being used in communication and/or commentary associated with a collection and/or window related to the merchant—e.g., the keywords may indicate a user ready to buy, engage services, and/or otherwise conduct business. The qualification of a particular consumer may be weighted more heavily as a result of indicia that the consumer made a purchase, engaged services, and or otherwise conducted business.
In various embodiments, any one or combination of: location information 1902-1; an end user's interaction on the orchestration platform 1904-1 (which could also include interaction with networks, such as business/social networks, through or otherwise associated with the platform); end-user curation (1916-1) may be taken into account as end-user data of interest (which may be assessed in terms of curation time, curation instances, user-added content, etc.); an end user's interaction with the business and/or businesses corresponding to the query (1924-1); an end user's collection/window share activity (1926-1) (which may be assessed in terms of numbers of occurrences, form of sharing, size of audience, feedback on shares, etc.); an end user's public collection share activity (1940-1); an end user's previous responses (2742) to queries (e.g., instances, response-query ratio, etc.); the recency of the end user's activities (2744) (which may be assessed in view of certain time period thresholds); and/or the like could be assessed and assigned points accordingly, with greater points being assigned with greater correspondence to the business and/or business category being queried about. One or more the top-ranked categories 1906-1 of users may be used to select users as query recipients, and flow may transition back to block 2610 of FIG. 26. The selection could be iteratively expanded if sufficient responses are not received with certain time thresholds.
With respect to block 2610, users could be selected based at least in part on explicit and/or implicit indicia of preference for the particular business and/or category via the platform and/or other networks. Users could be selected based at least in part on user type. For example, users having similarities with the querying user may be identified and selected. The user selection could include any one or combination of the features disclosed herein with respect to the recommendation generation 2400 as applied to facilitate identifying pertinent recipients for a particular end user's queries, with the end result being an audience selection rather than a recommended business.
FIG. 28 depicts a functional block diagram of certain aspects of query recipient selection 2800, in accordance with certain embodiments of the present disclosure. One or more engines 243 may be configured to provide a query engine 2802. The query engine 2802 may analyze end-user information 2404 for a first end user and aggregated, classified business information 2406 to identify a set of users. The query engine 2802 may be configured to provide features similar to the features disclosed with respect to the recommendation engine 2402, except that the query engine 2802 may first identity users that have indicated preference for the business and/or business category corresponding to the query and then may apply the filtering to identify a subset of users as query recipients.
Referring again to FIG. 26, as indicated by block 2614, the query may be conveyed to the identified users. In various embodiments, the query may be conveyed via any one or combination of notification means such as those disclosed herein. For example, social/business networking services account postings/messages, platform account notifications, pop-ups, and/or other alerts with the platform application, text messages, voice notifications, push notifications, e-mails, and/or other any suitable means could be employed to allow for the presentation of query information.
As indicated by block 2616, the end-user actions may be monitored. Responses to the query may be harvested, as indicated by block 2618. As indicated by block 2620, in some embodiments, non-responsiveness to the query may likewise be monitored. The harvesting responses could be provided by way of user selectable options provided via the platform account and/or the social business network services, API calls, crawling, pull and/or push user feedback in any suitable way, and/or the like.
As indicated by block 2622, responses to the query may be conveyed to the querying user in any suitable manner. For example, the responses may be conveyed via any suitable interface of a platform application, such as a dedicated query results page, an activity feed, pop-ups, or any other suitable notification means. In some embodiments, the responses may be quantified according to any user metrics, and such information may be presented to the querying user. For example, responses coming from platform users may be quantified, responses from social network users may be quantified, etc. Furthermore, descriptive information about the users, the selection criteria, and/or the like may be presented to the querying user.
Referring next to FIG. 29, an exemplary environment with which embodiments may be implemented is shown with a computer system 2900 that can be used by a designer 2904 to design, for example, electronic designs. The computer system 2900 can include a computer 2902, keyboard 2922, a network router 2912, a printer 2908, and a monitor 2906. The monitor 2906, processor 2902 and keyboard 2922 are part of a computer system 2926, which can be a laptop computer, desktop computer, handheld computer, mainframe computer, etc. The monitor 2906 can be a CRT, flat screen, etc.
A designer 2904 can input commands into the computer 2902 using various input devices, such as a mouse, keyboard 2922, track ball, touch screen, etc. If the computer system 2900 comprises a mainframe, a designer 2904 can access the computer 2902 using, for example, a terminal or terminal interface. Additionally, the computer system 2926 may be connected to a printer 2908 and a server 2910 using a network router 2912, which may connect to the Internet 2918 or a WAN.
The server 2910 may, for example, be used to store additional software programs and data. In some embodiments, software implementing the systems and methods described herein can be stored on a storage medium in the server 2910. Thus, the software can be run from the storage medium in the server 2910. In another embodiment, software implementing the systems and methods described herein can be stored on a storage medium in the computer 2902. Thus, the software can be run from the storage medium in the computer system 2926. Therefore, in this embodiment, the software can be used whether or not computer 2902 is connected to network router 2912. Printer 2908 may be connected directly to computer 2902, in which case, the computer system 2926 can print whether or not it is connected to network router 2912.
With reference to FIG. 30, an embodiment of a special-purpose computer system 3000 is shown. The above methods may be implemented by computer-program products that direct a computer system to perform the actions of the above-described methods and components. Each such computer-program product may comprise sets of instructions (codes) embodied on a computer-readable medium that directs the processor of a computer system to perform corresponding actions. The instructions may be configured to run in sequential order, or in parallel (such as under different processing threads), or in a combination thereof. After loading the computer-program products on a general purpose computer system 3026, it is transformed into the special-purpose computer system 3000.
Special-purpose computer system 3000 comprises a computer 3002, a monitor 3006 coupled to computer 3002, one or more additional user output devices 3030 (optional) coupled to computer 3002, one or more user input devices 3040 (e.g., keyboard, mouse, track ball, touch screen) coupled to computer 3002, an optional communications interface 3050 coupled to computer 3002, a computer-program product 3005 stored in a tangible computer-readable memory in computer 3002. Computer-program product 3005 directs system 3000 to perform the above-described methods. Computer 3002 may include one or more processors 3060 that communicate with a number of peripheral devices via a bus subsystem 3090. These peripheral devices may include user output device(s) 3030, user input device(s) 3040, communications interface 3050, and a storage subsystem, such as random access memory (RAM) 3070 and non-volatile storage drive 3080 (e.g., disk drive, optical drive, solid state drive), which are forms of tangible computer-readable memory.
Computer-program product 3005 may be stored in non-volatile storage drive 3080 or another computer-readable medium accessible to computer 3002 and loaded into memory 3070. Each processor 3060 may comprise a microprocessor, such as a microprocessor from Intel® or Advanced Micro Devices, Inc.®, or the like. To support computer-program product 3005, the computer 3002 runs an operating system that handles the communications of product 3005 with the above-noted components, as well as the communications between the above-noted components in support of the computer-program product 3005. Exemplary operating systems include Windows® or the like from Microsoft® Corporation, Solaris® from Oracle®, LINUX, UNIX, and the like.
User input devices 3040 include all possible types of devices and mechanisms to input information to computer system 3002. These may include a keyboard, a keypad, a mouse, a scanner, a digital drawing pad, a touch screen incorporated into the display, audio input devices such as voice recognition systems, microphones, and other types of input devices. In various embodiments, user input devices 3040 are typically embodied as a computer mouse, a trackball, a track pad, a joystick, wireless remote, a drawing tablet, a voice command system. User input devices 3040 typically allow a user to select objects, icons, text and the like that appear on the monitor 3006 via a command such as a click of a button or the like. User output devices 3030 include all possible types of devices and mechanisms to output information from computer 2302. These may include a display (e.g., monitor 3006), printers, non-visual displays such as audio output devices, etc.
Communications interface 3050 provides an interface to other communication networks 3095 and devices and may serve as an interface to receive data from and transmit data to other systems, WANs and/or the Internet 3018. Embodiments of communications interface 3050 typically include an Ethernet card, a modem (telephone, satellite, cable, ISDN), a (asynchronous) digital subscriber line (DSL) unit, a FireWire® interface, a USB® interface, a wireless network adapter, and the like. For example, communications interface 3050 may be coupled to a computer network, to a FireWire® bus, or the like. In other embodiments, communications interface 3050 may be physically integrated on the motherboard of computer 3002, and/or may be a software program, or the like.
RAM 3070 and non-volatile storage drive 3080 are examples of tangible computer-readable media configured to store data such as computer-program product embodiments of the present invention, including executable computer code, human-readable code, or the like. Other types of tangible computer-readable media include floppy disks, removable hard disks, optical storage media such as CD-ROMs, DVDs, bar codes, semiconductor memories such as flash memories, read-only-memories (ROMs), battery-backed volatile memories, networked storage devices, and the like. RAM 3070 and non-volatile storage drive 3080 may be configured to store the basic programming and data constructs that provide the functionality of various embodiments of the present invention, as described above.
Software instruction sets that provide the functionality of the present invention may be stored in RAM 3070 and non-volatile storage drive 3080. These instruction sets or code may be executed by the processor(s) 3060. RAM 3070 and non-volatile storage drive 3080 may also provide a repository to store data and data structures used in accordance with the present invention. RAM 3070 and non-volatile storage drive 3080 may include a number of memories including a main random access memory (RAM) to store of instructions and data during program execution and a read-only memory (ROM) in which fixed instructions are stored. RAM 3070 and non-volatile storage drive 3080 may include a file storage subsystem providing persistent (non-volatile) storage of program and/or data files. RAM 3070 and non-volatile storage drive 3080 may also include removable storage systems, such as removable flash memory.
Bus subsystem 3090 provides a mechanism to allow the various components and subsystems of computer 3002 communicate with each other as intended. Although bus subsystem 3090 is shown schematically as a single bus, alternative embodiments of the bus subsystem may utilize multiple busses or communication paths within the computer 3002.
According to an aspect of the present invention, a data storage system may be provided that supports the storage and/or retrieval of user-generated content. The data storage system may be implemented as part of the interaction infrastructure 102 discussed in FIG. 1-2. In particular, the data storage system may implement as a part of master data management layer 265 shown in FIG. 2. In an embodiment, data storage services provided by the data storage system may be invoked by other components of the interaction infrastructure such as information handling engines 243 shown in FIGS. 2D-E. For instance, the data storage system may be configured support functionalities of information orchestration engines 256 discussed in FIG. 2E.
FIG. 31 illustrates an exemplary environment 3100 in which a data storage system may be implemented, in accordance with embodiments. As discussed above, the data storage system 3102 may be implemented as part of the interaction infrastructure 102 discussed in FIG. 102. One or more data users 3102 can communicate with a data storage system 3102. Unless otherwise clear from context, the term “data user” refers to a human or non-human entity that utilizes the data storage services described herein. Such entities may include datacenters, mainframes, individual computing devices, distributed computing environments and customer-accessible instances thereof or any other system capable of communicating with the data storage system. A data user may generate and/or consume data. In some embodiments, a data user may refer to a machine instance (e.g., with direct hardware access) or virtual instance of a distributed computing system provided by a computing resource provider that also provides the data storage system. In some embodiments, the data storage system is integral to the distributed computing system and may include or be implemented by an instance, virtual or machine, of the distributed computing system. The data users of the data storage system may include components from the application services management layer 240, the interface layer 215 and/or the application/device layer 210 of the interaction infrastructure 102 discussed in FIG. 2. For instance, data users of the data storage system may include applications 206 and/or client devices 205 from the application/device layer 210 and/or application services servers 242 from the application service system 241 as shown in FIG. 2A. In an example, a data user may include an information handling engine 243 discussed in FIGS. 2D-E, such as an information orchestration engine 256.
The data storage system 3102 can include a storage interface layer 3106 comprising one or more interface servers 3108. The interface servers 3108 can be configured to implement, individually or collectively, an interface between the data storage system 3102 and the data users 3104. The interface may include an application programming interface (“API”) that enables a data user to programmatically interface with the various features, components and capabilities of the data storage system. Such APIs may be part of a user interface that may include graphical user interfaces (GUIs), Web-based interfaces or services, programmatic interfaces such as application programming interfaces (APIs) and/or sets of remote procedure calls (RPCs) corresponding to interface elements, messaging interfaces in which the interface elements correspond to messages of a communication protocol, and/or suitable combinations thereof. A data user may request the performance of any of service provided by the data storage system by sending API requests to the interface layer of the data storage system. Similarly, the data storage system may provide responses to the API requests. Such requests and responses may be submitted over any suitable communications protocol, such as Hypertext Transfer Protocol (“HTTP”), File Transfer Protocol (“FTP”) and the like, in any suitable format, such as REpresentational State Transfer (“REST”), Simple Object Access Protocol (“SOAP”) and the like. In some embodiments, the interface layer 3106 may be implemented as a part of the application services management layer 240, and/or a part of the master data management layer 265 of FIG. 2. In some embodiments, the interface layer 3106 may be implemented at least partially by the application services system 241 of FIG. 2A, by the data management system 266 of FIG. 2A, or both.
The data storage system 3102 can include a plurality of storage entities used to store data. The interface layer 3106 may be configured to interact with the storage entities to fulfill requests from data users 3104. Such interactions may include storing and retrieving of data objects. As used herein, a storage entity can include any entity configured to store data and may include a storage device (e.g., solid state drive, hard disk drive, tape drive), storage node 3112, datacenter 3110, or the like. In an embodiment, the storage entities may be implemented as a part of the master data management layer 265 of FIG. 2 and/or implemented at least partially by the data management system 266 of FIG. 2A. For instance, the storage entities can include the data management servers 242 and/or data stores 268 discussed in FIG. 2A.
A storage node 3112 may include a storage server controlling a collection of storage devices. A datacenter 3110 may comprise a collection of storage nodes 3112. Such storage entities may be physical, virtual or any abstraction thereof (e.g., instances of distributed storage and/or computing systems) and may be organized into any topology, including hierarchical or tiered topologies such as a ring, an array, or a cluster. The storage entities may communicate with each other, for example, using a storage area network (“SAN”). The storage entities may be controlled by instructions or control messages provided by storage servers, interface servers, and/or any other suitable control devices. Communications between components within the data storage system and/or between external entities and the data storage system may be provided by any suitable messaging protocol such as RabbitMQ provided by Pivotal Software.
The hardware and/or software configuration and characteristics of the data storage system may depend on various requirements related to performance, scalability, reliability, flexibility, complexity, functionality, and the like. Specifically, the data storage system may be configured to provide high storage capacity, high throughput, load balancing, data redundancy, fault tolerance, and/or the like. Such hardware and/or software characteristics of the data storage system may be predetermined (e.g., by a system administrator) and/or dynamically configurable (e.g., by an automated process). In some embodiment, the data storage system can implement one or more types of database management systems such as a NoSQL database management system, a relational database management system (“RDBMs”) or any other suitable database management systems. Under certain situations, NoSQL databases may offer better performance (e.g., faster retrieval and/or update) than relational databases. NoSQL database management systems can be modeled in means other than the tabular relations used in relational databases. For instance, data in a NoSQL database may be modeled using columns, documents, key-value pairs, graphs, and the like. Examples of column-based NoSQL data stores include Accumulo, Cassandra, or HBase provided by Apache Software Foundation, and Big Table provided by Google. Examples of document-oriented data stores include Elasticsearch provided by Elasticsearch BV, Lotus Notes provided by IBM, and MongoDB provided by MongoDB Inc. Examples of key-value-based data stores include DynamoDB provided by Amazon.com and FoundationDB. Examples of graph-based data stores include Allegro provided by Franz, Inc. and InfiniteGraph provided by Objectivity, Inc. The data storage system discussed herein may include one or more types of data stores. For instance, in an embodiment, the data storage system comprises both a column-based data store (e.g., Cassandra) and a document-based data store (e.g., Elasticsearch). The Cassandra data store, with high throughput, may be used to as the primary storage for user-related and/or user-generated data. The Elasticsearch data store, with efficient search capabilities, may be used to store searchable documents and/or data. For example, data stored in the Elasticsearch may include collection and/or business information that will be search by collection-specific and/or business-specific attributes such as geographical location, type or category, name, keywords, description, and the like. In other embodiments, the data storage system may implement only one type of data store (e.g., Cassandra), or more than two types of data stores depending on the specific requirements.
The number, type, and configuration of the storage entities may be configured to satisfy certain system or business requirements. The numbers of storage nodes and/or data centers per data center may determine or be determined by a data redundancy scheme such as error-correction code. For instance, an exemplary data storage system may have two datacenters, each with eight storage nodes. The data centers may be replica of each other to provide redundancy. The storage nodes may be used to redundantly store encoded portions (e.g., shards) of data objects according to a predetermined redundancy scheme. In some embodiments, the storage nodes may be configured to provide relatively higher storage capacity and less processing resources (e.g., CPU, memory) than the interface servers, which are typically configured to handle data user requests with a high throughput.
In an embodiment, the data storage system may provide a multi-tenant or multi-customer environment where each tenant or customer may store, retrieve, delete or otherwise manage data in a data storage space allocated to the customer. For instance, the storage entities of the data storage system may be partitioned so as to implement multi-tenancy.
According to an aspect of the present invention, the data storage system may be configured to maintain the same data in different databases or database tables with different characteristics so as to optimize the retrieval of data. Depending on the characteristics of specific queries, different database tables may be queried to fulfil different queries on the same underlying data. The specific data model design (e.g., database tables and columns) may depend on the specific types of database stores (e.g., NoSQL or relational database) and/or the specific business requirement (e.g., types of queries or use cases).
In some embodiments, the data model designs may be used to overcome restrictions imposed by an underlying database management system. For example, such a restriction may specify that a query cannot be performed using a secondary key without using a primary key, or using a tertiary key without the primary and secondary keys. Another exemplary restriction may specify that an IN query (using multiple values) may be performed only on a primary key, and not a secondary key, when the SELECT include a collection column (e.g., including a list, set, or map). Yet another restriction may forbid an IN query on both a primary key and a second key.
Alternatively or additionally, the data model design may be used to optimize specific use cases or to implement certain features of the orchestration platform (also referred to as personalization system or service). Examples of such use cases are provided after the discussion of the database tables below.
According to an aspect of the present invention, database tables for storing user collection information can be provided. FIG. 32 illustrates exemplary database tables 3202 and 3204 used to store collection information, in accordance with embodiments. The database tables 3202 and 3204 (as well as other database tables discussed herein) may be implemented by one or more storage entities discussed herein (e.g., storage devices, storage nodes, datacenters).
A collection may be originally created by or for a specific user. Each collection associated with a particular user may be uniquely identified (e.g., by a local collection id) among all the collections for that user. Local collection ids may or may not be unique across different users. For instance, the local collection id for the collection c1 3201 of user u1 (e.g., “c1” or “Food”) may be identical to the local collection id for the collection c1 3205 of user u2. A collection may also be identified uniquely among all the collections across all users by a global collection id. A collection may include zero, one, or more business listings. An owner or editor (e.g., a user with write access) of a collection can edit a collection. Such edit of collections may include adding, removing, or updating business listings and the associated business attributes within the collection and/or adding, removing, or updating collection-specific attributes such as keywords, access control settings, and the like. A user may also have read-only access to a collection such that the user can view but not edit content of the collection. Examples of users with read-only access can include users that follow public and/or featured collections or users with read-only access to privately shared collections.
A collection may be created by or created for a first user but shared with or followed by a second user. In such cases, the second user may have access to the collections of the first user. Such access may include read and/or write access. For instance, the second user may follow a collection (e.g., public or featured) of a first user and has read-only access to such a followed collection. As another example, the first user may share one of his/her collection with the second user (e.g., privately). When granting access to the shared collection, the first user may determine whether to grant the second user read-only or read/write access to the shared collection. For instance, as illustrated in FIG. 32, the user u1 may follow the collection c1 3205 of the user u2 or the user u2 may share his/her collection c1 3205 with the user u1. The followed or shared collection c1 3205 of the user u2 may appear to u1 as a shortcut to the collection c2 3203.
In an embodiment, when a user follows or access a shared collection, data associated with the followed or shared collection is copied and associated with the user. Subsequent update to the followed or shared collection would require update to the copied collection. A drawback of this approach is that when a collection is followed by or shared with a large number of users, the large number updates that need to be performed on many copies of the collection when the original collection is updated resulting in significant performance overhead. To mitigate this problem, a link to the original collection may be created for a follower or a user receiving a shared collection (a sharee) when the collection is followed or shared for, instead of a copy of the original collection with all the associated collection data. When the followed or shared collection is updated, the followers and sharees of the collection can follow the links to access the updated collection without having to update copies of the collection. The latter approach is illustrated in FIG. 32.
As illustrated, the database tables 3202 and 3204 can be used to store collection data associated with users. Each of the tables may include a plurality of entries (also known as rows or records) and each entry can have a plurality of values respectively corresponding to a plurality of fields or attribute names. Each field may be implemented as one or more database columns. Each column may be used to store a single value or a collection of values such as a list, a set, or a map (e.g., comprising key-value pairs).
The collections table 3202 can be configured to store the association between users and their corresponding collections. Each entry (also referred to as record or row) of the collections table 3202 can represent a collection for a particular user, which may be an original collection or a link to a followed or shared collection. Each entry of the collections table 3202 can include a user id field 3206(a), a local collection id field 3206(b), and a data/link field 3206(c). The user id field 3206(a) can be used to store user identification information of the user that uniquely identifies a user of the system. The user id field 3206(a) may be implemented by a corresponding database column. The local collection id field 3206(b) can be used to store information that uniquely identifies the collection within all collections for that user. The local collection id field 3206(b) can be implemented by a corresponding database column. As discussed above, local collection ids may not be unique across multiple users. That is, different users may have collections that have the same local collection ids. The data/link field 3206(c) can be used to store either collection data associated with the particular collection when the user is the owner of the collection or linking information that may be used to identify a shared or followed collection. For instance, the linking information may include information for identifying a corresponding entry in the collections by id table 3204, discussed below. The data/link field 3206(c) can be implemented by one or more database columns.
FIG. 32 shows collections table 3202 as containing one entry for each collection of each of the users u1 and u2. The entry 3210 represents the collection c1 3201 of the user u1. The entry 3214 represents the collection c1 3205 of the user u2. Both entries correspond to collections that are owned by the corresponding users and as such, the data/link fields 3206(c) for both entries include detailed collection data associated with the owned collections such as business attributes and collection attributes. In contrast, the entry 3212 represents a link to a shared/followed collection c2 3203 of the user u1 and thus contains linking information in the data/link field that links to the corresponding global collection entry 3218 in the collections by id table 3204. More details of the data/link field 3206(c) are provided in FIG. 33.
The collections by id table 3204 can be configured to store collection data associated with global collection ids. Each entry (record or row) of the collections table 3204 can represent a globally unique collection with corresponding collection data rather than a link to a shared or followed collection. Thus, there is one entry for each globally unique collection in the system. For example, even if a collection is shared with or followed by 100 other users, there is still only one entry corresponding to that collection in the collections by id table 3204; whereas there would be 101 entries in the collections table 3202 (including one entry corresponding to the original collection and 100 entries corresponding to the links to the original collection). The collections by id table 3204 can include a global collection id field 3208(a), and a data field 3208(b). The global collection id field 3208(a) can be used to store information that globally identifies the collection among all collections of all users. In some embodiments, the global collection id field may include a global unique identifier (GUID) or a combination of information. The global collection id field 3208(a) may be implemented by a corresponding database column. In an example, the global collection id can be based on a combination of all or portions of a user id, a local collection id, and/or a timestamp. In some other examples, the global collection id may be based, alternatively or additionally, on other identifying information such as location information. The timestamp may represent a time when the collection is created or any other suitable time. In various embodiments, combining the various pieces of information to form a global collection id may include concatenating, interweaving, encoding (e.g., with a hash function), or otherwise processing the various pieces of information. The data field 3208(b) of the collections by id table 3204 can be used to store collection data associated with the particular collection. The data field 3208(b) can be implemented by one or more database columns. The data field 3208(b) of the collections by id table 3204 may be similar to the data/link field 3206(c) field of the collections table 3202 except that the data field 3208(b) does not contain any linking information. More details of the data field 3208(b) are provided in FIG. 33.
FIG. 32 shows the collections by id table 3204 as containing one entry for each original (i.e., non-linking) collection of the users u1 and u2. Thus, the table contains two entries, entry 3216 representing the collection c1 3201 of the user u1 and entry 3218 representing the collection c1 3205 of the user u2, both collections are original collections. Unlike the collections table 3202 discussed above, the collections by id table 3204 does not contain an entry for the collection c2 3203 of the user u1 because it is merely a shortcut to an owned collection.
Although the collections table 3202 and collections by id table 3204 contains similar, if not identical information, each table may be used to optimize database performance for different use cases. For example, the collections table 3202 can be used to facilitate fast retrieval and/or update of collection information given a user id and a local collection id, thus optimizing the use case where a user views and/or updates his/her own collections. The primary key of the collections table 3202 can include the user id field 3206(a) and the secondary key can include the local collection id field 3206(b). On the other hand, the collections by id table 3204 can be used to facilitate fast retrieval and/or update of collection information given a global collection id such as when a user searches for public or featured collections. The primary key of the collections by id table 3204 can include the global collection id field 3208(a).
FIG. 33 illustrates exemplary database columns or attributes used for storing collection information, in accordance with embodiments. Specifically, the collection data/link columns 3302 may be part of the data/link field 3206(c) of the collections table 3202 of FIG. 32 and the collection data columns 3304 may be part of the data field 3208(b) of the collections by id table 3204 of FIG. 32. In various embodiments, database columns that are more or less than or different than those illustrated may be used.
Columns in the collection data/link columns 3302 may be used to store various types of information such as linking information and/or data information. The linking columns 3306 may include one or more columns for storing information that can be used to identify a linked or original collection entry stored in another table (e.g., collections by id table 3204 of FIG. 32). The linking columns 3306 may include a global collection id column 3320, an original user id column 3322, and an original collection id column 3324 that are used to store, respectively, the global collection identifier of the linked or original collection (e.g., comprising user id, local collection id, and timestamp), the original user id of the linked or original collection, and the original local collection id of the linked or original collection. For instance, the collection entry 3212 in the collections table 3202 of FIG. 32 (corresponding to the linking collection c2 3203 of u1) may have ‘u2c1201504010930’ for its global collection id field (i.e., a combination of user id ‘u2’, local collection id c1, and a timestamp ‘201504010930’), ‘u2’ for its original user id field, and ‘c1’ for its original local collection id field, as shown in the table immediately below.
















Global Collection Id
u2c1201504010930



Original User Id
u2



Original Collection Id
c1










A data portion 3308 of the data/link columns 3302 may include one or more columns for storing non-linking data related to collections. The data portion 3308 may include a business portion 3310 and a collection portions 3312. The business portion 3310 can include a plurality of columns for storing information about businesses included in a given collection. Such business-related columns can include a business ids column 3326 used to store a set of identifiers of businesses that have been added to the collection. A business locations column 3328 can be used to store a map that maps a business id to a corresponding geographic location identifier for each of the businesses included in the collection. Similarly, a business descriptions column 3330 can be used to store a map that maps a business id to a corresponding description for each of the businesses included in the collection. A business images column 3332 can be used to store a map that maps a business id to a corresponding image identifier (e.g., file name, identifier, and/or file path) for each of the businesses included in the collection. A business orders column 3334 can be used to store a map that maps a business id to a corresponding order or ranking for each of the businesses included in the collection. A user may be allowed to modify orders or rankings of the businesses in a collection and the resulting order or ranking may be recorded in this column. An added by user column 3336 can be used to store a map that maps a business id to a corresponding user id of a user that added the business to the collection for each of the businesses included in the collection. Exemplary values for the business-related fields 3310 are provided in the table immediately below.













Business Ids
{‘b1’, ‘b2’, . . . }


Business Locations
{‘b1’: ‘Los Angeles’,



‘b2’: ‘Seattle’,



. . . }


Business Descriptions
{‘b1’: ‘A Great Japanese restaurant.’,



‘b2’: ‘A French restaurant.’,



. . . }


Business Image
{‘b1’: ‘\\images\b1.gif’,



‘b2’: ‘\\images\b2.jpg’,



. . . }


Business Orders
{‘b1’: ‘3’,



‘b2’: ‘1,



. . . }


Added By User
{‘b1’: ‘u2’,



‘b2’: ‘u1’,



. . . }









The collection portion 3312 of the data/link columns 3302 can include a plurality of columns for storing general information about a given collection. Such collected-related columns 3312 can include a followers column 3338 used to store a set of user ids of the followers of a given collection. In an embodiment, the set of user ids for the followers may be used to provide notifications of updates to the collection to the followers. A permissions column 3340 can be used to store a map that maps a user id to a corresponding access right indicator (e.g., ‘r’ for read-only access and ‘w’ for write access) for each user with whom the collection is shared with (e.g., a sharee). A keywords column 3342 can be used to store a set of keywords associated with the collection. The keywords can be used to support keyword search of collections. A role column 3344 can be used to store an indicator indicating a type of a given collection. In some embodiments, the role indicator associated with an entry in the collections table may be used to indicate whether the corresponding entry corresponds to an owned collection or a link to a followed or shared collection. If the latter, then another lookup may be required to retrieve collection data associated with the followed or shared collection. In an example, the role indicator may indicate whether a given collection is an owned collection, a following collection (that links to a followed collection), a link to a privately shared read-only collection, or a link to a privately shared write access collection with values ‘o’, ‘f’, ‘sr’, and ‘sw’, respectively, or any other suitable representation. Exemplary values for the collection-related fields 3312 are provided in the table immediately below.
















Followers
{‘u1’, ‘u2’, . . . }



Permissions
{‘u3’: ‘r’,




‘u4’: ‘w’,




. . . }



Keywords
{‘restaurant’, ‘Japenese’, ‘food’}



Role
‘f’










In various embodiments, some of the columns or fields may be applicable only to specific types of collections or under certain circumstances while others may be applicable to all types of collections. For instance, the followers field 3338 of a collection may include values only when the collection is followed by some other users. The permissions field 3340 may include values when the collection is shared with some other users. In some embodiments, the followers field 3338 is only applicable to a public or featured collection whereas the permissions field 3340 is only applicable to a privately shared collection. In some other embodiments, where a public collection can also be specifically shared, the followers field 3338 and the permissions field 3340 may both be applicable. On the other hand, the role field 3344 may be applicable to all types of collections.
Still referring to FIG. 33, the collection data columns 3304 may be part of the data field 3208(b) of the collections by id table 3204 of FIG. 32. In some embodiments, the collection data columns 3304 of the collections by id table 3204 may be similar to the data/link columns 3302 discussed above when the latter contains collection data rather than linking information. For instance, the collection data columns 3304 can include a business portion 3316 and a collection portion 3318 similar to the business portion 3306 and collection portion 3308 of the data/link columns 3302 of a collections table. The data field 3208(b) of the collections by id table 3204 of FIG. 32 may or may not include a role indicator field 3352 since all entries in the collections by id table correspond to owned collections.
According to an aspect of the present invention, database tables for storing business listings can be provided. In an embodiment, information related to business listings can be stored in at least two database tables, a listings table and a listings by id table. The listings table can be configured to store the association between users and the business listings in their respective collections, as well as collections that a listing belongs to. For instance, the listings table can have a user id column, a business id column, and a collection ids column that are configured to store, respectively, a user identifier of a user, a business identifier of a business included in a collection of the user, and a set of collection identifiers of all collections of the user that include the business. The listings table may be optimized for the retrieval of listing information based primarily on the user id. For instance, the listings table may have the user id column as a primary key and the business id column as a secondary key. An exemplary listings table is provided immediately below. The exemplary listings table illustrate the scenario where a first user u1 has collections c1 and c2. The collection c1 includes businesses b1 and b2 whereas the collection c2 only includes business b1. A second user u2 has a collection c1 that includes the business b2. As illustrated, a business listing can be included in different collections for the same user or in collections for different users.















User Id
Business Id 
Collection Ids









u1
b1
{c1, c2}



u1
b2
{c1}



u2
b2
{c2}










The listings by id table can be configured to store identical or similar information as the listings table discussed above. The listings by id table can have a business id column, a user id column, and a collection ids column that are configured to store, respectively, a business identifier of a business included in a collection of a user, a user identifier of the user, and a set of collection identifiers of all collections of the user that include the business. The listings by id table may be optimized for the retrieval of listing information based primarily on the business id. For instance, the listings by id table may have the business id column as a primary key and the user id column as a secondary key. An exemplary listing by id table is provided immediately below.















Business Id
User Id
Collection Ids









b1
u1
{c1, c2}



b2
u1
{c1}



b2
u2
{c2}










Although the listings table and listings by id table contains similar, if not identical information, each table may be utilized to optimize database performance under different use cases. For example, the listings table can be used to facilitate fast retrieval of collections associated with a given user and business, thus optimizing the use case where a user views collections associated with his/her own businesses. On the other hand, the listings by id table can be used to support efficient implementation of a business indicator functionality discussed below.
Various use cases or features related to the orchestration platform (also referred to as personalization system or service) are discussed below, as supported by the above database tables are discussed above. The personalization system or service may allow users to create, search, edit, follow, and/or share collections and well as adding and removing business listings to the collections. Data generated or used as part of the personalization system or service (e.g., collections and business listings) may be stored by and rendered available by the data storage system (e.g., via an API). In some embodiments, data and/or services provided by the data storage system may be used by the personalization system to generate recommendations to end uses as discussed in FIGS. 22-25 and/or to facilitate user-directed queries and responses as discussed in FIGS. 26-28.
In an embodiment, the personalization system or service can be configured to indicate to a user whether each of a list of businesses is included in one or more collections that belong to the user. The list of businesses may include search results, recommended businesses, businesses in another user's collection, advertisements, or any combination thereof. An indicator may be displayed alongside each business in the list and graphically distinguished in any suitable manner, including with images, shape differentiation, color differentiation, alphanumeric indicia, and/or the like. The indicator may correspond to one or more user-selection options that allow a user to view further details associated with the business, and/or removing or adding the business to a collection of the user. The indicator may also display a list of the one or more collections of the user in which the particular business is included. Alternatively, such a collections list may be displayed upon a user selection of the indicator.
To implement the above-discussed business indicator functionality, one approach is to attempt using the listings table (discussed above) to select each entry that has a user id that is the same as the current user's id and a business id that falls within the list of businesses, such as using the following exemplary query (assuming an exemplary list contain five business listings):

    
    
        select business_id, collection_ids from listings where user_id=‘u1’ and business_id IN (‘b1’, ‘b2’, ‘b3’, ‘b4’, ‘b5’)
    
    


However, such a query may not be permitted due to certain restrictions imposed by the underlying database management system. For example, an exemplary restriction may specify that an IN query (using multiple values) may be performed only on a primary key, and not a secondary key, when the SELECT includes a collection column (e.g., including a list, set, or map). Here, the collection ids column is a collection column (containing a set of collection ids) and the business id column is a secondary key of the listings table, hence the above IN query using the secondary key would not be permitted under the restriction. If the listings table is used, individual queries (such as those below) would have to be made for each of the business in the list, rather than the efficient single IN query above, resulting in performance overhead. When the list of business is long, the performance impact can be significant.

    
    
        select business_id, collection_ids from listings where user_id=‘u1’ and business_id=‘b1’;
        select business_id, collection_ids from listings where user_id=‘u1’ and business_id=‘b2’;
        select business_id, collection_ids from listings where user_id=‘u1’ and business_id=‘b3’;
        select business_id, collection_ids from listings where user_id=‘u1’ and business_id=‘b4’;
        select business_id, collection_ids from listings where user_id=‘u1’ and business_id=‘b5’;
    
    


A better approach would be to use the listings by id table, discussed above, which contain the same data as the listings table but with the business id column as the primary key and user id column as the secondary key. As such, a single IN query can be used (below) that complies with the restriction on IN queries discussed above, instead of multiple “=” queries.

    
    
        select collection_ids from listings_by_id where user_id=‘u1’ and business_id IN (‘b1’, ‘b2’, ‘b3’, ‘b4’, ‘b5’)
    
    


By providing and using the listings by id table instead of the listings table, the functionality of indicating whether businesses in a given list of businesses belong to a given user can be supported efficiently while addressing restrictions of the underlying database.
In an embodiment, the personalization system or service can be configured to support searching of collections. A user may be allowed to perform a search of public and/or featured collections based on one or more collection attributes such as geographical location, name, description, keyword, and the like. Details about the search results (e.g., collections) may be displayed. In an exemplary implementation, the search results may be returned in two steps. In the first step, collection information may be searched based on the user-specified attributes to return a list of collection identifiers of the search results. For this step, a first database optimized for attribute-based search may be queried using the user-specified attributes. An example of such a first database may include a document-oriented NoSql database (e.g., Elasticsearch). The resulting collection identifiers may be used, in a second step, to query a second database optimized for retrieval of collection information based on collection identifiers. An example of such a second database may include a column-based NoSql database (e.g., Cassandra). In an embodiment, the first database is used to store a subset of information that is stored in the second database. The subset of information may include searchable collection attributes associated with collection identifiers. Complete details of collections including searchable attributes and other information may be stored in the second database. Storing only a subset of collection information in the first database allows the attribute search to be performed more quickly and efficiently. In an alternative embodiment, one single database may be used to implement both steps. One approach for implementing the above steps is to query the collections table (e.g., discussed in FIG. 32) using local collection ids. However, since local collection ids may not be unique across different users, the results of the query to the collections table may need to be additionally disambiguated among the users, resulting in extra work and slower performance. A more efficient approach is to use global collection identifiers that uniquely identify collections even across different users in the first and second steps above. That is, the first step would return a list of global collection ids corresponding to the search results and the list of global collection ids can be used to query the collections by id table efficiently to obtain the associated collection information. Furthermore, another reason for using the collections by id table instead of the collections table may be to get around certain restriction imposed by the underlying database management system. Such restriction may specify that a query may not be done using a secondary key without the primary key. Since the collections table has user id as the primary key and collection id as the secondary key, a query may not be performed on the table using only the secondary key, collection id, without using the primary key, user id, according to the restriction. On the other hand, the collections by id table has global collection id as the primary key and so can be queried using that a global collection id only to obtain the desired results without violating the restriction. By providing and using the collections by id table instead of the collections table, the functionality of collection search can be supported efficiently while addressing restrictions of the underlying database.
In an embodiment, the personalization system or service can be configured to support following of collection(s). In particular, a user may be allowed to follow a public and/or featured collection of another user (e.g., by selecting a user control associated with the collection). One approach for implementing following a collection is to copy the data associated with the followed collection into a new collection associated with the user. However, such an approach would require updating the user's copy of the followed collection whenever the followed collection is updated. If a popular collection is followed by thousands of users, updating thousands of copies of the collection can undesirable with respect to performance. A preferred approach is to create a link or shortcut to, instead of making a copy of, the followed collection for each follower. For example, as discussed in FIG. 32, an entry can be created in the collections table 3202 with a link to the corresponding followed collection entry in the collections by id table 3204. The following entry may include the global collection id of the original followed collection, the user id and local collection id of the original followed collection, and a role to indicating whether following entry is a following entry or an owned or original collection.
During a lookup of the collections table, if an entry in the collections table represents a followed or shared collection (e.g., as determined based on the role field of the entry being ‘f’ or ‘s’), then another lookup using the global collection id may be used to query the collections by id table to retrieve the details of the corresponding followed collection. If the entry in the collections table represents an owned or original collection (e.g., as determined based on the role field of the entry being ‘o’), then the details of the collection as stored in the collections table can be returned without further lookup.
In some embodiments, identity of the followers for a given public and/or featured collection may be stored, for example, in a followers field or column of a followed collection. The information about followers may be useful for implementing user notification of trigger events associated with the followed collection such as updating attributes of the collection (e.g., geographic location, keywords, description), adding a business to the collection, removing a business from the collection, copying/following of the collection, a search performed on the followed collection or a business contained therein, and/or the like. Notification may be provided to some or all of the followers associated with a followed collection according to the notification preferences associated with the followers. For instance, the notification preferences may specify the types of trigger events a user would like to be notified of and/or the types of trigger events that the user prefer not to receive notification for. A follower that has turned off notification may not receive any notification regarding the followed collection. The notification preferences may also specify the delivery-related preferences such as user-preferred delivery methods (e.g., email, text message, online social/business networking services, telephone call), user-preferred delivery addresses (e.g., email address, phone number), preferred time (e.g., evenings) and/or frequency (e.g., hourly, daily, weekly) of delivery, and the like. The notification preferences may be user-configurable (e.g., via a user interface) and/or system-provided.
In an embodiment, the personalization system or service can be configured to support the sharing of collections with specific users. These shared collections can be “read only” (R) or “write access” (W) (collaboration). Similar to the requirement discussed above with respect to followed collections, it can be undesirable to create multiple copies of the same collection whenever the collection is shared due to performance concerns. Rather, sharees of collections may have dummy entries in the collections table that link to the original collection that is shared such as discussed in connection with FIGS. 32 and 33. The role field of a sharee's dummy entry (e.g., role column 3344 of FIG. 33) can indicate the type of the sharee collection (e.g., ‘rs’ for read-only share and ‘ws’ for write share). Based on the role field, access control may be implemented accordingly to allow or forbid read/write operations by users with respect to the shared collection.
Additionally and/or alternatively, access control to shared collections may be implemented by a map of share permissions that is maintained for a shared collection (e.g., as shown by the permissions column 3340 and 3348). As an example, if user shared the collection with users u1 and u2 with read-only permission and with u3 with write access, the following map of share permissions may be stored:
{
‘u1’: ‘r’,
‘u2’: ‘r’
‘u3’: ‘w’
}
Such share permissions may enable the determination of whether an update to a collection entry should be allowed. For instance, a request for update may be made to a collection with collection id by a user with user id. The collection id and user id may be used to retrieve a entry from the collections table. If the entry is a link to a shared collection (e.g., as determined by the role column), then permissions column of the link entry or the linked entry may be examined to determine the access right of the given user.
Updates by multiple users to a collaboration collection (a shared collection with write access) may be tracked with a map between businesses in the collection and users that added the businesses. Such a map can be stored, for example, in the added by user column 3336 of the collections table and/or the added by user column 3354 of the collections by id table. In some embodiments, an audit trail of a collaboration collection may be provided based on such a map.
In an embodiment, the personalization system or service can be configured to allow editors (e.g., owners or a sharees with write access) of a collection to set an order for the businesses contained within the collection. The order map may be used to map businesses within a collection to an order or sequence number. Such an order map may be stored, for example, in the order column 3334 and/or order column 3356 discussed in FIG. 33. In some embodiments, certain validation rules may be used to ensure the validity of a user-provided order and/or to automatically order the businesses. Additionally, the personalization system or service may allow users to provide or update other attributes associated with businesses added in a collection such as location information, description, images, keywords, rating, and the like. Such business attributes may be stored, for example, in corresponding columns in the business portion of a collection record (e.g., the business portions 3310 and 3314 of FIG. 33).
In an embodiment, the personalization system or service can be configured to support recording and/or reporting of statistics related users, collections, businesses, and/or any other suitable entities of the personalization system. The statistics may be provided to other components of the personalization system, such as the information handling engines 243 discussed in FIG. 2D and/or external users, devices, or processes. For example, the statistics (e.g., use statistics, existing business listings/collections associated a user) may be analyzed to gauge a user's preferences, interests or habits so as to generation recommendations for users as discussed elsewhere in the disclosure. The recommendations may be generated in combination with other user-specific information such as demographic information, geographic location information, and the like. The recommendations may include recommended business listings, recommended collections, recommended search terms, and the like. In some embodiments, the recording and/or reporting of the statistics may be performed in real time or nearly real time. For instance, the statistics may be made available in real-time via an API or graphical user interface. In some other embodiments, the recording and/or reporting of the statistics may be performed periodically. For instance, the statistics may be provided to users using any suitable communication methods (e.g., email, text messaging, phone calls) on a periodic basis. In some embodiments, audit trails that show recent events or actions may be provided. For instance, a user may view, on a user interface of the personalization system, one or more recent businesses that the user has recently added, one or more searches that the user has performed, one or more collections that the user has created/followed/shared.
In some embodiments, duplicate statistics within a predefined period of time may be filtered and/or removed. For instance, if a user performs an identical action (e.g., performing the same search) at different times (e.g., 5 times) within a relatively short period of time (e.g., 30 seconds), then only one occurrence of the action may be recorded and/or provided as part of the statistics data. The removal of the duplicate actions or events may facilitate identification of distinct actions and/or events. In some other embodiments, all occurrences of relevant actions and/or events are recorded regardless and/or reported regardless of duplicates.
For a collection, the collection-related statistics may include a total number the collection is viewed by users, a total number of updates to the collection, a total number of search hits for the collection, a total number of followers of the collection, and the like. For a business, the business-related statistics may include a total number of users who have the business in their collections, a total number of collections that have the business, and the like. For a user, the user-related statistics may include a total number of collections (e.g., with a breakdown of owned, followed, and privately shared collections) for the user, a total number of businesses in the collections of the user, a number of followers for the user (e.g., for some or all of the collections associated with a user), a number of users with which the user has shared collections with, a number of users from which the user has received shared collections, a total number of coupons for the user, a total number of notes or comments for businesses (e.g., within or outside of the user's collections) that are provided by the user, bookmarks made by the user for collections and/or businesses, ratings and/or reviews submitted by the user (e.g., for businesses and/or collections), and the like. In some cases, operations performed by one user may affect statistics for another user. For instance, if a user u1 shares a collection with a user u2, updates to the shared collection (e.g., addition or removal of business from the collection) can affect the statistics for both the user u1 and the user u2. The user-related statistics may also include statistics about a user's interaction with a user interface provided by the personalization system such as searches performed by the user (e.g., including searches for collections and/or businesses), collections and/or businesses selected by the user, calls or emails sent to businesses through an interface of the personalization system, and the like.
FIG. 34 illustrates an example process 3400 for implementing retrieval of collection information, in accordance with embodiments. Aspects of the process 3400 may be performed, in some embodiments, by components of a data storage system or service such as discussed in connection with FIG. 31. Some or all aspects of the process 3400 (or any other processes described herein, or variations and/or combinations thereof) may be performed under the control of one or more computer/control systems configured with executable instructions and may be implemented as code (e.g., executable instructions, one or more computer programs or one or more applications) executing collectively on one or more processors, by hardware or combinations thereof. The code may be stored on a computer-readable storage medium, for example, in the form of a computer program comprising a plurality of instructions executable by one or more processors. The computer-readable storage medium may be non-transitory. The order in which the operations are described is not intended to be construed as a limitation, and any number of the described operations may be combined in any order and/or in parallel to implement the processes.
The process 3400 can include receiving 3402 a request to retrieve collection data of a collection. In an example, the request may be transmitted from a data user 3104 and received by an interface server 3108 of a data storage system as discussed in connection with FIG. 31. The request may include a user identifier (user id) that uniquely identifies a respective a user of the personalization system and a local collection identifier (collection id) that uniquely identifies a respective collection from collections associated with the respective user. In some cases, the user may include a currently logged in or active user of the system.
In response to receiving the request to retrieve collection data, a first entry from a database table can be retrieved 3404 based at least in part on the request. In particular, the first database table can include a collections table such as the collections table 3202 discussed in FIG. 32. The collections table can include a plurality of entries, each of the entries including at least a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user. Each entry of the collections table can represent an owned collection or a collection that is followed by or shared with the respective user. Retrieving the first entry from the first table based on the request may include retrieving the first entry by querying the first table with the user id and the local collection id that are included in the request.
The retrieved first entry can include a role indicator that indicates the collection type. For instance, the role indicator may indicate whether the entry corresponds to an owned collection (e.g., when the role indicator is ‘o’ or any other suitable value) or a followed collection (e.g., when the role indicator is ‘f’ or any other suitable value). Additionally, the role indicator may also be used to indicate whether the entry corresponds to a shared collection (e.g., when the role indicator is ‘s’ or any other suitable value). In some embodiments, the role indicator may be used to indicate access rights associated with the collection such as a read-only shared collection (e.g., when the role indicator is ‘rs’ or any other suitable value) or a write access (editable) shared collection (e.g., when the role indicator is ‘ws’ or any other suitable value). When the role indicator indicates that the entry corresponds to an owned collection, it means the collection is originally created by the user with the user id of the entry, owned by the user, and/or editable by the user. When the role indicator indicates that the entry corresponds to a followed collection, it means the collection is originally created by a different user but followed by the user associated with the first entry. When the role indicator indicates that the entry corresponds to a shared collection, it means the collection is originally created by a different user than the user of the entry but shared with the user associated with the first entry. For example, the role indicators for the entries 3210 and 3214 of the collections table 3202 would be ‘o’ for owned collections whereas the role indicators for the entries 3212 of the collections table 3202 may be ‘f’, ‘rs’, or ‘ws’, depending on whether the corresponding collection c2 of user u1 represents a followed or shared collection.
Based at least in part on the role indicator of the first entry, it can be determined 3406 whether the corresponding collection is an owned collection. If it is determined that the collection represented by the first entry is an owned collection (e.g., when the role indicator is ‘o’), then the first entry may be provided 3408, in whole or in part, in a response to the first request. As discussed above, an entry representing an owned collection typically includes detailed collection data such as data about businesses in the collection (e.g., business ids, locations, descriptions, images, order numbers) and collection attribute information (e.g., keywords), and the like.
Otherwise, if it is determined that the collection represented by the first entry is not an owned collection (e.g., when the role indicator not ‘o’), then it means that the first entry corresponds to a shared or followed collection and contains a link to the underlying collection rather than the collection data itself. In this case, a second entry may be retrieved 3410 from a second data based at least in part on the first entry. In particular, the second database table can include a collections by id table such as the collections by id table 3204 discussed in FIG. 32. The collections by id table can include a plurality of entries, each of the entries including at least a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users. When the first entry represents a non-owned collection (e.g., a followed collection or a shared collection), the first entry includes linking information to the actual owned collection in the collections by id table, rather than detailed collection data such as data about businesses in the collection. Linking information may include or be used to generate a global collection id or other identifying information of the underlying collection entry in the collections by id table that contain the detailed collection data (e.g., of a followed or shared collection). In an embodiment, each entry of the collections by id table can represent only owned collections. Retrieving the second entry from the second table based on the first entry may include retrieving the second entry by the linking information (e.g., global collections id) that is included in the first entry. The retrieved second entry may be provided 3412, in whole or in part, in a response to the first request. By storing linking information in the collections table instead of actual collection data of a linked collection (e.g., followed collection or shared collection), multiple updates can be avoided when the underlying collection is updated. Additionally, storing similar data in different tables with different data model designs (e.g., different primary and/or secondary keys) allows the data storage system to provide optimized solutions to different use cases in a flexible manner.
FIG. 35 illustrates an example process 3500 for implementing update of collection information, in accordance with embodiments. Aspects of the process 3500 may be performed, in some embodiments, by components of a data storage system or service such as discussed in connection with FIG. 31.
The process can include receiving 3502 a request to update collection data of a collection. In an example, the request may be transmitted from a data user 3104 and received by an interface server 3108 discussed in connection with FIG. 31. The request may be include a user identifier (user id) that uniquely identifies a respective a user of the personalization system and a local collection identifier (collection id) that uniquely identifies a respective collection from collections associated with the respective user. The request may also include updated data for the collection. Furthermore, the request may also include identity (e.g., user id) of the user requesting the update. The requesting user may or may not be the same as the user associated with the collection to be updated.
In response to receiving the request to retrieve collection data, a first entry from a database table can be retrieved 3504 based at least in part on the request similar to the step 3404 of the process 3400 discussed above in connection of FIG. 34.
The update may be validated 3506 to ensure that the update is permissible given the requesting user's access right. In some embodiments, the validation can be based at least in part on the role indicator of the first entry (e.g., a role field 3344 of FIG. 33). For instance, the role indicator may indicate whether the collection corresponding to the first entry is a first entry is a read-only shared collection (e.g., the role indicator is ‘rs’) or whether it is a write access shared collection (e.g., the role indicator is ‘ws’). If the requesting user is the same as the user associated with the first entry, then access right of the requesting user is the same as indicated by the role indicator. As another example, if the role indicator indicates that the collection corresponding to the first entry is a followed collection instead of an owned collection, then the collection may not be updatable by users other than the owner. Additionally or alternatively, the validation may be based at least in part on a map of shared permissions associated with the first entry, the map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators (e.g., ‘r’ for read-only access and ‘w’ for write access), the one or more user identifiers corresponding to one or more users that share the respective collection. The requesting user's id may be used to look up the share permissions map to determine the requesting user's access right with respect to the collection. The permissions map may be used, for example, when the requesting user is not the same as the user associated with the first entry and the role indicator associated with the first entry cannot be used to identify the access right of the requesting user. The update by the requesting user is allowable if the access right is write access. The update by the requesting user may not be allowable if the access right is read-only access.
If the validation fails (e.g., the requesting user does not have the required access right to the collection), then the collection is not updated and an error message or log may be provided. Otherwise, if the validation succeeds (e.g., the requesting user has the required access right to the collection), then the collection is updated. Based on the first entry, it may be determined 3508 whether the first entry corresponds to an owned collection, in a manner similar to the step 3406 of process 3400 in FIG. 34. If it is determined that the first entry corresponds to an owned collection, then the first entry may be updated 3510 according to the update request. For example, updated values in the update request may be stored in corresponding fields of the first entry. Otherwise, if it is determined that the first entry does not correspond to an owned collection (e.g., the collection is a shared or followed collection), then a second entry from a second table may be identified 3512 based at least in part on the first entry, for example, in a manner similar to step 3410 of the process 3400 in FIG. 34. For instance, the first entry may include linking information to the actual owned collection in the collections by id table, rather than detailed collection data such as data about businesses in the collection. Linking information may include or be used to generate a global collection id or other identifying information of the entry in the collections by id table that contain the detailed collection data of a followed or shared collection. Once the second entry is identified 3512, the second entry may be updated 14 according the update request.
In some embodiments, the validation step 3506 may be performed immediately before the update operations in steps 3510 and/or 3514. For instance, validation based on a role indicator and/or a map of share permissions of the second entry after the second entry has been identified 3512.
In various embodiments, updating a collection can include updating any of the fields associated with the collection. For instance, when a business is added to a collection, the business ids field of a collection may be updated to include the newly added business. Additionally, in some embodiments, the added by user field of the collection (e.g., the added by user fields 3338 and/or 3354 of FIG. 33) may be updated to include the user that added the new business to the collection.
Once the collection has been updated, it may be determined 3516 whether update notifications need to be provided and if so, to which users. In some embodiments, the determination may be based at least in part on a followers field of the updated collection. The determination may be based on a followers field associated with the first entry of the first table (e.g., field 3338 of FIG. 33) or a followers field associated with the second entry of the second table (e.g., field 3346 of FIG. 33). A followers field can include a set of followers that have followed the collection. Update notifications may be provided 3518 to some or all of the followers of the collection depending on the system setting and/or user preferences. For instance, the system setting and/or user preferences may specify the types of update that would trigger notifications to some or all of the followers. The followers may also turn on/off notifications for certain types of events. The process 3500 may end 3520 if it is determined that no notifications need to be sent.
FIG. 36 illustrates an exemplary environment 3600 for implementing user notification, in accordance with embodiments. The environment 3600 is similar to the environment 3100 shown in FIG. 31 except more details are shown for components implementing the user notification feature. The data storage system 3602 can be configured to detect the triggering of predefined events based on the data stored in the data storage system 3602 and to cause notifications regarding the triggered events to be provided to predetermined users 3616. For example, when a collection is updated, followers of the collection may receive notification of such update.
The data storage system 3602 may be similar to the data storage system 3102 discussed in FIG. 31. For instance, data storage system 3602 can include an interface layer 3606 implemented by one or more interface servers 3608. The interface layer 3606 may be configured to communicate with a plurality of storage entities used to store data such as one or more storage nodes 3612 and datacenters 3610. The interface layer 3606 may also be configured to communicate with a plurality of external and/or internal devices or processes via the API provided by the interface layer 3606.
In an embodiment, a user may be allowed to define trigger events, for example, via a user interface provided by the personalization system. The trigger events may be associated with trigger conditions and trigger actions. The trigger conditions may specify when the trigger actions should occur. The trigger conditions may be related to data operations (e.g., read/write events) and/or changes to data values (e.g., when a data value reaches, exceeds, or falls below a threshold value). The trigger actions may specify the types of actions that may occur when the trigger conditions are satisfied. For instance, the trigger actions may specify that one or more users should be notified of the triggered events. The users may be allowed to specify preferences with respect to notifications such as the types of trigger events to be notified and/or the types of trigger events not to be notified of, preferred methods for the delivery of notifications (e.g., postal mail, email, text message, phone call, website, web service), recipient information for the delivery (e.g., email address or phone number of the intended user), the time and/or frequency of delivery of notifications, and the like. Such trigger event and user preference information may be stored in the one or more storage entities of the data storage system 3602. In some embodiments, aspects of the user notification feature may be system-defined and/or user-configurable. For instances, the trigger conditions, trigger actions, users to notify, notification timing, and the like may be provided by default and/or configurable by user.
The interface layer 3606 may be configured to create event messages when a trigger event is triggered. The event message may include details about the triggered event such as the time when the event is triggered, the type of data (e.g., business or collection), the type of data operation (e.g., read/write), the duration of the data operation, the identity of a user or process that performed or requested the data operation (e.g., a user that added a business to a collection), relevant data values (e.g., old and/or updated data values), and the like. The event message can include a user or a set of users that need to receive notifications about the triggered event and/or information regarding the delivery of the notifications. In an embodiment, an event message is generated for each user that needs to be notified. In another embodiment, one event message may be generated for a group of users that need to be notified.
Data used to generate the event messages, such as details about a triggered event, user or users to be notified, information regarding the delivery of the notifications, and the like may be stored in the storage entities (e.g., storage nodes, storage devices) and/or otherwise made available to the interface layer 3606. For example, details about a triggered event may be recorded automatically in database tables or provided to directly the interface layer. A set of users to be notified for a given event (e.g., followers) may be stored with the data object (e.g., collection) for which a trigger is defined. User preferences regarding notifications may also be stored in database tables, configuration files, or the like that are accessible to the interface layer 3606.
As an example, when a business is added to a collection, an event message may be created for each of the followers of the collection, if any. The event message may include a time when the business was added, attributes of the business (e.g., name and geographic location), attributes of the collection (e.g., name and owner), identifying information (e.g., username) of a user that added the business to the collection, and the like. The event message for each of the followers may also information about the intended receiver of the notification such as preferred method(s) of delivery of notifications (e.g., postal mail, email, text message, phone call, website, web service), recipient information for the delivery (e.g., email address or phone number of the intended user), the time and/or frequency of delivery of notifications, and the like. In some cases, user preferences (e.g., specifying whether a user would like to turn on or off notification for certain types of events) may be used to determine whether and/or how to generate an event message for the given user.
The event messages may be inserted into an outgoing message queue 3614 or queue-based data structure. The outgoing message queue 3614 may be implemented by a file or data store as part of the data storage system 3602 or by an external device or process. The communication between the interface layer 3606 and the outgoing message queue 3614 may be implemented using any suitable messaging protocol such as RabbitMQ.
A notification engine 3604 may be configured to retrieve event messages from the outgoing message queue 3606, process the event messages 3606 (e.g., to extract the intended user and/or delivery mechanism), and cause notification messages to be provided to the intended users using the intended delivery mechanisms based on the event messages. The notification engine 3604 may or may not be part of the personalization system discussed herein. In an example, the notification engine 3604 may include or be included in an information handling engine 243 discussed in FIG. 2D.
In some embodiments, the notification engine 3604 may also be configured to generate result messages indicating a status of the delivery of notifications and insert the result messages into the incoming message queue 3618. The result messages may indicate whether the corresponding notifications have been delivered successfully. The interface layer 3606 may be configured to retrieve resulting messages from incoming message queue 3618 and store the results persistently (e.g., in one or more data storage nodes 3612).
In some embodiments, the notification feature discussed above may be combined with any other functionality of the interaction infrastructure discussed herein. As an example, the notification feature may be combined with the recommendation feature discussed in connection with FIGS. 22-25. In particular, recommendations as generated by the recommendation engine may be provided as user notifications to end users according to user-specified preferences and/or system settings, for example, using the message queue mechanism described above. As another example, the notification feature may be combined with the user-directed querying feature discussed in connection with FIGS. 26-28. For instance, queries directed to users and/or responses received from users may be provided as user notifications to end users according to user-specified preferences and/or system settings.
Specific details are given in the above description to provide a thorough understanding of the embodiments. However, it is understood that the embodiments may be practiced without these specific details. For example, circuits may be shown in block diagrams in order not to obscure the embodiments in unnecessary detail. In other instances, well-known circuits, processes, algorithms, structures, and techniques may be shown without unnecessary detail in order to avoid obscuring the embodiments.
Implementation of the techniques, blocks, steps and means described above may be done in various ways. For example, these techniques, blocks, steps and means may be implemented in hardware, software, or a combination thereof. For a hardware implementation, the processing units may be implemented within one or more application specific integrated circuits (ASICs), digital signal processors (DSPs), digital signal processing devices (DSPDs), programmable logic devices (PLDs), field programmable gate arrays (FPGAs), processors, controllers, micro-controllers, microprocessors, other electronic units designed to perform the functions described above, and/or a combination thereof.
Also, it is noted that the embodiments may be described as a process which is depicted as a flowchart, a flow diagram, a swim diagram, a data flow diagram, a structure diagram, or a block diagram. Although a depiction may describe the operations as a sequential process, many of the operations can be performed in parallel or concurrently. In addition, the order of the operations may be re-arranged. A process is terminated when its operations are completed, but could have additional steps not included in the figure. A process may correspond to a method, a function, a procedure, a subroutine, a subprogram, etc. When a process corresponds to a function, its termination corresponds to a return of the function to the calling function or the main function.
Furthermore, embodiments may be implemented by hardware, software, scripting languages, firmware, middleware, microcode, hardware description languages, and/or any combination thereof. When implemented in software, firmware, middleware, scripting language, and/or microcode, the program code or code segments to perform the necessary tasks may be stored in a machine readable medium such as a storage medium. A code segment or machine-executable instruction may represent a procedure, a function, a subprogram, a program, a routine, a subroutine, a module, a software package, a script, a class, or any combination of instructions, data structures, and/or program statements. A code segment may be coupled to another code segment or a hardware circuit by passing and/or receiving information, data, arguments, parameters, and/or memory contents. Information, arguments, parameters, data, etc. may be passed, forwarded, or transmitted via any suitable means including memory sharing, message passing, token passing, network transmission, etc.
For a firmware and/or software implementation, the methodologies may be implemented with modules (e.g., procedures, functions, and so on) that perform the functions described herein. Any machine-readable medium tangibly embodying instructions may be used in implementing the methodologies described herein. For example, software codes may be stored in a memory. Memory may be implemented within the processor or external to the processor. As used herein the term “memory” refers to any type of long term, short term, volatile, nonvolatile, or other storage medium and is not to be limited to any particular type of memory or number of memories, or type of media upon which memory is stored.
Moreover, as disclosed herein, the term “storage medium” may represent one or more memories for storing data, including read only memory (ROM), random access memory (RAM), magnetic RAM, core memory, magnetic disk storage mediums, optical storage mediums, flash memory devices and/or other machine readable mediums for storing information. The term “machine-readable medium” includes, but is not limited to portable or fixed storage devices, optical storage devices, and/or various other storage mediums capable of storing that contain or carry instruction(s) and/or data.
While the principles of the disclosure have been described above in connection with specific apparatuses and methods, it is to be clearly understood that this description is made only by way of example and not as limitation on the scope of the disclosure.

## Claims

1. A system for managing user-generated content associated with a plurality of users, the system comprising:
one or more memory devices storing a database that comprises a first table and a second table,
the first table storing a first plurality of entries corresponding to a plurality of user-generated collections, each of the first plurality of entries including a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user, and
the second table storing a second plurality of entries corresponding to the plurality of user-generated collections, each of the second plurality of entries including a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users; and
one or more interface servers communicatively coupled to the one or more memory devices, the interface server being used to:
receiving a first request for a first collection, the first request including a first user identifier and a first local collection identifier of the collection,
retrieving a first entry from the first table based at least in part on the first user identifier and the first local collection identifier,
determining, based at least in part on a first role indicator associated of the first entry, that the first collection is owned by the respective user of the first entry,
transmitting the first entry as a response to the first request,
receiving a second request for a second collection, the second request including a second user identifier and a second collection identifier,
retrieving a second entry from the first table based on the second user identifier and the second collection identifier,
determining, based at least in part on a second role indicator associated of the second entry, that the second collection is followed by the respective user of the second entry,
retrieving a third entry from the second table based at least in part on the second entry, and
transmitting the third entry as a response to the second request.

2. The system of claim 1, wherein the second entry comprises a global collection identifier of the third entry and retrieving the third entry from the second table is based on the global collection identifier of the third entry.

3. The system of claim 1, wherein the role indicator of at least one entry of the first plurality of entries stored in the first table further indicates whether the respective collection is shared with the respective user.

4. The system of claim 3, wherein the role indicator of the at least one entry of the first plurality of entries stored in the first table further indicates whether the respective collection is shared with the respective user with read-only access or with write access.

5. The system of claim 1, wherein at least one entry of the first plurality of entries stored in the first table further comprising a set of user identifiers corresponding to a set of followers for the respective collection.

6. The system of claim 1, wherein at least one entry of the first plurality of entries stored in the first table further comprising a map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators, the one or more user identifiers correspond to one or more users that share the respective collection.

7. The system of claim 1, wherein at least one entry of the first plurality of entries stored in the first table further comprising a set of business identifiers, each corresponding to a business that is included in the respective collection.

8. A method for managing user-generated content associated with a plurality of users, the method comprising:
storing a first table in a database, the first table storing a first plurality of entries corresponding to a plurality of user-generated collections, each of the first plurality of entries including a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user;
storing a second in the database, the second table storing a second plurality of entries corresponding to the plurality of user-generated collections, each of the second plurality of entries including a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users;
receiving a first request for a first collection, the first request including a first user identifier and a first local collection identifier of the collection;
retrieving a first entry from the first table based at least in part on the first user identifier and the first local collection identifier;
determining, based at least in part on a first role indicator associated of the first entry, that the first collection is owned by the respective user of the first entry;
transmitting the first entry as a response to the first request;
receiving a second request for a second collection, the second request including a second user identifier and a second collection identifier;
retrieving a second entry from the first table based on the second user identifier and the second collection identifier;
determining, based at least in part on a second role indicator associated of the second entry, that the second collection is followed by the respective user of the second entry;
retrieving a third entry from the second table based at least in part on the second entry; and transmitting the third entry as a response to the second request.

9. The method of claim 8, further comprising:
receiving a third request to update a third collection, the third request including a third user identifier and a third collection identifier;
retrieving a fourth entry from the first table based on the third user identifier and the third collection identifier;
determining, based at least in part on the role indicator of the fourth entry, that the third collection is owned by the respective user of the fourth entry;
updating the fourth entry according to the third request;
receiving a fourth request to update a fourth collection, the fourth request including a fourth user identifier and a fourth collection identifier;
retrieving a fifth entry from the first table based on the fourth user identifier and the fourth collection identifier;
determining, based at least in part on the role indicator of the fifth entry, that the fourth collection is shared with the respective user of the fifth entry;
identifying a sixth entry from the second table based at least in part on the fifth entry; and
updating the sixth entry according to the fourth request.

10. The method of claim 9, further comprising determining that updating the sixth entry is allowed based at least in part on the role indicator of the fifth entry.

11. The method of claim 9, further comprising determining that updating the sixth entry is allowed based at least in part on a map of share permissions associated with the fifth entry or the sixth entry, the map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators, the one or more user identifiers corresponding to one or more users that share the respective collection.

12. The method of claim 9, wherein the fourth entry comprises a set of user identifiers corresponding to a set of followers for the third collection and further comprising causing update notifications to be provided to at least some of the set of followers regarding the update to the third collection.

13. The method of claim 9, wherein the sixth entry comprises a set of user identifiers corresponding to a set of followers for the fourth collection and further comprising causing update messages to be provided to at least some of the set of followers regarding the update to the fourth collection.

14. The method of claim 9, wherein the fourth request to update the fourth collection comprises adding a business listing to the fourth collection and wherein updating the sixth entry comprises adding a mapping between a requesting user identifier and the added business listing.

15. One or more non-transitory, machine-readable media having machine-readable instructions thereon for managing user-generated content associated with a plurality of users, which instructions, when executed by one or more computers or other processing devices, cause the one or more computers or other processing devices to:
store a first table in a database, the first table storing a first plurality of entries corresponding to a plurality of user-generated collections, each of the first plurality of entries including a user identifier that uniquely identifies a respective user of the system, a local collection identifier that uniquely identifies a respective collection from collections associated with the respective user, and a role indicator that indicates whether the respective collection is owned by the respective user or followed by the respective user; and
store a second in the database, the second table storing a second plurality of entries corresponding to the plurality of user-generated collections, each of the second plurality of entries including a global collection identifier that uniquely identifies a respective collection from the plurality of collections associated with the plurality of users;
receive a first request for a first collection, the first request including a first user identifier and a first local collection identifier of the collection;
retrieve a first entry from the first table based at least in part on the first user identifier and the first local collection identifier;
determine, based at least in part on a first role indicator associated of the first entry, that the first collection is owned by the respective user of the first entry;
transmit the first entry as a response to the first request;
receive a second request for a second collection, the second request including a second user identifier and a second collection identifier;
retrieve a second entry from the first table based on the second user identifier and the second collection identifier;
determine, based at least in part on a second role indicator associated of the second entry, that the second collection is followed by the respective user of the second entry;
retrieve a third entry from the second table based at least in part on the second entry; and transmit the third entry as a response to the second request.

16. The one or more non-transitory, machine-readable media of claim 15, wherein the second entry comprises a global collection identifier of the third entry and retrieving the third entry from the second table is based on the global collection identifier of the third entry.

17. The one or more non-transitory, machine-readable media of claim 15, wherein the role indicator of at least one entry of the first plurality of entries stored in the first table further indicates whether the respective collection is shared with the respective user.

18. The one or more non-transitory, machine-readable media of claim 15, wherein the role indicator of the at least one entry of the first plurality of entries stored in the first table further indicates whether the respective collection is shared with the respective user with read-only access or with write access.

19. The one or more non-transitory, machine-readable media of claim 15, wherein at least one entry of the first plurality of entries stored in the first table further comprising a set of user identifiers corresponding to a set of followers for the respective collection.

20. The one or more non-transitory, machine-readable media of claim 15, wherein at least one entry of the first plurality of entries stored in the first table further comprising a map of share permissions mapping one or more user identifiers with corresponding one or more permission indicators, the one or more user identifiers correspond to one or more users that share the respective collection.