Systems and methods for discovering automatable tasks
According to at least one aspect, a system for analyzing computer usage data of a user to identify an underlying task being performed by the user is provided. The system includes a hardware processor and a non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the hardware processor, cause the hardware processor to perform: receiving a plurality of events each indicative of an action performed by a user and contextual information associated with the action performed by the user, clustering the plurality of events to generate a plurality of clustered events, identifying a plurality of sub-tasks in the plurality of clustered events that each comprise a sequence of clustered events, identifying a task in the plurality of clustered events being performed by the user that comprises at least one sub-task, and generating a score for the task indicative of a difficulty of automating the task.
1 . A method, comprising:
using at least one computer hardware processor to perform:
monitoring, with a software application executing on a computing device, a user's interaction with the computing device, the monitoring comprising:
collecting usage data indicating the user's keystrokes and clicks during the user's interaction with one or more application programs executing on the computing device,
collecting contextual information for the user's keystrokes and clicks, the contextual information for a particular keystroke or click indicating: (1) a particular application that the user interacted with when providing the particular keystroke or click; and (2) a particular button or field that the user interacted with when providing the particular keystroke or click;
organizing the collected usage data and contextual information for the user's keystrokes and clicks into a plurality of events, data for events in the plurality of events being stored in respective event data structures;
identifying a task being performed by the user at least in part by clustering events in the plurality of events; and
generating a score for the task indicative of a difficulty of automating the task using a number of applications used to perform the task, a number of keystrokes performed in the task and a number of clicks performed in the task.
2 . The method of claim 1 , further comprising: removing personal information of the user from the collected usage data and contextual information.
3 . The method of claim 1 , further comprising: obscuring personal information of the user from the collected usage data and contextual information.
4 . The method of claim 1 , wherein organizing the collected usage data and contextual information into the plurality of events comprises generating multiple data structures to store the usage data and the contextual information.
5 . The method of claim 1 , wherein collecting the contextual information for the particular keystroke or click includes gathering information regarding a state of a user interface when the user performed the particular keystroke or click.
6 . The method of claim 1 ,
wherein the at least one computer hardware processor includes a first computer hardware processor part of the computing device and a second computer hardware processor part of an external system to the computing device, and
wherein acts of monitoring and organizing, are performed by the first computer hardware processor; and
acts of identifying the task and generating the score are performed by the second computer hardware processor.
7 . The method of claim 5 , wherein gathering information regarding the state of the user interface includes gathering information selected from the group consisting of: a name of an active application, a title in a title bar of the active application, a value in at least one field of the active application, a size of a window of the active application, and a location of the window of the active application within the user interface.
8 . A system, comprising:
at least one computer hardware processor; and
at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one computer hardware processor, cause the at least one computer hardware processor to perform a method comprising:
monitoring, with a software application executing on a computing device, a user's interaction with the computing device, the monitoring comprising:
collecting usage data indicating the user's keystrokes and clicks during the user's interaction with one or more application programs executing on the computing device,
collecting contextual information for the user's keystrokes and clicks, the contextual information for a particular keystroke or click indicating: (1) a particular application that the user interacted with when providing the particular keystroke or click; and (2) a particular button or field that the user interacted with when providing the particular keystroke or click;
organizing the collected usage data and contextual information for the user's keystrokes and clicks into a plurality of events, data for events in the plurality of events being stored in respective event data structures;
identifying a task being performed by the user at least in part by clustering events in the plurality of events; and
generating a score for the task indicative of a difficulty of automating the task using a number of applications used to perform the task, a number of keystrokes performed in the task and a number of clicks performed in the task.
9 . The system of claim 8 , wherein the method further comprises: removing personal information of the user from the collected usage data and contextual information.
10 . The system of claim 8 , wherein the method further comprises: obscuring personal information of the user from the collected usage data and contextual information.
11 . The system of claim 8 , wherein organizing the collected usage data and contextual information into the plurality of events comprises generating multiple data structures to store the usage data and the contextual information.
12 . The system of claim 8 , wherein collecting the contextual information for the particular keystroke or click includes gathering information regarding a state of a user interface when the user performed the particular keystroke or click.
13 . The system of claim 12 , wherein gathering information regarding the state of the user interface includes gathering information selected from the group consisting of: a name of an active application, a title in a title bar of the active application, a value in at least one field of the active application, a size of a window of the active application, and a location of the window of the active application within the user interface.
14 . The system of claim 8 ,
wherein the at least one computer hardware processor includes a first computer hardware processor part of the computing device and a second computer hardware processor part of an external system to the computing device, and
wherein acts of monitoring and organizing, are performed by the first computer hardware processor; and
acts of identifying the task and generating the score are performed by the second computer hardware processor.
15 . At least one non-transitory computer-readable storage medium storing processor executable instructions that, when executed by at least one computer hardware processor, cause the at least one computer hardware processor to perform a method comprising:
monitoring, with a software application executing on a computing device, a user's interaction with the computing device, the monitoring comprising:
collecting usage data indicating the user's keystrokes and clicks during the user's interaction with one or more application programs executing on the computing device,
collecting contextual information for the user's keystrokes and clicks, the contextual information for a particular keystroke or click indicating: (1) a particular application that the user interacted with when providing the particular keystroke or click; and (2) a particular button or field that the user interacted with when providing the particular keystroke or click;
organizing the collected usage data and contextual information for the user's keystrokes and clicks into a plurality of events, data for events in the plurality of events being stored in respective event data structures;
identifying a task being performed by the user at least in part by clustering events in the plurality of events; and
generating a score for the task indicative of a difficulty of automating the task using a number of applications used to perform the task, a number of keystrokes performed in the task and a number of clicks performed in the task.
16 . The at least one non-transitory computer-readable storage medium of claim 15 , wherein the method further comprises: removing personal information of the user from the collected usage data and contextual information.
17 . The at least one non-transitory computer-readable storage medium of claim 15 , wherein the method further comprises: obscuring personal information of the user from the collected usage data and contextual information.
18 . The at least one non-transitory computer-readable storage medium of claim 15 , wherein organizing the collected usage data and contextual information into the plurality of events comprises generating multiple data structures to store the usage data and the contextual information.
19 . The at least one non-transitory computer-readable storage medium of claim 15 , wherein collecting the contextual information for the particular keystroke or click includes gathering information regarding a state of a user interface when the user performed the particular keystroke or click.
20 . The at least one non-transitory computer-readable storage medium of claim 19 , wherein gathering information regarding the state of the user interface includes gathering information selected from the group consisting of: a name of an active application, a title in a title bar of the active application, a value in at least one field of the active application, a size of a window of the active application, and a location of the window of the active application within the user interface.