Social and contextual recommendations

A method performed by a processing system includes receiving a recommendation from a source user in response to performing an action corresponding to an action context of the recommendation, determining whether the source user appears in social network information of a target user, and distinguishing a presentation of the recommendation to the target user in response to the source user appearing in the social network information of the target user.

BACKGROUND

Processing systems, such as computers and smartphones, generally provide various methods in which a user can transmit information to another user. Examples of methods for transmitting information include email, text and/or multimedia messaging, and audio and/or video teleconferencing. At least some of these transmission methods, however, may provide information to a user at a time when the user is not in the best position to consider or act on the information. As a result, the user may be less attentive or receptive to the information when it is received than the user would be if the information was received at a more suitable time. In addition, many transmission methods allow users to receive unsolicited information from unknown users. Examples of unsolicited information include spam (i.e., unsolicited emails) and telemarketing phone calls or text messages. Many users find such information distracting and undesirable.

DETAILED DESCRIPTION

In the following detailed description, reference is made to the accompanying drawings, which form a part hereof, and in which is shown by way of illustration specific embodiments in which the disclosed subject matter may be practiced. It is to be understood that other embodiments may be utilized and structural or logical changes may be made without departing from the scope of the present disclosure. The following detailed description, therefore, is not to be taken in a limiting sense, and the scope of the present disclosure is defined by the appended claims.

As used herein, a user of a processing system who generates a recommendation is referred to herein as a source user, and a user of a processing system for whom a recommendation is generated by the source user is referred to herein as a target user.

The term recommendation refers to a reference from a source user that is designated for receipt by a target user or users. The reference may be to a good (e.g., a software application (also referred to as an app), a book, a song, or a movie), a service (e.g., a restaurant or an artistic performance), a source of information (e.g., a website, a newspaper, or a television broadcast), a place of interest, and/or any other suitable item or information that the source user may wish to bring to the attention of a target user or users.

The term contextual recommendation refers to a recommendation that is configured to be provided to a target user in response to the target user performing a set of one or more actions defined by an action context corresponding to the recommendation. Examples of actions that may be defined by an action context include executing a computer program (e.g., an app) on a processing system (e.g., an app that presents an app store), accessing a website (e.g., an app store website), performing a function on a website (e.g., performing a search), accessing information from a storage system (e.g., an audio and/or video file stored on a local computer system, a remote computer system, or in a cloud of computer systems), arriving at or leaving a physical location (e.g., a bookstore), completing a task, and not performing a task within a certain time.

The term action context refers to information that defines a set of actions that may be performed by a target user, where the set of actions includes a number of actions that is greater than or equal to one (e.g., the set could include a combination of actions such as leaving an area without having run a particular app). The action context is used by a recommendation manager to determine when to provide a contextual recommendation to a target user. In particular, a recommendation manager provides a contextual recommendation to a target user in response to determining that the target user has performed the set of actions defined by the action context.

As shown and described herein, a social and contextual recommendation execution environment is provided that uses social network information to determine how to present recommendations from a source user of a processing system to a target user of the same or a different processing system in context (i.e., in response to the target user performing a set of actions defined by an action context of the recommendation). In particular, the environment presents contextual recommendations to a target user in a manner that distinguishes recommendations from source users that are in a social network of the target user (i.e., social recommendations). The recommendations may be distinguished by preventing the presentation of other recommendations from source users that are not in a social network of the target user (i.e., non-social recommendations) or by emphasizing the presentation of social recommendations with respect to non-social recommendations.

By providing the recommendations in context, the execution environment may increase the likelihood that a recommendation will be provided to a target user at a suitable time for the target user to act on the recommendation. In addition, the social aspect of the environment may increase the likelihood that the target user will find a recommendation to be valuable based on an increased likelihood of shared or overlapping interests between the target user and source users that are in a social network of the target user. Further, the environment may prevent unsolicited recommendations (i.e., recommendations from source users that are not in a social network of a target user) from being presented to a target user.

FIG. 1is a block diagram illustrating one embodiment of a social and contextual recommendation execution environment2that uses social network information32of a target user and/or social network information22of a source user in the process of presenting contextual recommendations to the target user. Environment2includes a recommendation manager10, a set of one or more source user domains20of source users, and a set of one or more target user domains30of target users. Environment2may be implemented using one or more processing systems (e.g., a processing system100shown inFIG. 6and described in additional detail below) in any suitable configuration (e.g., a system configuration200shown inFIG. 7and described in additional detail below).

Recommendation manager10stores a set12of zero or more contextual recommendations14for target users of corresponding target domains30. Each contextual recommendation14includes a recommendation15, an action context16, and source information17. Recommendation manager10receives recommendations15from source user domains20of source users where each recommendation15is designated for receipt by one or more target users of one or more target domains30. For each recommendation15, recommendation manager10receives, identifies, or otherwise determines an action context16and stores the action context16along with source information17that identifies a source user of the recommendation15. Recommendation manager10provides each recommendation15to the target user domain30of the target user in response to a set of actions defined by the corresponding action context16being performed by the target user. In one embodiment, recommendation manager10also provides source information17for each recommendation15to the target user domain30of the target user. In other embodiments, recommendation manager10provides recommendations15to target user domains30in another suitable format that allows recommendations15from source users that are in a social network of the target user to be identified.

Each recommendation15includes any suitable information that includes or identifies a reference from a source user that is designated for receipt by a target user or users. Recommendation manager10may store each recommendation15in one or more formats that are processable by a target user domain30to allow the target user domain30to present the recommendation15to a target user in a format that is suitable for the target user domain30.

Each action context16includes any suitable information that defines a set of actions that may be performed by a target user. Recommendation manager10monitors, detects, and/or receives notifications of actions performed by target users. When an action or actions of a target user match the set of actions defined by an action context16of a recommendation15for the target user, recommendation manager10provides the recommendation15to the target user domain30of the target user.

Each source information17includes any suitable information that identifies a source user for a corresponding recommendation15. For example, source information17may include one or more of a name, address, telephone number, email address, processing device user name, social network user name, or other suitable identifying information that may be used to match information in social network information22and/or social network information32. Recommendation manager10provides source information17to a target user domain30along with a corresponding recommendation15in one embodiment to allow the target user domain30to determine whether the source user appears in a social network of the target user using social network information32.

Source user domains20allow corresponding source users to generate recommendations15for target users and provide the recommendations15along with source information17to recommendation manager10. Source user domains20may also provide action contexts16corresponding to the recommendations15to recommendation manager10. Each source user domain20corresponds to a different source user.

Each source user domain20includes social network information22of a corresponding source user and is configured to provide a user interface24that allows the source user to generate recommendations15for one or more target users. The user interface24may be implemented by a web browser or another suitable computer program that interacts with recommendation manager10, for example. User interface24may access social network information22to assist the source user with selecting one or more target users. In some embodiments, user interface24and/or recommendation manager10may limit the set of possible target users to only those target users that appear in social network information22of the source user. In other words, user interface24and/or recommendation manager10may prevent the source user from making recommendations to users who are not in social network22. For example, user interface24may list only potential target users that appear in social network22for selection by the source user. In other embodiments, recommendation manager10may access social network information22in source user domain20or other social network information stored elsewhere (not shown) to ensure that target users appear in social network information22before accepting and/or storing recommendations15for the target users.

Target user domains30receive and present recommendations15to corresponding target users in context. Target user domains30may provide information regarding target user activities to recommendation manager10to allow recommendation manager10to determine when a target user performs certain actions. Target user domains30receive recommendations15from recommendation manager10when actions that match action contexts16are performed by corresponding target users. Each target user domain30corresponds to a different target user.

Each target user domain30includes social network information32of a corresponding target user and a user interface34that allows recommendations15to be displayed to the target user. In embodiments where target user domains30receive source information17for each recommendation15, target user domains30compare source information17to social network information32to determine whether the source users appears in social networks of corresponding target users. In other embodiments, target user domain30uses a format of recommendations15provided by recommendation manager10to determine whether source users are in a social network of corresponding target users.

Target user domains30presents contextual recommendations to target users in a manner that distinguishes social recommendations15(i.e., recommendations15from source users that are in a social network of the target user) from non-social recommendations15(i.e., recommendations15from source users that are in a social network of the target user) using user interface34. Target user domains30may distinguish recommendations15by preventing the presentation of non-social recommendations in user interface34or by emphasizing the presentation of social recommendations15with respect to non-social recommendations15in user interface34.

Additional details of the operations of one embodiment of recommendation manager10will now be described with reference toFIG. 2.FIG. 2is a flowchart illustrating one embodiment of a method for providing contextual recommendations from a source user to a target user.

In the embodiment ofFIG. 2, recommendation manager10provides an ability to make a recommendation15to a target user as indicated in a block52. Recommendation manager10provides the ability to make a recommendation15by being configured to receive recommendations15generated by source user domains20along with action contexts16and/or source information17. The user interfaces24of source user domains20are configured to generate suitable prompts that allow source users to enter recommendations15and target users. The user interfaces24may generate the prompts responsive to a computer program stored on the user domain (e.g., an app) or as part of a web browser that receives all or a portion of the information used to generate the prompts from recommendation manager10. The user interface24causes entered recommendations15, source user information17, and target user information to be provided to recommendation manager10. The user interface24may also allow source users to explicitly enter action contexts16. Thus, user interface24may also cause action contexts16entered by source users to be provided to recommendation manager10.

Recommendation manager10receives a recommendation15designated by the source user for receipt by a target user or users and source information17from source user domains20as indicated in a block54and stores the recommendation15, source information17, and an action context16for the target user or users as indicated in a block56. Recommendation manager10stores the recommendation15, source information17, and an action context16regardless of whether the source user appears in social network information32of the target user. In other words, recommendation manager10does not determine whether the source user appears in social network information32of the target user as a condition of storing recommendations15or providing recommendations15to a target user domain30.

A determination is made by recommendation manager10as to whether a target user has performed a set of actions that corresponds to an action context16as indicated in a block58. Recommendation manager10determines that the actions have been performed in response to receiving information from a corresponding target user domain30or another processing or storage system (not shown), such as a server that manages a website accessed by a target user or a storage system where the target user accesses audio and/or video content. The information may indicate, for example, that a computer program (e.g., an app) has been executed on the target user domain30, that a website has been accessed by the target user domain30, that the target user has performed a function on a website using the target user domain30, that the target user accessed information from a storage system using the target user domain30, that the target user arrived at or left a physical location with the target user domain30(i.e., the information includes GPS coordinates determined by the target user domain30), that the target user completed a task with target user domain30, or that the target user did not perform a task within a certain time with target user domain30.

Any time that recommendation manager10determines that a target user has performed a set of actions that corresponds to an action context16of a recommendation15, recommendation manager10provides the recommendation15and corresponding source information17to the target user domain30of the target user as indicated in a block60. Recommendation manager10continues to maintain each remaining recommendation15for the target user until the actions defined by the corresponding action contexts16are performed.

In some embodiments, recommendation manager10may also prevent recommendations15from being provided to target users where the target user does not appear in the social network information22of the source user. To do so, recommendation manager10causes source user domain20to compare the target user to social network information22to verify that the target user is in social network information22before accepting and storing a recommendation15for the target user from the source user of the source user domain.

In addition, recommendation manager10may also provide a notification to a target user that a recommendation15has been received and will be delivered in response to the actions corresponding to the action context16being performed. The notification could be made by sending an email, text message, instant message, social media message, or other suitable message and may include a mode that allows for immediate performance of the actions corresponding to the action context16of the recommendation15. For example, recommendation manager10may notify a target user by sending an email to indicate that a source user has recommended a particular app from an app store and including a link in the email that allows the target user to visit the app store (i.e., access the app store using target user domain30).

Additional details of the operations of one embodiment of target user domain30will now be described with reference toFIGS. 3,4, and5A-5B.FIG. 3is a flowchart illustrating one embodiment of a method for presenting recommendations15to a target user using social network information32.FIG. 4is a block diagram illustrating one embodiment of comparing source information17of recommendations15to social network information32of a target user.FIGS. 5A-5Bare block diagrams illustrating embodiments of presentations of recommendations15to a target user in user interface34.

In the embodiment ofFIGS. 3 and 4, target user domain30receives a set84of one or more recommendations15and source information17from recommendation manager10as indicated in a block72. As described above, the set84of recommendations15are received in response to recommendations manager10determining that the actions defined by the corresponding action contexts have been performed by the target user using the target user domain30. Target user domain30determines whether source users appear in social network information32of the target user by comparing source information17of each recommendation15in set84to social network information32as indicated in a block74inFIG. 3and by an arrow86inFIG. 4. By doing so, target user domain30identifies a subset88of zero or more recommendations15that correspond to source users that are in the social network of the target user.

As indicated by blocks76,78, and80, target user domain30distinguishes the presentation of social recommendations15(i.e., those recommendations15in subset88) to the target user using user interface34and de-emphasizes the presentation of non-social recommendations15(i.e., those recommendations15in set84but not subset88). As noted above, user interface34may distinguish the presentation of social recommendations15and de-emphasizes the presentation of non-social recommendations15by preventing the display of non-social recommendations. InFIG. 5A, for example, a user interface34A may display information90that describes the context of recommendations (e.g., the banner of an app store where app recommendations are provided) and the social recommendations15in subset88. The display of the social recommendations15may include an identifier of the source user for each recommendation15(not shown).

User interface34may also distinguish the presentation of social recommendations15and de-emphasizes the presentation of non-social recommendations15by emphasizing the presentation of social recommendations15with respect to non-social recommendations15. InFIG. 5B, for example, a user interface34B may display both the social recommendations15in subset88and the non-social recommendations15shown in a block92. User interface34B, however, emphasizes the social recommendations15over the non-social recommendations15by listing social recommendations15first, adding a social recommendation designator94to note the social nature of social recommendations15, displaying social recommendations15with a larger size or more prominent position, or providing other distinguishing features for social recommendations15. The display of the social recommendations15may include an identifier of the source user for each recommendation15(not shown).

User interface34may provide the target user with the ability to select recommendations15to access additional information regarding the recommendations. For example, user interface34may present the recommendations15as links to product web pages or other sources of information. User interface34may also rank recommendations15based on the number of recommendations of a particular recommendation15by source users, by the amount or frequency of communication between the target user and the source users, by similarity of interested between the target user and the source users, and/or a history of successful recommendations from the source user.

A target user may also be provided with the ability to block recommendations from selected source users in user interface34. To do so, user interface34provides a target user with the ability to enter a block request. User interface34may either store the block request and prevent recommendations15from blocked source users from being displayed or provide the block request to recommendation manager10to prevent recommendations15from blocked source users from being provided to target user domain30.

FIG. 6is a block diagram illustrating a processing system100configured to implement recommendation manager10and/or user domains20and/or30in social and contextual recommendation execution environment2shown inFIG. 1.

Processing system100includes at least one processor102configured to execute machine readable instructions stored in a memory system104. Processing system100may also include any suitable number of input/output devices106, display devices108, ports110, and/or network devices112. Processors102, memory system104, input/output devices106, display devices108, ports110, and network devices112communicate using a set of interconnections114that includes any suitable type, number, and/or configuration of controllers, buses, interfaces, and/or other wired or wireless connections. Components of processing system100(for example, processors102, memory system104, input/output devices106, display devices108, ports110, network devices112, and interconnections112) may be contained in a common housing (not shown) or in any suitable number of separate housings (not shown).

Processing system100may execute a basic input output system (BIOS), firmware, an operating system, a runtime execution environment, and/or other services and/or applications stored in memory104(not shown) that includes machine readable instructions that are executable by processors102to manage the components of processing system100and provide a set of functions that allow other programs (e.g., recommendation manager10, user domain20, and user domain30) to access and use the components.

Processing system100represents any suitable processing device, or portion of a processing device, configured to implement the functions of recommendation manager10, user domain20, and/or user domain30as described above. A processing device may be a laptop computer, a tablet computer, a desktop computer, a server, or another suitable type of computer system. A processing device may also be a mobile telephone with processing capabilities (i.e., a smart phone), a digital still and/or video camera, a personal digital assistant (PDA), an audio/video device, or another suitable type of electronic device with processing capabilities. Processing capabilities refer to the ability of a device to execute instructions stored in a memory104with at least one processor102.

Each processor102is configured to access and execute instructions stored in memory system104. Each processor102may execute the instructions in conjunction with or in response to information received from input/output devices106, display devices108, ports110, and/or network devices112. Each processor102is also configured to access and store data in memory system104.

Memory system104includes any suitable type, number, and configuration of volatile or non-volatile storage devices configured to store instructions and data. The storage devices of memory system104represent computer readable storage media that store computer-readable and computer-executable instructions including recommendation manager10, user domain20, and/or user domain30. Memory system104stores instructions and data received from processors102, input/output devices106, display devices108, ports110, and network devices112. Memory system104provides stored instructions and data to processors102, input/output devices106, display devices108, ports110, and network devices112. The instructions are executable by processing system100to perform the functions and methods of recommendation manager10, user domain20, and user domain30described herein. Examples of storage devices in memory system104include hard disk drives, random access memory (RAM), read only memory (ROM), flash memory drives and cards, and other suitable types of magnetic and/or optical disks.

Input/output devices106include any suitable type, number, and configuration of input/output devices configured to input instructions and/or data from a user to processing system100and output instructions and/or data from processing system100to the user. Examples of input/output devices106include a touchscreen, buttons, dials, knobs, switches, a keyboard, a mouse, and a touchpad.

Display devices108include any suitable type, number, and configuration of display devices configured to output image, textual, and/or graphical information to a user of processing system100. Examples of display devices108include a display screen, a monitor, and a projector. Display devices108may be configured to display user interfaces24and /34.

Ports110include suitable type, number, and configuration of ports configured to input instructions and/or data from another device (not shown) to processing system100and output instructions and/or data from processing system100to another device.

Network devices112include any suitable type, number, and/or configuration of network devices configured to allow processing system100to communicate across one or more wired or wireless networks (not shown). Network devices112may operate according to any suitable networking protocol and/or configuration to allow information to be transmitted by processing system100to a network or received by processing system112from a network.

FIG. 7is a block diagram illustrating system configuration200that implements the social and contextual recommendation execution environment2shown inFIG. 1with processing systems100(1),100(2), and100(3) shown inFIG. 6. In the embodiment ofFIG. 7, recommendation manager10, source user domain20, and target user domain30are implemented using processing systems100(1),100(2), and100(3), respectively. Processing systems100(1),100(2), and100(3) communicate with one another using a network110where network110includes any suitable type, number, and configuration of wired and/or wireless network devices (not shown). For example, network110may include the Internet and/or a wireless telecommunications network (e.g., a cellular network).

Additional source user domains20may also be implemented in processing systems100(1) and/or100(2) (not shown). In other words, processing systems100(1) and100(2) may also be configured to allow one or multiple source users to generate recommendations as described above. Similarly, additional target user domains30may also be implemented in processing systems100(1) and/or100(2) (not shown). In other words, processing systems100(1) and100(2) may also be configured to allow one or multiple target users to receive recommendations as described above.

In another embodiment (not shown), each of recommendation manager10, source user domains20, and target user domains30may be implemented in a single processing system100. For example, a computer system in a retail environment may allow customers (i.e., source users) to log in, access their social network information22, and provide recommendations15to others in their social network. Likewise, customers (i.e., target users) may receive social recommendations15in response to logging in and accessing their social network information32.

In further embodiments, a processing system100may include recommendation manager10and only one of source user domains20or target user domains30.

Although specific embodiments have been illustrated and described herein for purposes of description of the embodiments, it will be appreciated by those of ordinary skill in the art that a wide variety of alternate and/or equivalent implementations may be substituted for the specific embodiments shown and described without departing from the scope of the present disclosure. Those with skill in the art will readily appreciate that the present disclosure may be implemented in a very wide variety of embodiments. This application is intended to cover any adaptations or variations of the disclosed embodiments discussed herein. Therefore, it is manifestly intended that the scope of the present disclosure be limited by the claims and the equivalents thereof.