Real-time tracking of user-application interaction

Some embodiments provide a system that monitors use of an application. During operation, the system uses the application to track a set of interactions between a set of users and the application without impacting the performance of the application. Next, the system stores the interactions as the interactions are detected by the application. Finally, for each user from the set of users, the system periodically processes a subset of the stored interactions associated with the user to obtain an activity history for the user, wherein the activity history is used to facilitate subsequent real-time use of the application by the user.

RELATED APPLICATION

The subject matter of this application is related to the subject matter in a co-pending non-provisional application by inventors Igor A. Podgorny, Fedor N. Dzegilenko, Martha J. Fiske, Jason A. Greschler and Floyd J. Morgan and filed on the same day as the instant application entitled “Question Prioritization in Community-Driven Question-and-Answer Systems,” having Ser. No. 12/841,821, filed on 22 Jul. 2010.

The subject matter of this application is also related to the subject matter in a co-pending non-provisional application by inventors Igor A. Podgorny, Fedor N. Dzegilenko, Floyd J. Morgan, Vineet Singh, Marc J. Attinasi and Troy D. Otillio and filed on the same day as the instant application entitled “Real-Time User Behavior Prediction,” having Ser. No. 12/841,831, and filed on 22 Jul. 2010.

BACKGROUND

Related Art

The present embodiments relate to techniques for facilitating use of application software for a computer system.

Application software may be used to perform tasks of varying duration and complexity. Furthermore, different amounts of user input and/or interaction with the software may be required to complete the tasks. For example, a user may spend several hours entering information into a tax preparation application to prepare and file his/her taxes, several minutes on an email client to send and receive emails, and/or several seconds starting and setting up a media player to play music. User experiences with an application may also vary based on the application's complexity, the user's familiarity with the application, and/or the domain of the application. For example, an accountant may find a tax preparation application to be simple or straightforward to use, while a user unfamiliar with tax law may find the same tax preparation application to be unusable.

Intelligent user interface design can facilitate interaction between an application and users of varying ability levels. For example, complex applications may include tutorials that explain the use of various features in the applications to the user. Use of help and/or support features may also improve a user's understanding of an application's user interface. For example, a user may browse or search an index of help topics to understand a confusing feature and/or part of an application. The user may also post questions on online forums to obtain support from customer care specialists and/or more advanced users of the application.

Similarly, the user may also choose between different versions of an application's user interface based on the user's aptitude in using the application. In addition, applications such as computer games and standardized tests may modulate the difficulty of the task at hand (e.g., game play, answering test questions, etc.) based on the precision, accuracy, and/or correctness of the user's input to the applications.

Finally, user issues with the user interface of an application may be identified and used to improve the user interface. For example, questions posted on online forums and/or other user feedback may be used by application designers or architects to determine problematic areas with an application's user interface and modify the user interface accordingly.

SUMMARY

The disclosed embodiments provide a system that monitors use of an application. During operation, the system uses the application to track a set of interactions between a set of users and the application without impacting the performance of the application. Next, the system stores the interactions as the interactions are detected by the application. Finally, for each user from the set of users, the system periodically processes a subset of the stored interactions associated with the user to obtain an activity history for the user, wherein the activity history is used to facilitate subsequent real-time use of the application by the user.

In some embodiments, the system also selects the users for tracking by the application based on the performance of the application.

In some embodiments, selecting the users for tracking by the application based on the performance of the application involves selecting an additional user for tracking by the application if a performance requirement is met by the application, and removing one of the users from tracking by the application if the performance requirement is not met by the application.

In some embodiments, periodically processing the subset of the interactions associated with the user to obtain an activity history for the user involves at least one of processing the subset of the stored interactions upon detecting a pre-specified number of interactions between the user and the application, and processing the subset of the stored interactions during a key stage of interaction between the user and the application.

In some embodiments, the key stage of interaction is at least one of initial use of the application, purchase of the application, and use of a complex feature in the application.

In some embodiments, each of the interactions corresponds to a page click or text input from the user.

In some embodiments, subsequent real-time use of the application by the user is facilitated by using the activity history to predict a probability of a user action in the application by the user, and modifying the probability by assisting the user with use of the application.

In some embodiments, the user action is at least one of discontinued use of the application and use of technical support for the application.

DETAILED DESCRIPTION

Embodiments provide a method and system for facilitating use of an application. The application may correspond to application software such as a word processor, an email client, a web browser, a web application, and/or a tax preparation application. The application may be used to perform one or more tasks for a user of the application. For example, the application may allow the user to create documents, display webpages, and/or prepare tax forms. Moreover, the user may interact with the application through the application's user interface.

More specifically, embodiments provide a method and system for monitoring real-time use of the application from the application. The application may track a set of interactions between a set of users and the application without impacting the performance of the application. Each interaction may correspond to a page click and/or text input from a user. The interactions may also be stored as the interactions are detected by the application. For example, data for each interaction may be pushed to a queue by the application as the interaction is received by the application.

The stored interactions may then be periodically processed to obtain activity histories for the users. Such periodic processing may be performed upon detecting a pre-specified number of interactions between the user and the application and/or during a key stage of interaction between the user and the application. In addition, the activity histories may be used to facilitate subsequent real-time use of the application by the users. For example, the activity history for a user may be analyzed to predict a probability of a user action in the application, such as discontinued use of the application and/or use of technical support for the application. The probability may then be modified by assisting the user with use of the application.

FIG. 1shows a schematic of a system in accordance with an embodiment. The system includes a monitoring apparatus102, an interaction-processing apparatus110, an analysis apparatus112, and a management apparatus114. Each of these components is discussed in further detail below.

In one or more embodiments, the system ofFIG. 1is used to monitor and facilitate the use of an application118by a set of users (e.g., user1104, user x106). Application118may correspond to a software program that is executed by a computing device, such as a personal computer (PC), laptop computer, mobile phone, portable media player, and/or server computer. For example, application118may be a word-processing application, an email client, an operating system, an accounting application, a web application, and/or a web browser. Application118may be distributed across one or more machines and accessed in various ways. For example, application118may be installed on a personal computer (PC) and executed through an operating system on the PC.

Moreover, application118may be implemented using a client-server architecture. Application118may be executed on one or more servers and accessed from other machines using a locally installed executable and/or a web browser and network connection. In other words, application118may be implemented using a cloud computing system that is accessed over the Internet. Regardless of the method of access, interaction between application118and the users may be facilitated through a user interface120.

In particular, interactions (e.g., interactions1122, interactions m124) between the users and application118may be enabled by user interface120. For example, the users may provide interactive input (e.g., page clicks, text input, file uploads, gestures, etc.) to application118through a graphical user interface (GUI) provided by application118and view text, images, documents, menus, icons, form fields, webpages, and/or other elements of application118through the same GUI. Those skilled in the art will appreciate that other types of user interfaces, such as command line interfaces and/or web-based user interfaces, may also be used by application118. Thus, application118is able to perform tasks by receiving input from and providing output to the users through user interface120.

Those skilled in the art will appreciate that a user's overall experience with application118may be affected by factors such as the user's familiarity with application118, the user's knowledge of the domain of application118, and/or the complexity or design of application118. For example, the user may find a web browser to be easy or straightforward to use and a tax-preparation application difficult or confusing to use. On the other hand, an accountant may have greater ease in using a tax-preparation application than a user who is unfamiliar with accounting and/or tax-preparation principles.

Furthermore, a user's experience with application118may affect his/her subsequent use of the application. For example, a user of a “try before you buy” application may choose not to purchase the application after experiencing difficulty and/or boredom with the application. Along the same lines, a user may incur additional costs from contacting technical support if the user cannot understand or use a feature of the application.

As described above, the system ofFIG. 1includes functionality to monitor and/or facilitate the use of application118. First, monitoring apparatus102may track interactions between one or more users and application118. The interactions may correspond to page clicks and/or text input from the users. For example, monitoring apparatus102may track the users' navigation through the webpages of a web application and/or form submissions to the web application. In addition, monitoring apparatus102may be implemented and/or provided by application118to enable tracking of the interactions in real-time from application118.

Moreover, monitoring apparatus102may track the interactions without impacting the performance of application118. Monitoring apparatus102may begin by tracking the interactions of a small set of users with application118and concurrently monitoring the performance of application118. Afterwards, monitoring apparatus102may incrementally select additional users for tracking if a performance requirement is met by application118. On the other hand, monitoring apparatus102may remove one or more users from tracking if the performance requirement is not met by application118. Consequently, monitoring apparatus102may modulate the tracking of users in a way that maintains both the performance of application118and maximizes the number of tracked users.

Next, monitoring apparatus102may store the interactions in an interaction repository108as the interactions are detected. For example, upon detecting an interaction between a user and application118, monitoring apparatus102may push a piece of data identifying the user and the interaction to a relational database and/or queue corresponding to interaction repository108. As a result, interaction repository108may maintain a record of interactions between the user and application118at a latency that is low enough (e.g., on the order of milliseconds) to be real-time.

The stored interactions in interaction repository108may then be processed by interaction-processing apparatus110to obtain a set of activity histories (e.g., activity history1126, activity history n128) for the users. Interaction-processing apparatus110may be external to application118to further reduce the performance impact associated with tracking users of application118. For example, application118, interaction repository108, and interaction-processing apparatus110may reside on three different servers. As a result, the operation of interaction repository108and/or interaction-processing apparatus110may have little to no effect on the operation of application118and/or monitoring apparatus102.

In one or more embodiments, interaction-processing apparatus110obtains an activity history for a user by periodically processing a subset of the stored interactions associated with the user in interaction repository108. The activity history may include data and/or statistics related to the stored interactions for the corresponding user. For example, the activity history may include a ratio of unique page clicks to total page clicks, an inverse coefficient of variation, a number of interactions with a question-and-answer (Q&A) system associated with application118, a user status, an availability of an email address for the user, and/or key words or phrases from the user's text input to application118.

More specifically, processing of the subset of the stored interactions may be triggered upon detecting a pre-specified number of interactions between the user and application118and/or during a key stage of interaction between the user and application118. For example, interaction-processing apparatus110may process the subset of interactions (e.g., interactions1122) in interaction repository108associated with the user (e.g., user1104) to obtain and/or update the activity history (e.g., activity history1126) after the user performs20,40, or100interactions with application118. Interaction-processing apparatus110may additionally obtain and/or update the activity history during initial use of application118, purchase of application118, and/or use of a complex feature in application118by the user.

The activity history may then be used to facilitate subsequent real-time use of application118by the user. In particular, analysis apparatus112may apply a predictive model to the activity history to predict a probability (e.g., probability1130, probability n132) of a user action in application118by the user. The user action may correspond to discontinued use of application118and/or use of technical support for application118.

Analysis apparatus112and/or management apparatus114may then modify the probability by assisting the user with use of application118. For example, analysis apparatus112and/or management apparatus114may increase use and/or adoption of application118by decreasing the probability of discontinued use of the application by the user. Similarly, analysis apparatus112and/or management apparatus114may reduce costs for both the user and the administrators (e.g., designers, engineers, support staff) of application118by decreasing the probability of using technical support for application118by the user.

To modify the probability, analysis apparatus112and/or management apparatus114may use the predictive model, activity history, and/or probability to determine whether the user should or should not be targeted with assisted use of application118. For example, analysis apparatus112may use a logit model to predict each user's probability of discontinuing use of application118before the user purchases application118. Analysis apparatus112may also calculate a targeted profit and an untargeted profit for one or more target groups of users (e.g., decile or percentile of probabilities). The targeted profit may be based on the cost of assisting each user with use of application118and a first number of users adopting application118after assistance is offered to the target group, while the untargeted profit may be based on a second number of users adopting application118without offering assistance to the target group.

The target group may then be targeted with assisted use of application118if the targeted profit is higher than the untargeted profit. In other words, the user may be targeted if the user is in a target group that responds positively to assisted use of application118(e.g., adopts application118because of the assisted use). On the other hand, the user may not be targeted if the user is in a target group that responds neutrally or negatively (e.g., discontinues use of application118because or in spite of the assisted use). Targeting of users based on analysis of monitored interactions is discussed in further detail in a co-pending non-provisional application by inventors Igor Podgorny, Fedor Dzegilenko, Floyd Morgan, Vineet Singh, Marc Attinasi and Troy Otillio and filed on the same day as the instant application entitled “Real-Time User Behavior Prediction,” having Ser. No. 12/841,831, and filing date Jul. 22, 2010, which is incorporated herein by reference.

If analysis apparatus112finds a target group that responds positively to assisted use of application118, management apparatus114may generate an intervention (e.g., intervention1134, intervention y136) for each user in the target group. The intervention may assist the user with use of application118by advising the user to use the Q&A system associated with application118. For example, the intervention may be provided and/or displayed through application118as an email and/or pop-up window and may include a link to the Q&A system, as well as a message suggesting that the user obtain assistance by submitting a question to the Q&A system.

The intervention may also prioritize questions submitted by the user to the Q&A system. Prioritization of questions in Q&A systems is discussed in a co-pending non-provisional application by inventors Igor Podgorny, Fedor Dzegilenko, Martha Fiske, Jason Greschler and Floyd Morgan and filed on the same day as the instant application entitled “Question Prioritization in Community-Driven Question-and-Answer Systems,” having Ser. No. 12/841,821, and filing date Jul. 22, 2010, which is incorporated herein by reference.

As discussed above, the system ofFIG. 1may be used to detect and mitigate the potential occurrence of user actions in application118. As a result, users may be tracked based on the occurrence and/or possibility of the user actions. For example, monitoring apparatus102may remove a user from tracking after the user adopts application118, discontinues use of application118, and/or uses technical support for application118. Similarly, users associated with very low and/or high probabilities of user actions may be removed from tracking because the probabilities are unlikely to change much after such users are targeted with assisted use of application118.

Consequently, the system ofFIG. 1may increase the usability and adoption of application118while reducing costs associated with the purchase and/or support of application118. In particular, monitoring the use of application118may facilitate the identification of users who have difficulties with using application118. At the same time, the monitoring may be performed in a way that both maintains performance in application118and allows for the tracking of a relatively large number of users in real-time. Finally, analysis of the monitored interactions may enable the users to be targeted before the users discontinue use of application118and/or use technical support for application118, thus increasing revenue associated with adoption of application118and decreasing user and support costs associated with use of technical support for application118.

FIG. 2shows a flowchart illustrating the process of monitoring use of an application in accordance with an embodiment. In one or more embodiments, one or more of the steps may be omitted, repeated, and/or performed in a different order. Accordingly, the specific arrangement of steps shown inFIG. 2should not be construed as limiting the scope of the embodiments.

Initially, a set of users is selected for tracking by the application based on the performance of the application (operation202). For example, the application may begin by tracking a small set of users. The application may then select an additional user for tracking if a performance requirement is met by the application, or the application may remove one of the users from tracking if the performance requirement is not met by the application. As a result, the application may be used to track a set of interactions between the users and the application without impacting the performance of the application (operation204). For example, the application may correspond to a web application that tracks the users' page clicks through webpages and/or text input from form submissions.

The interactions are stored as the interactions are detected by the application (operation206). For example, interactions between a user and the application may be stored in a queue corresponding to the user. In addition, the interactions may be stored in real-time by pushing data identifying the interactions and the user to a database providing the queue as the interactions are received by the application.

An activity history for the user may additionally be obtained (operation208) by periodically processing the subset of the stored interactions associated with the user. In particular, the subset of the stored interactions may be processed upon detecting a pre-specified number of interactions (e.g., 20, 40, 100, 200) between the user and the application. Processing of the subset of the stored interactions may also occur during a key stage of interaction between the user and the application (e.g., initial use of the application, purchase of the application, use of a complex feature in the application). If the activity history is not to be obtained, the subset of the stored interactions is not processed.

On the other hand, the activity history may be obtained by processing the subset of the stored interactions associated with the user (operation210). Moreover, the activity history may be used to facilitate subsequent real-time use of the application by the user. For example, the activity history may be used to predict a probability of a user action in the application by the user, such as discontinued use of the application and/or use of technical support for the application. The probability may then be modified by assisting the user with use of the application (e.g., encouraging or prioritizing use of a Q&A system associated with the application).

In addition, the users may continue to be tracked (operation212) independently of the processing and analysis of interactions associated with the users. For example, the tracking, storing, and processing of the interactions may be performed by separate apparatuses (e.g., servers, computer systems, etc.) to facilitate concurrent execution of operations202-204, operation206, and operations208-210and/or to decrease the load on the application. If tracking of the users is to continue, the users are selected (operation202) and tracked (operation204) without impacting the performance of the application. Interactions between the users and the application are additionally stored as the interactions are detected by the application (operation206). Finally, activity histories may periodically be obtained (operation208-210) for the users and used to facilitate subsequent real-time use of the application until the application is no longer used by the users and/or adopted by the users.

FIG. 3shows a computer system300in accordance with an embodiment. Computer system300may correspond to an apparatus that includes a processor302, memory304, storage306, and/or other components found in electronic computing devices. Processor302may support parallel processing and/or multi-threaded operation with other processors in computer system300. Computer system300may also include input/output (I/O) devices such as a keyboard308, a mouse310, and a display312.

Computer system300may include functionality to execute various components of the present embodiments. In particular, computer system300may include an operating system (not shown) that coordinates the use of hardware and software resources on computer system300, as well as one or more applications that perform specialized tasks for the user. To perform tasks for the user, applications may obtain the use of hardware resources on computer system300from the operating system, as well as interact with the user through a hardware and/or software framework provided by the operating system.

In one or more embodiments, computer system300provides a system for monitoring an application. The system may include a monitoring apparatus in the application that tracks a set of interactions between a set of users and the application without impacting the performance of the application. The monitoring apparatus may also store the interactions as the interactions are detected. The system may also include an interaction-processing apparatus that periodically processes, for each user from the set of users, a subset of the stored interactions associated with the user to obtain an activity history for the user. The activity history may then be used to facilitate subsequent real-time use of the application by the user.

In addition, one or more components of computer system300may be remotely located and connected to the other components over a network. Portions of the present embodiments (e.g., monitoring apparatus, interaction-processing apparatus, etc.) may also be located on different nodes of a distributed system that implements the embodiments. For example, the present embodiments may be implemented using a cloud computing system that facilitates use of an application by a set of users.