IP Library Granted Patent US 10,613,838
Granted Patent B2
US 10,613,838 · App. 15/794,934 · Granted Apr 7, 2020

Systems and methods for discovering automatable tasks

Inventors: Yoongu Kim (Cambridge, MA); Abdul Qadir (Bangalore, IN); Arjun Narayanaswamy (Bangalore, IN); Rohan Narayan Murty (Bangalore, IN); Shane Barratt (Portola Valley, CA); George Peter Nychis (Somerville, MA)
Assignee: Soroco Private Limited
G06F8/30G06F9/3857G06F9/451G06F9/542G06F11/3051G06F11/3414G06F11/3423G06F11/3438G06F11/3447G06F11/3476G06N3/02H04L67/22H04L67/36G06F2201/81
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,613,838
App. No.
15/794,934
Granted
Apr 7, 2020
Kind
B2
Abstract

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.

Claims (61)

1. A system, comprising:

a first computing device comprising at least one hardware processor and at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform:

receiving an indication of an action being performed by a user on the first computing device;

gathering contextual information associated with the action; and

transmitting information indicative of the action and the contextual information as an event in an event log including a plurality of events;

a second computing device in communication with the first computing device and comprising at least one hardware processor and at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform:

receiving the event log comprising the plurality of events;

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 one or more clustered events at least partially repeated in the plurality of clustered events;

identifying a task in the plurality of clustered events being performed by the user that comprises at least one sub-task from the plurality of sub-tasks; and

generating a score for the task indicative of a difficulty of automating the task, wherein the score is generated using at least one value selected from the group consisting of: information identifying applications used to perform the task, a number of applications used to perform the task, a number of user interface elements used in the task, an amount of natural language input provided to the applications during the task, a number of times the sequence of the one or more clustered events repeats in the at least one sub-task, a number of keystrokes performed in the task, a number of clicks performed in the task, a ratio between keystrokes and clicks performed in the task, a percentage of time spent performing typing actions in the task, a percentage of time spent performing clicking actions in the task, and a frequency of copy and paste actions performed in the task.

2. The system of claim 1 , wherein identifying the task comprises:

receiving an indication of a first sub-task and a second sub-task of the plurality of sub-tasks that is part of the task; and

providing the first sub-task, the second sub-task, and at least one clustered event from the plurality of clustered events that occurs between the first sub-task and the second sub-task in at least one instance in the plurality of clustered events as an input to a recurrent neural network.

3. The system of claim 2 , wherein identifying the task comprises:

using the recurrent neural network to obtain an output that is indicative of a sequence of two or more clustered events that define the task and comprises the first sub-task and the second sub-task.

4. The system of claim 1 , wherein the processor-executable instructions further cause the at least one hardware processor in the second computing device to perform:

determining whether the score exceeds a threshold;

generating a first computer program that is configured to perform the task responsive to the score exceeding the threshold; and

executing the first computer program configured to perform the task responsive to generating the first computer program.

5. The system of claim 4 , wherein the task comprises a first sub-task and a second sub-task of the plurality of sub-tasks and wherein the first computer program is configured to control a second computer program to perform the first sub-task and control a third computer program to perform the second sub-task.

6. A system, comprising:

at least one hardware processor; and

at least one non-transitory computer-readable storage medium storing processor-executable instructions that, when executed by the at least one hardware processor, cause the at least one hardware processor to perform:

receiving a plurality of events each indicative of an action performed by a user on a computing device 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 one or more clustered events at least partially repeated in the plurality of clustered events;

identifying a task in the plurality of clustered events being performed by the user that comprises at least one sub-task from the plurality of sub-tasks; and

generating a score for the task indicative of a difficulty of automating the task, wherein the score is generated using at least one value selected from the group consisting of: information identifying applications used to perform the task, a number of applications used to perform the task, a number of user interface elements used in the task, an amount of natural language input provided to the applications during the task, a number of times the sequence of the one or more clustered events repeats in the at least one sub-task, a number of keystrokes performed in the task, a number of clicks performed in the task, a ratio between keystrokes and clicks performed in the task, a percentage of time spent performing typing actions in the task, a percentage of time spent performing clicking actions in the task, and a frequency of copy and paste actions performed in the task.

7. The system of claim 6 , wherein identifying the plurality of sub-tasks comprises identifying a sequence of two or more clustered events that repeat at least a threshold number of times in the plurality of clustered events.

8. The system of claim 6 , wherein identifying the plurality of sub-tasks comprises identifying a sequence of two or more clustered events where a portion of the sequence of two or more clustered events repeats at least a threshold number of times.

9. The system of claim 6 , wherein identifying the task comprises receiving an indication of a first sub-task of the plurality of sub-tasks that is part of the task and providing the first sub-task and at least one clustered event from the plurality of clustered events temporally adjacent the first sub-task in at least one instance in the plurality of clustered events as an input to a statistical model.

10. The system of claim 9 , wherein identifying the task comprises using the statistical model to obtain an output that is indicative of a sequence of two or more clustered events that define the task and comprises the first sub-task.

11. The system of claim 10 , wherein the statistical model is a neural network.

12. The system of claim 6 , wherein the processor-executable instructions further cause the at least one hardware processor to perform:

determining whether the score exceeds a threshold;

generating a first computer program that is configured to perform the task responsive to the score exceeding the threshold; and

executing the first computer program configured to perform the task responsive to generating the first computer program.

13. The system of claim 12 , wherein the first computer program is configured to perform the task at least in part by controlling one or more other computer programs.

14. The system of claim 13 , wherein the first computer program is configured to control the one or more other computer programs through at least one graphical user interface (GUI) of the one or more other computer programs.

15. The system of claim 13 , wherein the task comprises a first sub-task and a second sub-task of the plurality of sub-tasks and wherein the first computer program is configured to control a second computer program to perform the first sub-task and control a third computer program to perform the second sub-task.

16. The system of claim 6 , wherein the score is generated using a linear combination of two or more of: the information identifying applications used to perform the task, the number of applications used to perform the task, the number of user interface elements used in the task, the amount of natural language input provided to the applications during the task, the number of times the sequence of the one or more clustered events repeats in the at least one sub-task, the number of keystrokes performed in the task, the number of clicks performed in the task, the ratio between keystrokes and clicks performed in the task, the percentage of time spent performing typing actions in the task, the percentage of time spent performing clicking actions in the task, and the frequency of copy and paste actions performed in the task.

17. The system of claim 6 , wherein the processor-executable instructions further cause the at least one hardware processor to perform:

removing at least one event from the plurality of events that is not associated with the task performed by the user.

18. The system of claim 17 , wherein removing the at least one event includes removing events from the plurality of events that are associated with a predetermined list of web domains.

19. The system of claim 6 , wherein the action includes a keystroke or a click.

20. The system of claim 6 , wherein the contextual information includes information regarding a state of the user interface when the user performed the action.

21. The system of claim 20 , wherein the information regarding the state of the user interface includes at least one 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.

22. The system of claim 6 , wherein receiving the plurality of events comprises detecting an event from the plurality of events at least in part by:

receiving an indication of the action being performed by the user on the computing device;

gathering contextual information associated with the action; and

storing information indicative of the action and the contextual information as the event.

23. A method, performed by a computing device, for discovering automatable tasks, the method comprising:

receiving a plurality of events each indicative of an action performed by a user on a computing device 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 one or more clustered events at least partially repeated in the plurality of clustered events;

identifying a task in the plurality of clustered events being performed by the user that comprises at least one sub-task from the plurality of sub-tasks; and

generating a score associated with the task indicative of a difficulty of automating the task wherein the score is generated using at least one value selected from the group consisting of: information identifying applications used to perform the task, a number of applications used to perform the task, a number of user interface elements used in the task, an amount of natural language input provided to the applications during the task, a number of times the sequence of the one or more clustered events repeats in the at least one sub-task, a number of keystrokes performed in the task, a number of clicks performed in the task, a ratio between keystrokes and clicks performed in the task, a percentage of time spent performing typing actions in the task, a percentage of time spent performing clicking actions in the task, and a frequency of copy and paste actions performed in the task.

24. The method of claim 23 , wherein identifying the plurality of sub-tasks comprises identifying a sequence of two or more clustered events that repeat at least a threshold number of times in the plurality of clustered events.

25. The method of claim 23 , wherein identifying the task comprises receiving an indication of a first sub-task of the plurality of sub-tasks that is part of the task and providing the first sub-task and at least one clustered event from the plurality of clustered events temporally adjacent the first sub-task in at least one instance in the plurality of clustered events as an input to a statistical model.

26. The method of claim 23 , wherein the generating of the score is further based on using information identifying the user interface elements used to perform the task, an amount of text extractable documents employed in the task, a length of the sequence of the one or more clustered events in the at least one sub-task, and/or time between actions performed in the task.

Assignments (5)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: KIM, YOONGU; NARAYANASWAMY, ARJUN; BARRATT, SHANE; NYCHIS, GEORGE PETER
To: SOROCO AMERICAS PRIVATE LIMITED
Reel/Frame 046934/0415 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: SOROCO AMERICAS PRIVATE LIMITED
To: SOROCO PRIVATE LIMITED
Reel/Frame 046934/0658 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: QADIR, ABDUL
To: SOROCO INDIA PRIVATE LIMITED
Reel/Frame 046934/0768 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: SOROCO INDIA PRIVATE LIMITED
To: SOROCO PRIVATE LIMITED
Reel/Frame 046935/0098 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 21, 2018
From: MURTY, ROHAN NARAYAN
To: SOROCO PRIVATE LIMITED
Reel/Frame 046935/0373 →
Continuity (2)
Provisional Application 62413277 · Oct 26, 2016
Related Publication 20180113781A1 · Apr 26, 2018
Cited By (8)
US 12,277,127 US 12,288,088 US 12,321,764 US 12,455,888 US 12,468,562 US 12,530,620 US 12,591,441 US 12,591,442