IP Library Granted Patent US 10,120,653
Granted Patent B2
US 10,120,653 · App. 15/904,138 · Granted Nov 6, 2018

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/451G06F9/542G06F11/3051G06F11/3414G06F11/3438G06N3/02
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,120,653
App. No.
15/904,138
Granted
Nov 6, 2018
Kind
B2
Abstract

According to at least one aspect, a system for collecting computer usage information is provided. The system includes a hardware processor, a display coupled to the hardware processor to display a user interface, and a computer-readable storage medium storing processor-executable instructions that cause the hardware processor to receive an indication of an action being performed by a user on the system, cause the system to wait before updating the user interface in response to the action performed by the user, gather contextual information associated with the action while the system is waiting to process the action performed by the user to update the user interface, cause the system to update the user interface in response to the action performed by the user after gathering the contextual information, and store information indicative of the action and the contextual information.

Claims (52)

1. A method, performed by a computing device, for tracking tasks performed by a user of the computing device, the method comprising:

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

causing the computing device to wait before updating a user interface of the computing device responsive to the action performed by the user;

gathering contextual information associated with the action while the computing device is waiting to update the user interface responsive to the action performed by the user;

causing the computing device to update the user interface responsive to the action performed by the user;

storing information indicative of the action and the contextual information in a volatile memory of the computing device as an event;

determining whether at least one event stored in the volatile memory includes personal information of the user; and

writing the at least one event stored in the volatile memory to an event log in a non-volatile memory of the computing device responsive to a determination that the at least one event does not include personal information of the user.

2. The method of claim 1 , wherein determining whether the at least one event stored in the volatile memory includes personal information of the user includes determining whether the at least one event stored in the volatile memory comprises information indicative of at least one member selected from the group consisting of: a bank account of the user, a personal email account of the user, and a social media account of the user.

3. The method of claim 1 , further comprising:

transmitting the event log to an external system.

4. The method of claim 1 , wherein the event is part of a plurality of events and wherein the method further comprises:

clustering the plurality of events to generate a plurality of clustered events;

identifying a plurality of sub-tasks in the plurality of clustered events, each of the plurality of sub-tasks comprising 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 of the plurality of sub-tasks; and

generating a score for the task indicative of a difficulty of automating the task.

5. The method of claim 4 , further comprising:

determining whether the score exceeds a threshold;

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

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

6. The method of claim 5 , wherein generating the computer program comprises generating a computer program that is configured to perform the task at least in part by controlling one or more other computer programs.

7. 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;

causing the first computing device to wait before updating a user interface of the first computing device responsive to the action performed by the user;

gathering contextual information associated with the action while the first computing device is waiting to update the user interface responsive to the action performed by the user;

causing the first computing device to update the user interface responsive to the action performed by the user after gathering the contextual information; 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.

8. The system of claim 7 , wherein the action includes at least one of a keystroke and a click.

9. The system of claim 7 , wherein gathering the contextual information includes gathering information regarding a state of the user interface when the user performed the action.

10. The system of claim 9 , wherein gathering the 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.

11. The system of claim 7 , 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.

12. The system of claim 11 , 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.

13. The system of claim 7 , 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.

14. 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.

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

16. The system of claim 15 , 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.

17. The system of claim 7 , 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.

18. The system of claim 7 , 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.

19. The system of claim 7 , wherein the score is generated using at least one value selected from the group consisting of: a number of applications that are employed to perform the task, a number of keystrokes performed in the task, a number of clicks performed in the task, and a ratio between keystrokes and clicks 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 (3)
Continuation PCTUS2017058603 · Oct 26, 2017
Provisional Application 62413277 · Oct 26, 2016
Related Publication 20180181377A1 · Jun 28, 2018
Cited By (4)
US 12,288,088 US 12,321,764 US 12,455,888 US 12,468,562