This invention relates generally to relationships systems, and more particularly to managing events in a relationship system.
A portion of the disclosure of this patent document contains material which is subject to copyright protection. The copyright owner has no objection to the facsimile reproduction by anyone of the patent document or the patent disclosure as it appears in the Patent and Trademark Office patent file or records, but otherwise reserves all copyright rights whatsoever. The following notice applies to the software and data as described below and in the drawings hereto: Copyright © 2004, Spoke Software, Inc., All Rights Reserved.
Currently various computer-based applications manage and track interactions between people in conjunction with, for example, a sales process. Customer Relationship Management (CRM) systems that incorporate sales force automation methodologies typically focus on pipeline management and on monitoring the sales process between known endpoints but the current CRM systems cannot identify a new endpoint or provide a guided process to a new endpoint.
Social Network Theory has evolved to characterize the behavior of “referral networks.” Researchers have described mathematically the multiple levels of relationships existing among networks of people, for example, the situation where two friends, Jim and Fred, may see each other every day at the gym (high personal relationship strength) but never discuss business (low professional relationship strength). Further, social network theorists have shown that networks exhibit predictable behaviors at the macro and micro levels. As the networks grow, they tend to preferentially attach to the more connected nodes, with the “rich getting richer”.
Bridges between networks (particularly between highly connected nodes) that span enterprises are important for sales prospecting purposes. Studies of connections among these networks demonstrated what might appear to be counter-intuitive: when it comes to finding a job, our “weak social links” are more important than the more cherished, strong, relationships, indicating that groups of tightly coupled friendship circles connect to other groups of tightly coupled friendships via “bridges” that sharply broaden the job search space.
Although Social Network Theory has established that evaluating a person's social network can generate high quality contacts, analysis of social relationship information to identify and quantify referral routes to a desired person or company has not been incorporated into computer-based applications. In particular, the identification of “invisible” referral routes has not been addressed, e.g., Fred went to school with the Vice President of Purchasing at a particular company Jim has as a sales target.
A method and apparatus to manage alert triggers in a relationship system are disclosed. According to one aspect of the invention, the method includes maintaining a set of alert triggers that define operations for detecting changes pertaining to elements of a relationship graph. The elements of the relationship graph include nodes representing entities and edges representing relationships between entities. The method further includes performing the operations defined by the set of alert triggers, and providing an alert to one or more users when any of the defined operations satisfy an alert condition associated with a corresponding alert trigger.
The present invention is described in conjunction with systems, clients, servers, methods, and machine-readable media of varying scope. In addition to the aspects of the present invention described in this summary, further aspects of the invention will become apparent by reference to the drawings and by reading the detailed description that follows.
In the following detailed description of embodiments of the invention, reference is made to the accompanying drawings in which like references indicate similar elements, and in which is shown by way of illustration specific embodiments in which the invention may be practiced. These embodiments are described in sufficient detail to enable those skilled in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical, functional, and other changes may be made without departing from the scope of the present invention. The following detailed description is, therefore, not to be taken in a limiting sense, and the scope of the present invention is defined only by the appended claims.
An overview of the operation of an embodiment of an entity relationship analysis and mapping system is described with reference to
As illustrated in
Each edge directly connecting a pair of nodes is assigned a “Strength of Relationship” (SOR) weight based on the quality and frequency of contact between the two people (not illustrated). The relationship graph 100, along with the SOR between pairs of nodes, establishes a “Network Strength of Relationship” (NSOR) between every reachable pair of nodes in the social network represented by the graph 100, and an “Aggregate Strength of Relationship” (ASOR) between either subscribers to the system, or groups of subscribers, and targets who are subscribers or non-subscribers known to subscribers (“leaves”), or groups of subscribers and/or leaves.
As illustrated, even though Pete and Mary are not directly connected, Pete can “reach” Mary by being referred through the social network represented by the graph 100. Starting with Pete's immediate relationships, the system of the present invention analyzes the relationship graph 100 to dynamically establish a path of intermediate nodes 105, 107, 109 that ends with the node 103, and suggests Tim as Pete's starting contact for his referral request. Pete invokes a workflow function within the system to begin the process of forwarding his referral request to Mary. The system will send a message to Tim, informing him that Pete is requesting a referral to Mary and that Pierre is the next contact in the referral path. If Tim decides to forward the referral request to Pierre, Pierre will receive a similar message indicating that John is the next contact. In an alternate embodiment, any person receiving the referral request may determine that a person different than that originally selected by the system should be the next link in the path. Furthermore, although only one path is illustrated in
Any person in the path may decline to forward the request to the next person, but a privacy protection scheme for the workflow masks the break in the referral chain so that the request originator only knows that the referral request was not successful, not where the chain was broken. The privacy protection scheme is illustrated in
Assuming someone in the path does decline to forward the request, the system may use that information to recalculate the SOR between the sender of the request and the person that broke the chain. Conversely, if node N passes on the referral it receives from node N−1, the SOR between nodes N−1 and N increases.
In one embodiment, the system maintains three categories of data about people: public data, private data, and “inferred” data. Public data is information that is generally available, such as on the Internet, or is specifically made available to all subscribers to the system. For example, name, title, and employer fall in the public data category. When a change in public data is extracted from a sufficient number of data sources, the public data is updated if the change is considered “correct” as described further below. Private data is information that every subscriber individually maintains for the other people with which he/she has direct relationships. Thus, A's private data may reflect a change in the mobile telephone number for B while C continues to see only the old number. Inferred data is information developed by the system based on interactions among the subscribers. Thus, in the above example, the system may infer that B has changed jobs based on A's private data. In one embodiment, inferred data is protected with additional security, such as encryption, to safeguard the personal actions of the subscribers.
As previously described, the relationship graph 100 illustrated in
Furthermore, in one embodiment, the system distinguishes among subscribers to the system and those non-subscribers with whom the subscribers communicate to protect the privacy of the non-subscribers. For example, assume non-subscriber A sends email to subscriber B and carbon copies fifteen other people. A has thus exposed the fifteen other people to B and the system adds the fifteen people to B's relationship graph as “shadow” nodes, which it includes in its search when B requests a referral path. Additionally, A is added as a “shadow” subscriber. However, because A is a shadow subscriber, no subscribers other than B can search through A and any workflow that identifies B as an intermediary link to one of the fifteen ends at B (unless A is also a shadow subscriber for any other subscriber in addition to B).
While the system has been described in terms of relationships between pairs of nodes, it will be appreciated that nodes may be grouped into sets and that relationships may be established among nodes and sets of nodes in various combinations and processed in a similar fashion to relationships among individual nodes.
As will be discussed in more detail below, the applications 211 may further use the dynamic nature of the global relationship graph to discover recent changes concerning elements of the relationship graph and alerting subscribers to these changes. In particular, the applications 211 may maintain a set of alert triggers that define operations for detecting changes pertaining to the elements of the relationship graph, perform the operations defined by the set of alert triggers, and provide alerts to users when the defined operations satisfy alert conditions associated with the corresponding alert triggers.
The system 300 includes a client 301 (or clients) for each individual subscriber to the system 300 and a server 303 that manages the global relationship graph. The client 301 includes a user behavior monitor 317 that will be discussed in more detail below. The server 303 includes a relationship graph data store 305 and alert trigger engine 315 that may be part of decision and visualization applications 211 of
In one embodiment, the alert trigger engine 315 includes a trigger creator 307, a trigger database 309, a trigger scheduler 311, a trigger executor 313, and a user notifier 319. The trigger creator 307 is responsible creating new alert triggers and storing them in the trigger database 309. Each alert trigger is associated with one or more operations for detecting a specific change in the relationship graph, an alert condition to be compared with the result of the operations, and one or more recipients of an alert that may result from the execution of the alert trigger. In one embodiment, an alert trigger is also associated with a frequency parameter specifying how often the operations defined by the alert trigger should be performed. In one embodiment, the alert trigger parameters are specified by a user. A user may be a subscriber of the system 300 or an administrator of the system 300. In another embodiment, the alert trigger parameters may be determined by the trigger creator 307. For example, the trigger creator 307 may identify an operation and an alert condition by receiving an indication of a user interest in the result of this operation. For example, the trigger creator 307 may detect that a user's search for a contact in a specific company did not produce any result, and offer the user to activate a trigger that would send an alert to the user when the search result changes. If the user asks for the activation, the trigger creator 307 then creates a new alert trigger and defines a search previously submitted by the user as a trigger's operation and the search result set of 1 or greater as the trigger's alert condition.
The trigger scheduler 311 is responsible for scheduling the execution of alert triggers stored in the trigger database 308. In one embodiment, the trigger scheduler 311 schedules the execution of the alert triggers based on their frequency parameters. Alternatively, the trigger scheduler 311 may schedule the execution of alert triggers at predefined time intervals, or based on a prioritization scheme or any other scheduling mechanism.
The trigger executor 313 is responsible for executing the alert triggers according to the schedule supplied by the trigger scheduler 311. In particular, the trigger executor 313 executes each alert trigger by performing one or more operations defined by a relevant alert trigger, and evaluating the result of the operations to determine whether it satisfies an alert condition associated with the relevant alert trigger. In one embodiment, the operations defined by the alert trigger are performed by the trigger executor 313 (e.g., by submitting a search for an entity or comparing current notes concerning an entity with previously saved notes concerning the entity). In another embodiment, the operations defined by the alert trigger are performed by the trigger executor 313 in cooperation with a user behavior monitor 317 residing on a corresponding client 301. In particular, the user behavior monitor 317 may collect information identifying new relationships of the user and send the collected information to the server 303 where the trigger executor 313 may periodically evaluate this information to determine whether it satisfies an alert condition of a relevant alert trigger (e.g., a new personal relationship alert trigger). The set of monitoring operations may include, for example, searching local files for new accounts created by the user, scanning email messages of the user to find new email recipients and senders, etc.
The notifier 319 is responsible for providing an alert to one or more users when the operations satisfy a relevant alert condition. In one embodiment, the notifier 319 communicates to the users information identifying the corresponding alert trigger and a result of said any of the plurality of operations (e.g., via an email, a voice message or any other communication media).
Referring to
At processing block 404, processing logic maintains a schedule for performing operations defined by the set of alert triggers. The schedule may be compiled based on frequency parameters associated with the alert triggers. Alternatively, the schedule may be compiled based on a prioritization scheme or any other scheduling mechanism. Processing logic updates the schedule when alert triggers are added to, or removed from, the set of current alert triggers.
At processing block 406, processing logic performs the defined operations according to the schedule, and compares the results of the operations with corresponding alert conditions.
When processing logic detects that an alert condition is satisfied, processing logic provides an alert to a user or a group of users associated with the relevant alert trigger (processing block 408). In one embodiment, processing logic provides an alert by sending an email identifying the relevant alert trigger and the satisfied alert condition. Alternatively, processing logic provides an alert to the user via a voice message or any other communication media
In one embodiment, an alert trigger may be a member alert trigger or a global alert trigger. A member alert trigger is an alert trigger created for a specific subscriber. A global alert trigger is an alert trigger created for a group of subscribers. Examples of member alert triggers may include a weakening/strengthening relationship trigger that causes an alert to be sent when the user's relationship score with a specific entity (or the user's aggregated relationship score with sets of entities that may indicate the growing strength at a target company) begins to weaken/strengthen, a newly discovered relationship trigger that causes an alert to be sent when the path to a specific entity is changed, a new personal relationship trigger that causes an alert to be sent when a new personal relationship of the user is detected, a new search result trigger that causes an alert to be sent when the result of a specific search changes, a new content trigger that causes an alert to be sent when information about an entity changes, etc. Examples of global alert triggers may include a weakening/strengthening relationship alert trigger that causes an alert to be sent to a group of users (e.g., account team members) when their relationship score with a target entity or a target company begins to weaken/strengthen, a newly discovered relationship alert trigger that causes an alert to be sent to a group of users when the reachable space at the target company changes, etc.
Referring to
At processing block 504, processing logic creates an alert trigger to provide alerts to the user when changes, which are of interest to the user, take place. In one embodiment, processing logic creates an alert trigger in response to an explicit request of the user to activate this trigger. In another embodiment, processing logic creates an alert trigger in response to an implicit request of the user to activate the trigger (e.g., by selecting certain user preferences in a user profile). In yet another embodiment, processing logic creates an alert upon receiving a user request for an operation that detects a specific change concerning an element of the relationship graph, offering the user to activate a trigger configured to alert the user to the specific change, and receiving the user request for the activation.
At processing block 506, processing logic identifies parameters of the alert trigger. Exemplary parameters of an alert trigger may include one or more operations to be performed by the alert trigger, the owner of the alert trigger, an alert condition, frequency of the trigger execution, and a trigger deactivation parameter. In one embodiment, processing logic identifies the parameters of the alert trigger based on the user input (e.g., the user may specify some or all of the parameters, or choose default parameters of the requested alert trigger). In another embodiment, processing logic identifies the parameters of the alert trigger by analyzing the user behavior prior to the creation of the trigger. For example, if the alert trigger was created as a result of a user request to search for a contact in a specific company, processing logic may define the requested search as a trigger's operation and a positive change in the search result set as the trigger's alert condition.
The frequency and trigger deactivation parameters of an alert trigger may be predetermined or specified by the user. The trigger deactivation parameter may specify whether an alert trigger should be deactivated following an alert.
Next, processing logic stores the new alert trigger in a trigger database (processing block 508) and schedules the execution of the trigger (processing block 510). The execution of the trigger may be scheduled based on its frequency parameter, a prioritization scheme, or any other scheduling mechanism.
Further, processing logic performs, according to the schedule, the operation defined by the alert trigger (processing block 512), and determines whether an alert condition is satisfied (processing box 514). If not, processing logic schedules the next execution of the alert trigger (processing block 518) and returns to processing block 512. If so, processing logic sends an alert to the user (e.g., via an email) (processing block 516). In one embodiment, if the trigger deactivation parameter does not require a deactivation of the trigger following an alert, processing logic proceeds to processing block 518. Alternatively, method 500 ends after the execution of processing block 516.
In one embodiment, a user can deactivate an alert trigger at any time. Upon receiving a user request for deactivation, processing logic removes the alert trigger from the schedule and the trigger database.
As discussed above, one example of a member alert trigger is a new search result alert trigger.
Referring to
At processing block 604, processing logic schedules the execution of the new search result trigger. The execution of the new search result trigger may be scheduled based on its frequency parameter, a prioritization scheme, or any other scheduling mechanism.
Further, when the scheduled time reached (processing box 606), processing logic performs the relevant search (processing block 608) and compares the current search result with the previous search result. If the current search result has no positive changes (i.e., the number of elements in the result set has not changed and the elements themselves have not changed) (processing box 610), processing logic schedules the next execution of the new search result trigger (processing block 612) and returns to processing box 606. If the current search result has positive changes (i.e., either the number of elements in the result set has changed or any of the elements have changed), processing logic sends an alert to the user (e.g., via an email), indicating positive changes in the search result (processing block 614). In one embodiment, if the trigger deactivation parameter does not require a deactivation of the new search result trigger following an alert, processing logic updates the recorded search result set with the new search result set and proceeds to processing block 612. Alternatively, method 600 ends after the execution of processing block 614.
Referring to
At processing block 704, processing logic identifies a group of users to be associated with the global alert trigger. In one embodiment, processing logic identifies the group of users for the trigger based on the input of the administrator. In another embodiment, processing logic identifies the group of users for the trigger by determining which subscribers may be interested in the result of the operation defined by the global alert trigger.
Next, processing logic stores the new global alert trigger in a trigger database (processing block 706) and schedules the execution of the global alert trigger (processing block 708). The execution of the global alert trigger may be scheduled based on its frequency parameter, a prioritization scheme, or any other scheduling mechanism.
Further, processing logic performs, according to the schedule, the operation defined by the global alert trigger (processing block 710) and determines whether an alert condition is satisfied (processing box 712). If not, processing logic schedules the next execution of the global alert trigger (processing block 716) and returns to processing block 710. If so, processing logic sends an alert to the group of users (e.g., via an email) (processing block 714). In one embodiment, if the trigger deactivation parameter does not require a deactivation of the trigger following an alert, processing logic proceeds to processing block 716. Alternatively, method 700 ends after the execution of processing block 714.
In one embodiment, any user from the group associated with the global alert trigger may indicate that they no longer want to receive alerts caused by this global alert trigger. In response to such an indication, processing logic removes the user from the group associated with the global alert trigger in the trigger database.
In practice, the methods described herein may constitute one or more programs made up of machine-executable instructions. Describing the method with reference to the flowcharts in
The following description of FIGS. 8A-B is intended to provide an overview of computer hardware and other operating components suitable for performing the methods of the invention described above, but is not intended to limit the applicable environments. One of skill in the art will immediately appreciate that the invention can be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, network PCs, minicomputers, mainframe computers, and the like. The invention can also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
The web server 9 is typically at least one computer system which operates as a server computer system and is configured to operate with the protocols of the World Wide Web and is coupled to the Internet. Optionally, the web server 9 can be part of an ISP which provides access to the Internet for client systems. The web server 9 is shown coupled to the server computer system 11 which itself is coupled to web content 10, which can be considered a form of a media database. It will be appreciated that while two computer systems 9 and 11 are shown in
Client computer systems 21, 25, 35, and 37 can each, with the appropriate web browsing software, view HTML pages provided by the web server 9. The ISP 5 provides Internet connectivity to the client computer system 21 through the modem interface 23 which can be considered part of the client computer system 21. The client computer system can be a personal computer system, a network computer, a Web TV system, a handheld device, or other such computer system. Similarly, the ISP 7 provides Internet connectivity for client systems 25, 35, and 37, although as shown in
Alternatively, as well-known, a server computer system 43 can be directly coupled to the LAN 33 through a network interface 45 to provide files 47 and other services to the clients 35, 37, without the need to connect to the Internet through the gateway system 31.
It will be appreciated that the computer system 51 is one example of many possible computer systems which have different architectures. For example, personal computers based on an Intel microprocessor often have multiple buses, one of which can be an input/output (I/O) bus for the peripherals and one that directly connects the processor 55 and the memory 59 (often referred to as a memory bus). The buses are connected together through bridge components that perform any necessary translation due to differing bus protocols.
Network computers are another type of computer system that can be used with the present invention. Network computers do not usually include a hard disk or other mass storage, and the executable programs are loaded from a network connection into the memory 59 for execution by the processor 55. A Web TV system, which is known in the art, is also considered to be a computer system according to the present invention, but it may lack some of the features shown in
It will also be appreciated that the computer system 51 is controlled by operating system software which includes a file management system, such as a disk operating system, which is part of the operating system software. One example of an operating system software with its associated file management system software is the family of operating systems known as Windows® from Microsoft Corporation of Redmond, Wash., and their associated file management systems. The file management system is typically stored in the non-volatile storage 65 and causes the processor 55 to execute the various acts required by the operating system to input and output data and to store data in memory, including storing files on the non-volatile storage 65.
A method and system for managing alert triggers in a relationship system have been described. Although specific embodiments have been illustrated and described herein, it will be appreciated by those of ordinary skill in the art that any arrangement which is calculated to achieve the same purpose may be substituted for the specific embodiments shown. This application is intended to cover any adaptations or variations of the present invention.
For example, those of ordinary skill within the art will appreciate that although the system has been described in terms of sales prospecting and lead generation, the invention is not so limited and is suitable for use in any environment that utilizes referrals from one person to another. Furthermore, those of ordinary skill within the art will appreciate the term “database” has been used in its generic sense and is intended to encompasses all types of logical data storage, including relational, hierarchical, indexed flat file systems. Therefore, it is manifestly intended that this invention be limited only by the following claims and equivalents thereof.
This application is related to and claims the benefit of U.S. Provisional Application No. 60/494,230 filed on Aug. 7, 2003, which is hereby incorporated by reference.
Number | Date | Country | |
---|---|---|---|
60494230 | Aug 2003 | US |