Preemptively surfacing relevant content within email

A system and method for surfacing content relevant is described. The system computes a rank score for each item of a plurality of items that are accessible from a user of an enterprise application. The system identifies a set of relevant items from the plurality of items based on the rank score for each item of the plurality of items. The system surfaces the set of relevant items within a context of a communication application of the user without receiving, from the user, a query for any of the items in the set of relevant items.

BACKGROUND

The subject matter disclosed herein generally relates to a special-purpose machine that preemptively surfaces relevant content, including computerized variants of such special-purpose machines and improvements to such variants. Specifically, the present disclosure addresses systems and methods for surfacing relevant content within an email application.

A user of an application may find it difficult to identify relevant information. For example, a user of a collaborating application may not know which document may be relevant to their task. In another example, the user may perform a search for a document using one application (e.g., a browser) and edit the document using another application (e.g., a text editing application).

DETAILED DESCRIPTION

The description that follows describes systems, methods, techniques, instruction sequences, and computing machine program products that illustrate example embodiments of the present subject matter. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the present subject matter. It will be evident, however, to those skilled in the art, that embodiments of the present subject matter may be practiced without some or other of these specific details. Examples merely typify possible variations. Unless explicitly stated otherwise, structures (e.g., structural components, such as modules) are optional and may be combined or subdivided, and operations (e.g., in a procedure, algorithm, or other function) may vary in sequence or be combined or subdivided.

The present application describes a system for surfacing content (e.g., files, documents, news articles, links) relevant to a user of an enterprise application. In one example embodiment, the content is surfaced to the user and presented in a graphical user interface within a context of an email application without the user specifically searching or requesting for this information. However, users often do not see or are not aware of relevant information that they have access to because they do not know what to look for.

In one example embodiment, the relevant content is surfaced and presented in the form of a feed of files that are trending with peer users in an email application. The relevant content may include links found in email, relevant news articles, and files that have been specifically shared with the user. In another example embodiment, the relevant content is surfaced in other areas of the email application. For example, the relevant content may be presented with respect to a contact in the email application. The surfaced content may be relevant to that contact. In another example, the relevant content may be presented with respect to a message in the email application. The surfaced content may be relevant to the message.

In another example embodiment, the system receives feedback from the user on whether the content is relevant to the user. In one example embodiment, the amount of relevant content surfaced to the user may be limited to a preset number (e.g., 10 items). The user or an administrator may change the settings to increase or decrease the preset number of surfaced content.

The present application describes a system and method for surfacing content relevant is described. In one example embodiment, the system computes a rank score for each item of a plurality of items that are accessible from a user of an enterprise application. The system identifies a set of relevant items from the plurality of items based on the rank score for each item of the plurality of items. The system surfaces the set of relevant items within a context of a communication application of the user without receiving, from the user, a query for any of the items in the set of relevant items.

As a result, one or more of the methodologies described herein facilitate solving the technical problem of searching for items that a user may not be aware. As such, one or more of the methodologies described herein may obviate a need for certain efforts or computing resources. Examples of such computing resources include processor cycles, network traffic, memory usage, data storage capacity, power consumption, network bandwidth, and cooling capacity.

FIG. 1is a diagrammatic representation of a network environment in which some example embodiments of the present disclosure may be implemented or deployed. One or more application servers104provide server-side functionality via a network102to a networked user device, in the form of a client device106. A user132operates the client device106. The client device106includes a web client112(e.g., a browser), a programmatic client108(e.g., an email application that is hosted and executed on the client device106. In one example embodiment, the programmatic client108includes a surfacing engine110that surfaces items that may be relevant to the user132. For example, the surfacing engine110retrieves relevant items and presents the relevant items by using the graphical user interface of the programmatic client108to visualize the relevant items in the context of the programmatic client108(e.g., email/contact application). The surfacing engine110may operate with the web client112and/or the programmatic client108. In another example embodiment, the surfacing engine110is part of the programmatic client108or web client112. For example, the surfacing engine110may operate as an extension or add on to the web client112.

An Application Program Interface (API) server120and a web server122provide respective programmatic and web interfaces to application servers104. A specific application server118hosts an enterprise application124and a relevant content engine126. Both enterprise application124and relevant content engine126include components, modules and/or applications.

The enterprise application124may include a collaborative application that enables peer users to collaborate on a shared document. For example, the client device106may access the enterprise application124to view and edit a document that is shared with other peer users. Other examples of enterprise application124includes enterprise systems, content management systems, and knowledge management systems.

In one example embodiment, the relevant content engine126communicates with the enterprise application124to identify items relevant to the user132. The relevant content engine126communicates with the surfacing engine110supported by the web server122to provide the relevant items to the programmatic client108. In one example, the web client112communicate with the relevant content engine126and enterprise application124via the programmatic interface provided by the Application Program Interface (API) server120.

The third-party application116may, for example, be another cloud storage system. The application server118is shown to be communicatively coupled to database servers128that facilitates access to an information storage repository or databases130. In an example embodiment, the databases130includes storage devices that store information to be published and/or processed by the enterprise application124.

Additionally, a third-party application116executing on a third-party server114, is shown as having programmatic access to the application server118via the programmatic interface provided by the Application Program Interface (API) server120. For example, the third-party application116, using information retrieved from the application server118, may supports one or more features or functions on a website hosted by the third party.

is a diagrammatic representation of a networked environment illustrating an example operation, in accordance with some example embodiments. The user132, user210, user212are peer users and collaborate on documents or items. The client device202associated with the user210includes a collaborative application204. The client device206associated with the user212includes a collaborative application208. The collaborative application204and collaborative application208communicate with the enterprise application124of application server118. The programmatic client108communicates with the enterprise application124.

The relevant content engine126accesses the enterprise application124to determine which items are most often accessed by user210and user212. The surfacing engine110retrieves the relevant items and surfaces them within the programmatic client108of the client device106for the user132.

In one example embodiment, the relevant items are presented within the context of the programmatic client108(e.g., email application). For example, an item is presented relevant to an email or a contact.

FIG. 3is a diagrammatic representation of ranking relevant documents accessed by peer users, in accordance with some example embodiments. The diagram illustrates peer users (e.g., user302, user304, user306) that are “close” to the user132. For example, the peer users include the top 3 peer users that the user132has communicated the most with using the enterprise application124or the programmatic client108.

Each peer user performs an action on one or more items. For example, user302reads and writes on item308, item314, and item312. User304reads on item314,314, and writes on item310. User306writes on item310. Each arrow represents an action such as a read action or write action.

FIG. 4is a block diagram illustrating a relevant content engine in accordance with one example embodiment. The relevant content engine126includes a peer identifier module402, a rank computation module404, a relevant content identification module406, a user preference profile408, and a user selection module410. The peer identifier module402identifies peer users closest to the user132. For example, the peer identifier module402identifies 40 peer users that the user132has communicated the most with within a preset time range (e.g., within the last week). The peer users and the user132are peer users of the enterprise application124. In another example, the peer users and the user132belong to a same enterprise organization, group, or team.

The rank computation module404computes a rank score for each item (e.g., item308, item314, item312, item310) accessed by the top peer users (e.g., user302, user304, user306). In one example embodiment, the rank score for each item is the sum of actions performed by top peers on that item, weighted with the importance of the peer and importance of the action; all time decayed. Actions include read and write.

The relevant content identification module406identifies relevant items based on the rank score for each item. For example, items with highest rank score are the most relevant to the user132.

The user selection module410identifies a selection from the user132that indicates a preference for certain document features (e.g., user132most often reads spreadsheet documents). This preference is used to create/adjust the user profile of the user132.

The user preference profile408forms a user profile of the user132based on the feedback from user selection module410and direct feedback the user132(e.g., user indicates that a particular item is not relevant).

The rank computation module404recalculates rank based on the user preference from the user preference profile408. For example, user132clicks are logged to create a user profile indicating preference for certain document features. The rank score is recalculated based on this profile. In another example, the rank computation module404captures user clicks (e.g., user132) and recalculate the user profile for the user132.

FIG. 5is a block diagram illustrating a surfacing engine110in accordance with one example embodiment. The surfacing engine110includes a relevant content surfacing module502, an enterprise application interface504, and an item selection module506. The relevant content surfacing module502communicates with the relevant content engine126and retrieves relevant items. The relevant content surfacing module502presents the relevant items in the context of the programmatic client108. In one example embodiment, the item selection module506detects that the user132has selected an email, an appointment, or a contact from the programmatic client108. The relevant content surfacing module502identifies a subset of items from the relevant items that are pertinent to the selected email, appointment, or contact in the programmatic client108. The relevant content surfacing module502presents the subset of items in the programmatic client108. The enterprise application interface504enables the programmatic client108to communicate with the enterprise application124.

FIG. 6is a flow diagram illustrating a method600for surfacing documents in accordance with one example embodiment. Operations in the method600may be performed by the relevant content engine126, using components (e.g., modules, engines) described above with respect toFIG. 4. Accordingly, the method600is described by way of example with reference to the relevant content engine126. However, it shall be appreciated that at least some of the operations of the method600may be deployed on various other hardware configurations or be performed by similar components residing elsewhere. For example, some of the operations may be performed at the surfacing engine110.

At block602, the relevant content engine126identifies peers based on user communication (e.g., which peer users has the user132communicated the most within the last week). At block604, the relevant content engine126computes a rank score for each document (or item) and identified peers. At block606, the relevant content engine126surfaces the relevant documents based on the rank score to the user within a context of the programmatic client108(e.g., email, contact).

FIG. 7is a flow diagram illustrating a method700for computing rank score in accordance with one example embodiment. Operations in the method700may be performed by the relevant content engine126, using components (e.g., modules, engines) described above with respect toFIG. 4. Accordingly, the method700is described by way of example with reference to the relevant content engine126. However, it shall be appreciated that at least some of the operations of the method700may be deployed on various other hardware configurations or be performed by similar components residing elsewhere. For example, some of the operations may be performed at the surfacing engine110.

At block702, the relevant content engine126computes, for each document, a rank score based on actions performed by top peers. At block704, the relevant content engine126determines a user preference. At block706, the relevant content engine126recalculates the rank score based on the user preference. At block708, the relevant content engine126captures user action and recalculates the user preference.

FIG. 8is a flow diagram illustrating a method800for surfacing documents in accordance with one example embodiment. Operations in the method800may be performed by the relevant content engine126, using components (e.g., modules, engines) described above with respect toFIG. 4. Accordingly, the method800is described by way of example with reference to the relevant content engine126. However, it shall be appreciated that at least some of the operations of the method800may be deployed on various other hardware configurations or be performed by similar components residing elsewhere. For example, some of the operations may be performed at the surfacing engine110.

In block802, the surfacing engine110receives a selection of a contact. In block804, the relevant content engine126identifies relevant documents based on the selected contact and rank score. In block806, the surfacing engine110surfaces the identified relevant documents based on the selected contact within the programmatic client108(e.g., message application).

FIG. 9is a flow diagram illustrating a method900for surfacing documents in accordance with one example embodiment. Operations in the method900may be performed by the relevant content engine126, using components (e.g., modules, engines) described above with respect toFIG. 4. Accordingly, the method900is described by way of example with reference to the relevant content engine126. However, it shall be appreciated that at least some of the operations of the method900may be deployed on various other hardware configurations or be performed by similar components residing elsewhere. For example, some of the operations may be performed at the surfacing engine110.

In block902, the surfacing engine110receives a selection of an email. In another example embodiment, the surfacing engine110detects all emails received by the user132on the day the programmatic client108is being used by the user132. In block904, the relevant content engine126identifies relevant documents based on the selected email (or all emails within that day) and rank score. In block904, the surfacing engine110surfaces the identified relevant documents based on the selected email (or all emails within that day) within the programmatic client108(e.g., email application).

FIG. 10illustrates a routine in accordance with one embodiment. In block1002, routine1000computes a rank score for each item of a plurality of items that are accessible from a user of an enterprise application. In block1004, routine1000identifies a set of relevant items from the plurality of items based on the rank score for each item of the plurality of items. In block1006, routine1000surfaces the set of relevant items within a context of a communication application of the user without receiving, from the user, a query for any of the items in the set of relevant items.

FIG. 11illustrates an example of a graphical user interface1100in accordance with one example embodiment. The contact listing1118displays contact1102, contact1106, contact1108, contact1104. Relevant items (based on the contact listing1118) are surfaced and presented in the graphical user interface1100: item1110, item1112, item1114, and item1116.

FIG. 12illustrates an example of a graphical user interface1200in accordance with one example embodiment. The graphical user interface1200displays a single contact1202. Relevant items (pertinent to the user132and the contact1202) are surfaced and presented in the graphical user interface1200: item1204, item1206, item1208, and item1210.

FIG. 13illustrates an example of a graphical user interface1300in accordance with one example embodiment. The graphical user interface1300displays an email message1310. Relevant items (pertinent to the user132and the email message1310) are surfaced and presented in the graphical user interface1300: item1302, item1304, item1306, and item1308.

FIG. 14is a diagrammatic representation of the machine1400within which instructions1408(e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine1400to perform any one or more of the methodologies discussed herein may be executed. For example, the instructions1408may cause the machine1400to execute any one or more of the methods described herein. The instructions1408transform the general, non-programmed machine1400into a particular machine1400programmed to carry out the described and illustrated functions in the manner described. The machine1400may operate as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine1400may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine1400may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a PDA, an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions1408, sequentially or otherwise, that specify actions to be taken by the machine1400. Further, while only a single machine1400is illustrated, the term “machine” shall also be taken to include a collection of machines that individually or jointly execute the instructions1408to perform any one or more of the methodologies discussed herein.

The machine1400may include processors1402, memory1404, and I/O components1442, which may be configured to communicate with each other via a bus1444. In an example embodiment, the processors1402(e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an ASIC, a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, a processor1406and a processor1410that execute the instructions1408. The term “processor” is intended to include multi-core processors that may comprise two or more independent processors (sometimes referred to as “cores”) that may execute instructions contemporaneously. AlthoughFIG. 14shows multiple processors1402, the machine1400may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core processor), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof.

The memory1404includes a main memory1412, a static memory1414, and a storage unit1416, both accessible to the processors1402via the bus1444. The main memory1404, the static memory1414, and storage unit1416store the instructions1408embodying any one or more of the methodologies or functions described herein. The instructions1408may also reside, completely or partially, within the main memory1412, within the static memory1414, within machine-readable medium1418within the storage unit1416, within at least one of the processors1402(e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine1400.

The I/O components1442may include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. The specific I/O components1442that are included in a particular machine will depend on the type of machine. For example, portable machines such as mobile phones may include a touch input device or other such input mechanisms, while a headless server machine will likely not include such a touch input device. It will be appreciated that the I/O components1442may include many other components that are not shown inFIG. 14. In various example embodiments, the I/O components1442may include output components1428and input components1430. The output components1428may include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor, resistance mechanisms), other signal generators, and so forth. The input components1430may include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point-based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or another pointing instrument), tactile input components (e.g., a physical button, a touch screen that provides location and/or force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.

Communication may be implemented using a wide variety of technologies. The I/O components1442further include communication components1440operable to couple the machine1400to a network1420or devices1422via a coupling1424and a coupling1426, respectively. For example, the communication components1440may include a network interface component or another suitable device to interface with the network1420. In further examples, the communication components1440may include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), WiFi® components, and other communication components to provide communication via other modalities. The devices1422may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a USB).

The various memories (e.g., memory1404, main memory1412, static memory1414, and/or memory of the processors1402) and/or storage unit1416may store one or more sets of instructions and data structures (e.g., software) embodying or used by any one or more of the methodologies or functions described herein. These instructions (e.g., the instructions1408), when executed by processors1402, cause various operations to implement the disclosed embodiments.

The instructions1408may be transmitted or received over the network1420, using a transmission medium, via a network interface device (e.g., a network interface component included in the communication components1440) and using any one of a number of well-known transfer protocols (e.g., hypertext transfer protocol (HTTP)). Similarly, the instructions1408may be transmitted or received using a transmission medium via the coupling1426(e.g., a peer-to-peer coupling) to the devices1422.

Although an overview of the present subject matter has been described with reference to specific example embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present invention. For example, various embodiments or features thereof may be mixed and matched or made optional by a person of ordinary skill in the art. Such embodiments of the present subject matter may be referred to herein, individually or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single invention or present concept if more than one is, in fact, disclosed.

EXAMPLES

Example 1 is a computer-implemented method comprising: computing a rank score for each item of a plurality of items that are accessible from a user of an enterprise application; identifying a set of relevant items from the plurality of items based on the rank score for each item of the plurality of items; and

surfacing the set of relevant items within a context of a communication application of the user without receiving, from the user, a query for any of the items in the set of relevant items.

In Example 2, the subject matter of example 1 includes: wherein computing the rank score further comprises: identifying a set of peer users relative to the user, the user communicating the most with the set of peer users relative to other peer users; determining the sum of actions performed by the set of peers for an item from the set of items; determining an importance of a peer user from the set of peer users, relative to the user; determining an importance of an action of the peer user from the set of peer users; and determining the rank score based on the sum of actions performed by the set of peers, the importance of the peer user from the set of peer users, and the importance of the action of the peer user from the set of peer users.

In Example 3, the subject matter of example 2 includes: wherein the action includes a read or write action performed on an item from the set of items.

In Example 4, the subject matter of example 2 includes: determining a user preference of the user based on user interactions on the enterprise application, the user preference indicating a preference for documents with common features; and recomputing the rank score based on the user preference.

In Example 5, the subject matter of example 1 includes: receiving a selection of a peer user in a graphical user interface of the communication application at a client device of the user; identifying a subset of items from the set of relevant items based on the selected peer user, the subset of items being relevant to the peer user based on the corresponding rank score of each item in the subset of items; and causing a display of an identification of the subset of items within the graphical user interface of the communication application.

In Example 6, the subject matter of example 1 includes: receiving a selection of an email in a graphical user interface of the communication application at a client device of the user; identifying a subset of items from the set of relevant items based on the selected email, the subset of items being relevant to the peer user based on the corresponding rank score of each item in the subset of items; and causing a display of an identification of the subset of items within the graphical user interface of the communication application.

In Example 7, the subject matter of example 1 includes: receiving a selection of an email thread (e.g., group of related emails, emails included in a conversation or with a same subject field) in a graphical user interface of the communication application at a client device of the user; identifying a subset of items from the set of relevant items based on the selected email thread, the subset of items being relevant to the peer user based on the corresponding rank score of each item in the subset of items; and causing a display of an identification of the subset of items within the graphical user interface of the communication application.

In Example 8, the subject matter of example 1 includes: wherein each item includes at least one of a file, a document, a news article, and a hyperlink, wherein each item is shared with the user.

In Example 9, the subject matter of example 1 includes: wherein the communication application includes an email application, wherein the enterprise application includes a collaborative application.

In Example 10, the subject matter of example 1 includes: receiving a user feedback indicating a measure of relevance of an item from the set of items; and adjusting the rank score for the item based on the measure of relevance.