The invention is illustrated in the figures of the accompanying drawings which are meant to be exemplary and not limiting, in which like references are intended to refer to like or corresponding parts, and in which:
In the following detailed description, reference is made to the accompanying drawings that form a part hereof, and in which is shown by way of illustration a specific embodiment in which the invention may be practiced. It is to be understood that other embodiments may be utilized and structural changes may be made without departing from the scope of the present invention.
The host system 100 includes web applications 110 (possibly operated by the same or different service providers), real-time user profile platform (RTUPP) 120, targeted ads/content service (TACS) 130 coupled to web applications 110 and to RTUPP 120, marketing tool 140 coupled to RTUPP 120, and data warehouse 170 coupled to RTUPP 120. RTUPP 120 includes a user event service (UES) 122 coupled to web applications 110, to marketing tool. 140, and to data warehouse 170, a user profile service (UPS) 124 coupled to TACS 130, a profile processor 126 coupled to UES 122, and a universal profile and event store (UPES) 128 coupled to the profile processor 126, to the UES 122, to the UPS 124, and to other instances of UPES 128. Host system 100 may also comprise one or more data stores (not shown) for providing transient and persistent storage of information used in storing, updating, and accessing in real-time a user's universal profile.
A user 160 operating client device 150 interacts with host system 100 via interaction with a web application 110. Client device 150 may be any device that allows for transmission of commands and requests to host system 100. A client device 150 may be a general-purpose computer comprising a processor, transient and persistent storage devices, an input/output subsystem, and a bus to provide a communications path. Client device 150 may have a network interface to the network, such as a wired or wireless Ethernet interface. Client device 150 may run software applications such as a web browsing application, which allows access to web application 110. Example client devices 150 include laptops, PDAs, mobile phones, desktops, etc. Web applications 110 may offer various services including, for example, e-mail, instant messaging (IM), online shopping, dating and personals services, search engines, directories and guides, audio and video services, image hosting, fantasy sports, games, and the like. Each web application 110 may require a user 160 to register for a service, such as in the case of an e-mail service, by creating a user account including e.g., a user ID and a password. Each web application 110 may require a user 160 to complete a user profile that includes personal information relating to the user, such as in the case of a dating and personals service. Each web application 110 may also allow a user 160 to attain various different levels of membership for a service based on, for example, a registration status (e.g., registered vs. unregistered or paid vs. unpaid). Each web application 110 may have different requirements for its users. Accordingly, a single user 160 interacting with many web applications 110 may have various dedicated user profiles associated with various user accounts corresponding to different services of the different web applications 110. Each of the web applications 110 may also be configured to operate with the host system 100 to maintain and exploit universal user profiles. In some embodiments, the universal user profile may replace one or more dedicated user profiles.
As a user interacts with a web application 110, the web application 110 may report user events to UES 122. UES 122 receives reports of user events from the web applications 110, and stores user event information in UPES 128. User events may include interactions such as purchases and other financial transactions, search queries, and file transfers with web applications 110. User events may also include interactions such as registration for a user account, completion of a dedicated or application-specific user profile, or a change in level of membership. UES 122 may alternatively or additionally forward user event information to profile processor 126, which may use the event information to update/modify/reconcile the user's profile information and/or metadata (e.g., indexing) stored in the UPES 128. UES 122 may alternatively or additionally forward user event information to a data warehouse 170, which may further process the user event information.
UPS 124 receives profile requests from TACS 130 and retrieves profile information from UPES 128 in response to the profile requests. Profile information may include information supplied by a user (e.g., personally identifying information) as well as information gleaned from user activity data or user event data. UPS 124 may serve only registered web applications 110, only web applications for a single service provider (e.g., Yahoo! Inc.), only trusted service providers, all service providers, and/or the like. A profile request may include a request for user profile information previously supplied during prior interactions with one or more of the web applications 110, for example, through account registration procedures, transactions, user profile completion procedures, etc. In response to receiving profile information from the UPES 128 in response to the profile request, UPS 124 sends the profile information to TACS 130. In other embodiments, UPS 124 may also send the profile information to web application 110.
TACS 130 uses received profile information to present targeted content to the user 160, e.g., via a banner advertisement on the web application 110. In one embodiment, TACS 130 receives the user profile information from UPS 124 and determines an appropriate (relevant in content, relevant in time, user specific, etc.) targeted content for the user based on the profile information received. For example, a known user 160 may currently interact with a web application 110 such as a music service. In response to a profile request, UPS 124 may retrieve the user's universal profile from UPES 128. The user's universal profile may include information reflecting the user's prior interaction with the music service and may include information reflecting the user's prior interaction with one or more other web applications 110, such as a shopping service. Thus, the user's universal profile may include information indicating that the user prefers classic rock music (e.g., based on the user's prior interactions with the music service, as captured by stored user event information) and information that the user has recently been shopping for a sport utility vehicle (e.g., based on the user's prior interactions with a shopping service and stored user event information). Armed with this information, TACS 130 may present targeted content to the user 160, such as links to play and/or purchase and download classic rock music titles using the music service. TACS 130 may use the information to present the user with targeted content such as an offer to buy tickets to a classic rock music concert. TACS 130 may use the information to present targeted ads related to SUV dealerships, auto financing companies, and auto insurance companies. Other additional or alternative options are also possible. In other embodiments, the web application 110 may also receive the universal profile information from the UPS 124 and use it to assist the user, provide a customized interface, to complete forms, etc.
Profile processor 126 may process user events to generate metadata from each user event to update a user's universal profile stored in the UPES 128. The metadata may include indexing information, organization information, user event interpretation information, statistical analysis information, group classification information, etc. The profile processor 126 may process user events in real-time, or may perform batch processing of multiple user events. The profile processor 126 may operate offline, by retrieving, analyzing and replacing user profile information stored in the UPES 128. Additionally or alternatively, the profile processor 126 may obtain user event information from the UES 122, may conduct its analysis on the received event information, and may update the UPES 128, if necessary and/or accordingly. For example, if the user event indicates a registration event, the profile processor 126 may update a user attribute for “registered user” to “true.”
In addition to storing user profile information (including metadata from profile processor 126), UPES 128 may also examine the stored profile information for specific criteria (e.g., missing information, stale data, redundant data, excessive information, and like user profile concerns). Upon recognizing the specific criteria, the UPES 128 performs a responsive action. For example, the UPES 128 may send a notification to the UES 122, which may send notifications to marketing tool 140 to send marketing information to certain users. As another example, the UPES 128 may delete now-stale data. Other responses are also possible.
Marketing tool 140 sends a user 160 marketing information based on the specific criteria. Marketing information may include, for example, a targeted newsletter or an email campaign. The marketing tool 140 may send the marketing information to the user via an email, post mail, IM, and/or the like. For example, marketing tool 140 may send marketing information based on a user's registration status, a change in a user's registration status, or a lapse in user activity for a pre-determined amount of time, e.g., 30 days, etc. For example, a user 160 may interact with a web application 110 such as a dating and personals service. The user 160 may change status from that of an unregistered member to that of a registered member. The web application 110 reports this user event to UES 122. UES 122 sends this user event information to UPES 128. UPES 128 may send a notification to UES 122, which forwards the notification and user information to the marketing tool 140 that the user 160 has changed registration status. Based on the change in registration status, marketing tool 140 may send the user marketing information, such as an e-mail containing a membership subscription offer for an upgraded membership. Similarly, if a user 160 does not interact with web application 110 for a pre-determined amount of time, e.g., 30 days, the UPES 128 may send a notification to the UES 122, which informs the marketing tools 140, which may send the user 160 marketing information such as an e-mail containing an offer intended to motivate the user 160 to return to the service.
Data warehouse 170 receives user event information from UES 122. Data warehouse 170 may further process the user event information and may also store and archive user event information. Data warehouse 170 receives notifications from UES 122 in order to update or modify stored data. Notifications may be based on, for example, a notification policy or an expiration policy.
The operation of host system 100 as described with reference to
Persistent files 220 store each user's universal profile and user event information. More specifically, object data file 224 stores the users' data, while index file 222 provides the location and/or other metadata of user data. In order to ensure fast response times to applications, the UPES 128 utilizes shared memory 210. The object index cache 212 maintains an index of cached data and additionally caches data from the index file 222 to determine the location of the data faster, i.e., whether on disk or in shared memory. The read cache 214 caches profile attribute data retrieved from the object data file 224. The write buffer 216 stores user event data and modified profile data recently received from a web application 110. Thus, instead of repeatedly and constantly accessing the persistent files 220 for read lookups and write updates, the UPES 128 uses the shared memory 210 including the in-memory read cache 214 and write buffer 216. In one embodiment, object data file 224 is updated from the write buffer 216 only when the write buffer 216 is full. If a user is removed, the UPES 128 need only update the in-memory copy of the index file 222.
Communication process 230 processes communications for client access to the UPES 128. That is, communication process 230 handles communications between the UPES 128 and the UES 122 for the UES 122 to store user events and for the UPES 128 to send notifications to the UES 122. Communication process 230 handles communications between the UPES 128 and the UPS 124 for the UPS 124 to send profile requests to the UPES 128 and for the UPES 128 to send profile information to the UPS. Store server process 232 replicates incoming requests for client access to the UPES 124. That is, the UPES 128 creates multiple instances of store server process 232 in order to address the possibility of data loss. Store server process 232 also replicates updates to other stores (i.e., other instances of UPES 128 hosted by other host systems). Replication occurs in real-time so that the updated user profile data may be available immediately rather than in days. Store notifier and cleaner process (SNCP) 234 handles notification and data cleanup. SNCP 234 periodically applies global data policies, including global expiration policies and notification policies, to data stored in persistent files 220. Also, SNCP 234 may perform notification and data cleanup triggered by storage of a user event, an update of a user's universal profile, or the passage of time or period of inactivity.
UserSpace table 310 is linked to User table 320. A UserSpace table 310 may be linked to multiple different instances of User table 320. Similarly, a given User table 320 may be linked to multiple different instances of UserSpace table 310. User table 320 is linked to ProfileAttribute table 330 and UserEvent table 340. User table 320 may be linked to multiple different instances each of ProfileAttribute table 330 and UserEvent table 340. ProfileAttribute table 330 and UserEvent table 340 are also linked to DataSpace table 350. DataSpace table 350 may be linked to multiple different instances each of ProfileAttribute table 330 and UserEvent table 340. Similarly, a given ProfileAttribute table 330 may be linked to multiple different instances of DataSpace table 350. Likewise, a given UserEvent table 340 may be linked to multiple different instances of DataSpace table 350.
UserSpace table 310 corresponds to a user space, which is a collection of users sharing at least one characteristic. Some examples of shared characteristics include registration status or class of membership for a particular service, or status as a user who has performed a particular class of user event. Accordingly, UserSpace table 310 may be linked to multiple different instances of User table 320. Each user space has a specific set of policies for managing data associated with users in that user space. These policies apply globally to all users within the particular user space. UserSpace table 310 may include data fields ID 311 and RecyclePolicies 312. ID 311 identifies a particular user space and RecyclePolicies 312 identify a data recycling policy associated with the user space. For example, UPES 128 may have one user space for registered users of Yahoo! and another user space for Yahoo! visitors. The user space for visitors may have a data recycling policy that all data should be removed from the UPES 128 if a visitor does not interact with Yahoo! for a given time period, such as 3 months. The user space for registered users may have a data recycling policy that all data should be removed from the UPES 128 if the registered user does not interact with Yahoo! for a different given time period, such as 24 months.
Each instance of a User table 320 corresponds to a specific user. A user may belong to one or more different user spaces. Accordingly, User table 320 may be linked to multiple different instances of UserSpace table 310. User table 320 may include data fields UID 321 and Expiration 322. UID 321 identifies a given user and may be, for example, a user ID, login name, or account name. Expiration 322 is associated with the user, and may include a date when the User table 320 should be deleted. This date may be updated based on user events, or may be changed by individual user preferences or by global data policies.
ProfileAttribute table 330 corresponds to a specific user and a specific attribute of that user's universal user profile. A user's universal profile may have many different data fields corresponding to different attributes. Accordingly, User table 310 may be linked to multiple different instances of ProfileAttribute table 330. ProfileAttribute table 330 may include data fields Name 331, Value 332, ExpirationTime 333, and NotificationTime 334. Name 331 identifies an attribute corresponding to a given user. Value 332 identifies the value of the corresponding attribute Name 331. ExpirationTime 333 indicates a period of time after which the data stored in ProfileAttribute table 330 expires and should be deleted from the UPES 128. NotificationTime 334 indicates a period of time after which a notification should be sent to take action (such as a notification to the UES 122 and forwarded to the marketing tool 140 to send marketing information to a user).
UserEvent table 330 corresponds to a specific user and a specific user event. A user's universal profile may have many different data fields corresponding to different user events. Accordingly, User table 320 may be linked to multiple different instances of UserEvent table 340. UserEvent table 340 may include data fields EventType 341, EventID 342, When 343, Occurrences 344, and EventDetails 345. EventType 341 identifies a type of user event corresponding to a particular interaction with a web application, such as a search query. EventID 342 identifies a particular instance of a user event. When 343 identifies when a given user event occurred. Occurrences 344 identifies the number of times a given user event has occurred. EventDetails 345 includes specific details about a given user event. For example, if the type of user event identified by EventType 341 were a search query, then EventDetails 345 may include specific keywords forming the basis of the query.
DataSpace table 350 corresponds to a data space, which is a collection of pieces of data, such as profile attributes and user events, sharing at least one characteristic. Accordingly, DataSpace table 350 may be linked to multiple different instances each of ProfileAttribute table 330 and UserEvent table 340. Each data space has a specific set of policies for managing data associated with that data space. These policies apply globally to all data within the particular data space. DataSpace table 350 may include data fields ID 351, MaxSize 352, AccessPolicies 353, ExpirationPolicy 354, NotificationPolicy 355, and SvcLvlAgreement 356. ID 351 identifies a particular data space. MaxSize 352 identifies the maximum size for the data space. AccessPolicies 353 identifies access policies for data within the data space. In one embodiment, the AccessPolicies 353 may specify which web applications 110 of host system 100 may access the data in the data space. In this situation, a common service provider serves all of the web applications 110 on host system 100. In other embodiments, the AccessPolicies 353 may grant access to data in the data space to web applications not part of host system 100. In this situation, different service providers serve various web applications. ExpirationPolicy 354 identifies an expiration policy for data within the data space. For example, a data space called “Search History” may have a maximum size of 500, meaning that up to 500 searches are saved in a search history. An expiration policy may require that data expire after 2 months, for example, unless the user explicitly requested otherwise. NotificationPolicy 355 identifies a notification policy for data within the data space. SvcLvlAgreement 356 identifies a service level agreement applicable to the data space. Different data spaces may be associated with different levels of service (e.g., in terms of response time) based on the service level agreement.
For example, a user may interact with a web application 110 such as a dating and personals service. The user may upload a photo to the dating and personals service, and this interaction may be recorded as a user event. The web application 110 for the dating and personals service reports the user event to the UES 122, which stores the user event in the UPES 128. The profile processor 126 processes the data to generate metadata associated with the user event and updates the user's universal profile stored in the UPES 128. The user's universal profile may be updated so that a profile attribute, for example, called “PhotoUploaded” is set to the value “True.”
For example, a user may interact with a web application 110 such as music service. The web application 110 for the music service sends a request for the user's profile to the UPS 124, which retrieves the user's universal profile from the UPES 128 and sends it to the web application 110. The UPS 124 presents profile information to the TACS 130. This profile information may include information that the user's favorite music genre is classic rock and may also include information that the user recently performed searches for a sport utility vehicle (SUV) using a car shopping service. The TACS 130 presents targeted content based on the profile information. The TACS 130, through web application 110 for the music service, may present the user with, for example, featured content in the genre of classic rock. The TACS 130, through web application 110 for the music service, may also present the user with targeted ads related to SUV dealerships, auto financing companies, and auto insurance companies. If a new user event occurs, e.g., from the same or another web application 110, the TACS 130 may be armed with the current information. In this manner, targeted content is based on up-to-the-second user interest information gleaned from up-to-the-second user interactions with various web applications 110.
For example, a user may interact with a web application 100 such as a dating and personals service. The user may upload a photo to the dating and personals service, and this interaction may be recorded as a user event. The web application for the dating and personals service reports the user event to the UES 122, which stores user event information in the UPES 128. The profile processor 126 processes the event information to generate metadata associated with the user event from the user event information and updates the user's universal profile. Alternatively or additionally, the UPES 128 performs a process to update the user's universal profile based on the recently stored user event. The user's universal profile may be updated so that a profile attribute, for example, called “PhotoUploaded” is set to the value “True.” By updating the user's profile, the profile processor 126 triggers a notification to be sent from the UPES 128. Alternatively or additionally, a UPES 128 process such as a store notifier and cleaner process (SNCP) 234 applies a notification policy based on the profile attribute “PhotoUploaded” being updated in the user's universal profile. The UES 122 receives the notification from the UPES 128, and sends the notification along with user identifying information, such as part of the user's universal profile, to the marketing tool 140. The marketing tool 140 sends the user marketing information, such as an email containing an offer for an upgraded membership. As another example, the UPES 128 may recognize that a photo has not been uploaded and may trigger a notification to inform the user that his registration may be inactivated unless a photo is added. Alternatively or additionally, the UES 122 may send the notification to the profile processor 126 to update the user's profile or the UES 122 may send the notification to the data warehouse 170 to update or modify the data stored or archived therein.
While the invention has been described and illustrated in connection with preferred embodiments, many variations and modifications as will be evident to those skilled in this art may be made without departing from the spirit and scope of the invention, and the invention is thus not to be limited to the precise details of methodology or construction set forth above as such variations and modification are intended to be included within the scope of the invention.
A portion of the disclosure of this patent document contains material 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 files or records, but otherwise reserves all copyright rights whatsoever. This application hereby incorporates by reference U.S. application Ser. No. ______ filed on Dec. 9, 2004 entitled “Personalized Web Applications Based on Anticipation of User's Interests.”