U.S. patent application number 16/371897 was filed with the patent office on 2020-06-25 for systems and methods for maintaining contract adherence.
The applicant listed for this patent is Capital One Services, LLC. Invention is credited to Fardin Abdi Taghi ABAD, Reza FARIVAR, Jeremy Edward GOODSITT, Vincent PHAM, Kenneth TAYLOR, Anh TRUONG, Austin WALTERS, Mark WATSON.
Application Number | 20200202274 16/371897 |
Document ID | / |
Family ID | 68392132 |
Filed Date | 2020-06-25 |
![](/patent/app/20200202274/US20200202274A1-20200625-D00000.png)
![](/patent/app/20200202274/US20200202274A1-20200625-D00001.png)
![](/patent/app/20200202274/US20200202274A1-20200625-D00002.png)
![](/patent/app/20200202274/US20200202274A1-20200625-D00003.png)
![](/patent/app/20200202274/US20200202274A1-20200625-D00004.png)
![](/patent/app/20200202274/US20200202274A1-20200625-D00005.png)
![](/patent/app/20200202274/US20200202274A1-20200625-D00006.png)
United States Patent
Application |
20200202274 |
Kind Code |
A1 |
GOODSITT; Jeremy Edward ; et
al. |
June 25, 2020 |
SYSTEMS AND METHODS FOR MAINTAINING CONTRACT ADHERENCE
Abstract
Systems and methods for identifying tasks and other obligations
in a contract and ensuring contract adherence are disclosed. The
system provides the contract to a recurrent neural network (RNN)
for identification of tasks, dates, parties, and other information
contained in the contract. The system then receives a plurality of
logical rules from the RNN based on the information extracted by
the RNN. The system can also generate a plurality of tasks based on
the plurality of logical rules. The system can then generate an
acyclic graph where each of the plurality of tasks are assigned to
a respective node of the acyclic graph. The method also organizes
the plurality of tasks in chronological order based on the acyclic
graph. The system can be used to ensure tasks are completed on
time, to send reminders when necessary, and to accept modifications
and exceptions to the contract, subject to user approval.
Inventors: |
GOODSITT; Jeremy Edward;
(McLean, VA) ; WALTERS; Austin; (McLean, VA)
; FARIVAR; Reza; (McLean, VA) ; ABAD; Fardin Abdi
Taghi; (Seattle, WA) ; TAYLOR; Kenneth;
(Champaign, IL) ; WATSON; Mark; (McLean, VA)
; PHAM; Vincent; (McLean, VA) ; TRUONG; Anh;
(McLean, VA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Capital One Services, LLC |
McLean |
VA |
US |
|
|
Family ID: |
68392132 |
Appl. No.: |
16/371897 |
Filed: |
April 1, 2019 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
62783612 |
Dec 21, 2018 |
|
|
|
62783731 |
Dec 21, 2018 |
|
|
|
Current U.S.
Class: |
1/1 |
Current CPC
Class: |
G06F 40/289 20200101;
G06Q 30/018 20130101; G06N 3/08 20130101; G06Q 10/06316 20130101;
G06F 40/284 20200101; G06F 40/123 20200101; H04L 67/42
20130101 |
International
Class: |
G06Q 10/06 20060101
G06Q010/06; G06Q 30/00 20060101 G06Q030/00; G06N 3/08 20060101
G06N003/08 |
Claims
1. A method for maintaining contract adherence, the method
comprising: receiving, by a processor of a computing device, an
existing contract from a remote device; parsing, with a recurrent
neural network (RNN) associated with the computing device, text
from the existing contract; generating, by the RNN, a plurality of
logical rules based on the parsed text; generating, by the
processor, a plurality of tasks based on the plurality of logical
rules; determining, by the processor, for each of the plurality of
tasks a type of breach resulting from a failure to perform a task,
the type of breach being a minor breach or a major breach;
generating, with the processor, an acyclic graph based on the
plurality of logical rules; assigning, with the processor, each of
the plurality of tasks to a respective node of the acyclic graph;
and ordering, by the processor, each of the plurality of tasks
based on at least one of: the acyclic graph or the type of
breach.
2. (canceled).
3. The method of claim 1, further comprising: determining, by the
processor using the acyclic graph, that a first task of the
plurality of tasks has not been performed.
4. The method of claim 3, further comprising: identifying, with the
processor, a plurality of parties to the existing contract; and
determining, by the processor using the acyclic graph, a
responsible party from the plurality of parties for the first
task.
5. The method of claim 4, further comprising determining, by the
processor using the acyclic graph, a date when the first task must
be performed.
6. (canceled).
7. The method of claim 1, further comprising: identifying, with the
processor, a plurality of parties to the existing contract; and
receiving, by the processor, a request for modification or a waiver
from a user device associated with one of the plurality of
parties.
8. The method of claim 7, further comprising: sending, by the
processor, the request to the RNN; generating, by the RNN, a second
plurality of logical rules; updating, by the processor, the
plurality of tasks based on the second plurality of logical rules;
updating, by the processor, at least one node of the acyclic graph
based on the second plurality of logical rules; and ordering, by
the processor, the plurality of tasks based on at least one of: the
acyclic graph or the type of breach.
9. The method of claim 5, further comprising: determining, based on
a difference between a current date and the date when the first
task must be performed, that an amount of time remaining before the
first task must be performed is less than or equal to a predefined
amount of time; and performing, by the processor, the first
task.
10. The method of claim 5, further comprising: determining, based
on a difference between a current date and the date, that an amount
of time remaining before the first task must be performed; is less
than or equal to a predefined amount of time; generating, by the
processor, a message indicating the first task must be performed
within the predefined amount of time; and transmitting, by a
transceiver of the computing device, the message to the responsible
party.
11. A method for maintaining contract adherence, the method
comprising: receiving, by a processor of a computing device, an
existing contract from a remote device; identifying, by the
processor, a plurality of parties to the existing contract;
sending, with a transceiver of the computing device, the existing
contract to a recurrent neural network (RNN); receiving, at the
processor, a plurality of logical rules from the RNN; generating,
by the processor, a plurality of tasks based on the plurality of
logical rules; determining, by the processor, for each of the
plurality of tasks a type of breach resulting from a failure to
perform the task, the type of breach being a minor breach or a
major breach; generating, with the processor, an acyclic graph
based on the plurality of logical rules; assigning, with the
processor, each of the plurality of tasks to a respective node of
the acyclic graph; determining, by the processor using the acyclic
graph, that a first task of the plurality of tasks has not been
performed; determining, by the processor using the acyclic graph, a
date when the first task must be performed; determining, based on a
difference of a current date and the date when the first task must
be performed, that an amount of time left before the first task
must be performed is less than a predefined amount of time; and
performing, by the processor, the first task.
12-13. (canceled)
14. The method of claim 11, further comprising receiving, by the
processor, a request for a modification or a waiver from a user
device associated with one of the plurality of parties.
15. The method of claim 14, further comprising: sending, by the
processor, the request to the RNN; receiving, by the processor, a
second plurality of logical rules from the RNN; updating, by the
processor, the plurality of tasks based on the second plurality of
logical rules; updating, by the processor, at least one node of the
acyclic graph based on the second plurality of logical rules; and
ordering, by the processor, the plurality of tasks based on at
least one of: the acyclic graph or the type of breach.
16. A system for maintaining contract adherence comprising: a
processor; a transceiver; and at least one memory in communication
with the processor and the transceiver and storing computer program
code that, when executed by the processor, is configured to cause
the system to: receive, from a remote device, an existing contract;
identify a plurality of parties to the existing contract; send,
with the transceiver, the existing contract from the processor to a
recurrent neural network (RNN); receive a plurality of logical
rules from the RNN; determine whether an acyclic graph can be
generated from the logical rules; and either: (i) when the acyclic
graph cannot be generated: determine a breach of contract is
unavoidable; and transmit a first message indicating the breach of
contract is unavoidable to one or more user devices associated with
the plurality of parties; or (ii) when the acyclic graph can be
generated: generate a plurality of tasks based on the plurality of
logical rules; generate the acyclic graph based on the plurality of
logical rules; assign each of the plurality of tasks to a
respective node of the acyclic graph; organize the plurality of
tasks in chronological order based on the acyclic graph; determine
that a first task of the plurality of tasks has not been performed;
determine a date when the first task must be performed; determine,
based on a difference of a current date and the date when the first
task must be performed, that an amount of time left before the
first task must be performed is less than a predefined amount of
time; and perform the first task.
17-18. (canceled)
19. The system of claim 16, wherein the computer program code is
further configured to cause the system to: receive, from one of the
one or more user devices associated with the plurality of parties,
a request for a modification or a waiver.
20. The system of claim 19, wherein receiving the request further
comprises: sending the request to the RNN; receiving a second
plurality of logical rules from the RNN; updating the plurality of
tasks based on the second plurality of logical rules; updating at
least one node of the acyclic graph based on the second plurality
of logical rules; and organizing the updated plurality of tasks in
chronological order based on the acyclic graph.
21. The method of claim 9, wherein performing the first task
further comprises: receiving, by the processor, payment permission
from a user device associated with the responsible party for the
first task; retrieving, by the processor, payment information for
the responsible party; and rendering, by the processor, payment
based on the payment information and the first task.
22. The method of claim 11, wherein performing the first task
further comprises: receiving, by the processor, payment permission
from a user device associated with a responsible party of the
plurality of parties for the first task; retrieving, by the
processor, payment information for the responsible party; and
rendering, by the processor, payment based on the payment
information and first task.
23. The system of claim 16, wherein performing the first task
further comprises: receiving payment permission from a first user
device associated with a responsible party of the plurality of
parties for the first task, wherein the first user device is one of
the one or more user devices; retrieving payment information for
the responsible party; and rendering payment based on the payment
information and the first task.
Description
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This Application claims the benefit of, and priority under
35 U.S.C. .sctn. 119(e) to, U.S. Provisional Patent Application
Nos. 62/783,612 and 62/783,731, entitled "Methods and Systems for
Determining Document Compatibility" and "Systems and Methods for
Maintaining Contract Adherence," respectively, both filed Dec. 21,
2018, the contents of which are hereby incorporated by reference
herein in their entirety as if fully set forth below.
FIELD OF INVENTION
[0002] The present disclosure relates to systems and methods for
maintaining contract adherence, and more particularly to systems
and methods for identifying a plurality of tasks within a contract
to avoid a breach of contract.
BACKGROUND
[0003] Legal documents often include numerous clauses and
conditions that require various actions to be performed by the
parties to the contract. Frequently, the parties' obligations and
duties are difficult to understand because events such as a
condition precedent or a condition subsequent may alter what is
required of a party. As a result, a breach of contract could easily
occur.
[0004] Accordingly, there is a need for systems and methods for
ensuring contract adherence. Embodiments of the present disclosure
are directed to this and other considerations.
SUMMARY
[0005] Disclosed embodiments provide systems and methods for
maintaining contract adherence. In one embodiment, a method for
maintaining contract adherence is disclosed. The method may be
implemented with a computing device. The method may include
receiving, by a processor associated with the computing device, a
contract. The method may include providing the contract to a
recurrent neural network (RNN). In response, the processor can
receive a plurality of logical rules from the RNN. The processor
may use the plurality of logical rules to generate an acyclic
graph. The processor may also generate a plurality of tasks based
on the plurality of logical rules. Further, the method may assign
each of the plurality of tasks to a respective node on the acyclic
graph and organize the plurality of tasks in chronological order
based on the acyclic graph.
[0006] Further features of the disclosed design, and the advantages
offered thereby, are explained in greater detail hereinafter with
reference to specific embodiments illustrated in the accompanying
drawings, wherein like elements are indicated be like reference
designators.
BRIEF DESCRIPTION OF THE DRAWINGS
[0007] Reference will now be made to the accompanying drawings,
which are not necessarily drawn to scale, are incorporated into,
and constitute a portion of, this disclosure, illustrate various
implementations and aspects of the disclosed technology and,
together with the description, serve to explain the principles of
the disclosed technology. In the drawings:
[0008] FIG. 1 is a diagram of an example system environment that
may be used to implement one or more embodiments of the present
disclosure;
[0009] FIG. 2 is a component diagram of a user device, in
accordance with some examples of the present disclosure;
[0010] FIG. 3 is a component diagram of a computing device, in
accordance with some examples of the present disclosure;
[0011] FIG. 4 is a flowchart of a method for maintaining contract
adherence, in accordance with some examples of the present
disclosure;
[0012] FIG. 5 is a timing diagram of a method for maintaining
contract adherence, in accordance with some examples of the present
disclosure; and
[0013] FIG. 6 is a directed acyclic graph, in accordance with some
examples of the present disclosure.
DETAILED DESCRIPTION
[0014] Examples of the present disclosure relate to systems and
methods for analyzing legal contracts; and specifically, to systems
and methods for identifying legal obligations in contracts to
ensure compliance. The system can automatically review legal
contracts, extract legal obligations for one or more parties to the
contract, and populate a plurality of tasks with respective
deadlines for each. The system can also account for changing legal
obligations based on changing conditions--e.g. conditions precedent
or conditions subsequent--to ensure the compliance of the one or
more parties to the contract.
[0015] Some implementations of the disclosed technology will be
described more fully with reference to the accompanying drawings.
This disclosed technology may, however, be embodied in many
different forms and should not be construed as limited to the
implementations set forth herein. The components described
hereinafter as making up various elements of the disclosed
technology are intended to be illustrative and not restrictive.
Many suitable components that could perform the same or similar
functions as components described herein are intended to be
embraced within the scope of the disclosed systems and methods.
Such other components not described herein may include, but are not
limited to, for example, components developed after development of
the disclosed technology.
[0016] It is also to be understood that the mention of one or more
method steps does not imply a particular order of operation or
preclude the presence of additional method steps or intervening
method steps between those steps expressly identified. Similarly,
it is also to be understood that the mention of one or more
components in a device or system does not preclude the presence of
additional components or intervening components between those
components expressly identified.
[0017] Although this disclosure discusses a recurrent neural
network (RNN) to identify logical rules within a contract, for
example, it is envisioned that a convolutional neural network
(CNN), other types of neural networks, or other types of machine
learning could replace the RNN. Thus, the use of RNN, acyclic
graphs, and other specific examples below is provided merely to
facilitate and simplify explanation and not to limit the disclosure
to a particular algorithm, type of algorithm, or other tool.
[0018] Reference will now be made in detail to example embodiments
of the disclosed technology, examples of which are illustrated in
the accompanying drawings and disclosed herein. Wherever
convenient, the same references numbers will be used throughout the
drawings to refer to the same or like parts.
[0019] FIG. 1 shows an example system 100 that may implement
certain aspects of the present disclosure. The components and
arrangements shown in FIG. 1 are not intended to limit the
disclosed embodiments as the components used to implement the
disclosed processes and features may vary. As shown in FIG. 1, in
some implementations the system 100 includes a first user device
110, a second user device 120, a recurrent neural network (RNN)
130, a network 150, one or more computing devices 140, which may
include a processor 142, and an application 144. The first user
device 110 and the second user device 120 may include respective
processors 112 and 122, and respective applications 114 and
124.
[0020] As non-limiting examples, the first user device 110 and the
second user device 120 may be a personal computer, a smartphone, a
laptop computer, a tablet, or other personal computing device. The
RNN 130 include instructions and or/ memory used to perform certain
features disclosed herein. The network 150 may include a network of
interconnected computing devices such as a local area network
(LAN), Wi-Fi, Bluetooth, or other type of network and may be
connected to an intranet or the Internet, among other things. The
computing device 140 may include one or more physical or logical
devices (e.g., servers) or drives and may be implemented as a
single server or a bank of servers (e.g., in a "cloud"). An example
computer architecture that may be used to implement the first user
device 110 and the second user device 120 is described below with
reference to FIG. 2. An example computer architecture with
reference to FIG. 3 is described below. The example computer
architecture may be used to implement the computing device 140.
[0021] In certain implementations according to the present
disclosure, the first user device 110 may include one or more
applications 114 and/or one or more processors 112. The second user
device 120 may also perform functions similar to the first user
device 110 as described herein. The processor 112 may transmit a
contract to the computing device 140. In some examples, the
application 114 may provide a graphical display indicating an
option to select the contract. Accordingly, the user may select the
contract via the application 114. The processor 112 may access the
contract via the application 114.
[0022] The contract may contain a plurality of tasks to be
performed (e.g., rendering payment, transferring goods, performing
a service). The processor 112 may also transmit a request for a
modification and/or a waiver, an indication of whether one of the
tasks has been performed, and/or the like. Examples of the
modification may include a request to extend the date when one of
the plurality of tasks must be performed, and/or a request to
adjust details associated with the at least one of the plurality of
tasks. A waiver may include a request to excuse performance of one
of the plurality of tasks. The contract may also contain two or
more parties to the contract and when at least one of the tasks
must be performed.
[0023] The first user device 110 may also transmit, via the
processor 112, an indication of whether the task has been
performed. The indication of task performance may be transmitted in
response to a request for the task status from the computing device
140. A user may provide an indication of the task performance to
the first user device 110. In some embodiments, the first user
device 110 may include an algorithm capable of determining whether
the task has been performed. Further, based on the determination,
the first user device 110 may transmit a second message indicating
the status of the task's performance to the computing device
140.
[0024] The first user device 110 may also perform certain tasks.
The first user device 110 may store, or have access to, the user
information necessary to render a payment, for example, and may
have user permission to render the payment. Further, the first user
device 110 may be connected to a payment server. The first user
device 110 may perform the task in response to a request for task
performance from the computing device 140, the date, or other
factor. The first user device 110 may also perform other tasks
associated with the contract including, for example, sending an
email, providing access to a system, and/or sharing file(s) and/or
data.
[0025] Turning to the computing device 140, in some embodiments,
the computing device 140 may include the application 144 and the
processor 142. According to some embodiments, the computing device
140 may receive the contract, which may be provided by the user,
for example, via the application 144. The application 144 may
include a graphical user interface (GUI), for example, to enable
the user to view documents and select the contract to be provided
to the application 144. The computing device 140 may also receive
the contract from the first user device 110 and/or the second user
device 120 from one of the applications (e.g., applications 114,
124, respectively).
[0026] The computing device 140 may provide the contract to the RNN
130. In response, the computing device 140 may receive a plurality
of logical rules from the RNN 130. The plurality of logical rules
may include terms of the contract deconstructed from text of the
contract. The computing device 140 may identify the parties to the
contract. According to some embodiments, identifying the parties to
the contract may be based on the plurality of logical rules. One of
the logical rules may seek a string of characters, for example,
associated with the "parties" section of a contract. When the
computing device 140 identifies the string, the parties to the
contract can be determined based on the identified string.
[0027] The computing device 140 may also generate an acyclic graph
based on the plurality of logical rules. The acyclic graph may be a
finite directed graph with no directed cycles, i.e., it may consist
of a finite number of vertices and edges (arcs), with each edge
directed from one vertex to another. In other words, starting at
any vertex "v" and following a consistently-directed sequence of
edges does not eventually loop back to "v" again. Additionally, the
acyclic graph may have a topological ordering, or a sequence of the
vertices such that every edge is directed from an earlier point to
a later point in the sequence.
[0028] In terms of contracts, the acyclic graph may include
vertices (nodes) representing various task(s) within the contract.
The acyclic graph may be used to order the tasks of a contract and
to represent collections of tasks (along with each task's influence
on other tasks). The acyclic graph can comprise a probabilistic
structure, such as a Bayesian network, for example, or a record of
historical data, such as family trees or the version histories of
distributed revision control systems. The acyclic graph may also be
used as a compact representation of sequence data, such as the
acyclic word graph representation of a collection of strings, or
the binary decision diagram representation of sequences of binary
choices. More abstractly, the reachability relation in the acyclic
graph may form a partial order, and any finite partial order may be
represented by the acyclic graph using reachability.
[0029] In some embodiments, the computing device 140 may not be
able to generate the acyclic graph. This may occur, for example,
when there is a loop, i.e., two nodes are dependent on each other
occurring. When both nodes are dependent on one another, it may be
impossible to perform either action associated with the respective
node (e.g., send money to Jane only if Jane sends money to John,
and send money to John only if John sends money to Jane). Further,
the inability to generate the acyclic graph may indicate, for
example, that the contract contains an unavoidable breach. When the
computing device 140 determines a breach of contract is
unavoidable, the computing device 140 may transmit a first message
to the parties of the contract indicating the breach is
unavoidable.
[0030] The computing device 140 may generate a plurality of tasks
based on the plurality of logical rules. Generating the plurality
of tasks may include identifying, by the computing device 140,
terms of the contract requiring action. Further, the computing
device 140 may assign each of the plurality of tasks to a
respective node of the acyclic graph. In some examples, the
computing device 140 may also organize the plurality of tasks in
chronological order based on the acyclic graph. In other examples,
the computing device 140 may also determine the importance of each
task and organize them accordingly. Some breaches may be considered
a "minor breach," for example, and others a "major breach." Minor
breaches may include the failure to perform a required task, but
the failure does not prevent the remainder of the contract from
being performed. In contrast, the failure to perform a required
task resulting in a major breach could prevent further performance
of the contract. Accordingly, unperformed tasks resulting in a
minor breach may be associated with a lower importance than
unperformed tasks resulting in a major breach. So, failure to
deliver materials on time in a building contract, for example,
could be considered a minor breach because, provided the materials
are eventually delivered, the building can continue. Failure to
obtain a building permit, on the other hand, could be considered a
major failure, because unless there is some alternate way to get a
permit, building cannot continue.
[0031] In some embodiments, the computing device 140 may receive,
from the first user device 110 and/or the second user device 120, a
request for a modification and/or a waiver, an indication of
whether one of the tasks has been performed, etc. The computing
device 140 may provide the request for the modification and/or the
request for the waiver to the RNN 130. In response, the computing
device 140 may receive a second plurality of logical rules. Based
on the second plurality of logical rules, the computing device 140
may update the acyclic graph including, for example, deleting one
or more existing nodes, generating one or more nodes, replacing an
existing node with a newly generated node, and/or adding a newly
generated node to the acyclic graph. The computing device 140 may
perform a systematic check through each node in the acyclic graph,
for example, looking for differences between the existing nodes and
the newly generated nodes. Then, based on the second plurality of
logical rules, the computing device 140 may update the acyclic
graph, such that the new nodes are added to the acyclic graph and
existing nodes are modified or deleted. Indeed, the computing
device 140 may further organize the plurality of tasks in
chronological order based on the acyclic graph.
[0032] According to some embodiments, the computing device 140 may
determine at least one of the plurality of tasks has not been
performed. The computing device 140 may also determine a next
action to be performed from amongst the plurality of tasks such as,
for example, a payment by a borrower to a lender. According to some
embodiments, the computing device 140 may determine a date when the
at least one of the plurality of tasks must be performed, for
example, or a user responsible for the at least one of the
plurality of tasks that has not been performed.
[0033] In some embodiments, the computing device 140 may calculate
an amount of time left before a task must be performed. According
to some embodiments, when the amount of time is less than a
predefined amount of time, the computer device 140 may trigger an
action associated with the task that must be performed within the
predefined amount of time. In some examples, triggering the action
may include the computing device 140 performing the action. Similar
to the previous example involving the first user device 110, when
rendering payment is the next action, the computing device 140 may
have sufficient information and permission to render payment on
behalf of a party to the contract. In other embodiments, when the
amount of time is less than the predefined amount of time, the
computing device 140 may transmit the second message to the user
responsible for the task that has not yet been performed.
[0034] The RNN 130 may reside on various computing devices
including a laptop, a mainframe computer, or a server. The RNN 130
may reside on the computing device 140, for example, or on a device
distinct from the computing device 140 that receives the contract
from the computing device 140. The RNN 130 may deconstruct/parse
the text of the contract to generate the plurality of logical
rules. The RNN 130 may then transmit the plurality of logical rules
to the computing device 140.
[0035] An example embodiment of the first user device 110 is shown
in more detail in FIG. 2. The second user device 120 may have a
similar structure and components that are similar to those
described with respect to the first user device 110. As shown, the
first user device 110 may include a processor 210, an input/output
("I/O") device 220, a memory 230 containing an operating system
("OS") 240 and a program 250. In some examples, the first user
device 110 can comprise, for example, a cell phone, a smart phone,
a tablet computer, a laptop computer, a desktop computer, a sever,
or other electronic device. The first user device 110 may be a
single server, for example, or may be configured as a distributed,
or "cloud," computer system including multiple servers or computers
that interoperate to perform one or more of the processes and
functionalities associated with the disclosed embodiments. In some
embodiments, the first user device 110 may further include a
peripheral interface, a transceiver, a mobile network interface in
communication with processor 210, a bus configured to facilitate
communication between the various components of the first user
device 110, and a power source configured to power one or more
components of the first user device 110.
[0036] A peripheral interface may include the hardware, firmware,
and/or software that enables communication with various peripheral
devices, such as media drives (e.g., magnetic disk, solid state, or
optical disk drives), other processing devices, or any other input
source used in connection with the instant techniques. In some
embodiments, a peripheral interface may include a serial port, a
parallel port, a general-purpose input and output (GPIO) port, a
game port, a universal serial bus (USB), a micro-USB port, a high
definition multimedia (HDMI) port, a video port, an audio port, a
Bluetooth.TM. port, a near-field communication (NFC) port, another
like communication interface, or any combination thereof.
[0037] In some embodiments, a transceiver may be configured to
communicate with compatible devices and ID tags when they are
within a predetermined range. The transceiver may be compatible
with one or more of: radio-frequency identification (RFID),
near-field communication (NFC), Bluetooth.TM., low-energy
Bluetooth.TM. (BLE), WiFi.TM., ZigBee.TM. ambient backscatter
communications (ABC) protocols or similar technologies.
[0038] A mobile network interface may provide access to a cellular
network, the Internet, or another wide-area network. In some
embodiments, a mobile network interface may include hardware,
firmware, and/or software that allows processor(s) 210 to
communicate with other devices via wired or wireless networks,
whether local or wide area, private or public, as known in the art.
A power source may be configured to provide an appropriate
alternating current (AC) or direct current (DC) to power
components.
[0039] As described above, the first user device 110 may be
configured to remotely communicate with one or more other devices,
such as the computing device 140, the second user device 120,
and/or the RNN 130. According to some embodiments, the first user
device 110 may utilize the RNN 130 (or other suitable logic) to
determine a plurality of logical rules.
[0040] The processor 210 may include one or more of a
microprocessor, a microcontroller, a digital signal processor, a
co-processor or the like or combinations thereof capable of
executing stored instructions and operating upon stored data. The
memory 230 may include, in some implementations, one or more
suitable types of memory (e.g. such as volatile or non-volatile
memory, a random access memory (RAM), a read only memory (ROM), a
programmable read-only memory (PROM), an erasable programmable
read-only memory (EPROM), an electrically erasable programmable
read-only memory (EEPROM), one or more magnetic disks, one or more
optical disks, one or more floppy disks, one or more hard disks,
one or more removable cartridges, a flash memory, a redundant array
of independent disks (RAID), and the like), for storing files
including an operating system, one or more application programs
(including, for example, a web browser application, a widget or
gadget engine, and or other applications, as necessary), executable
instructions and data. In one embodiment, the processing techniques
described herein are implemented as a combination of executable
instructions and data within the memory 230.
[0041] The processor 210 may be one or more known processing
devices, such as a microprocessor from the Pentium.TM. family
manufactured by Intel.TM. or the Turion.TM. family manufactured by
AMD.TM.. The processor 210 may constitute a single core or multiple
core processor that executes parallel processes simultaneously. The
processor 210 may be a single core processor, for example, that is
configured with virtual processing technologies. In certain
embodiments, the processor 210 may use logical processors to
simultaneously execute and control multiple processes. The
processor 210 may implement virtual machine technologies, or other
similar known technologies to provide the ability to execute,
control, run, manipulate, store, etc. multiple software processes,
applications, programs, etc. One of ordinary skill in the art would
understand that other types of processor arrangements could be
implemented that provide for the capabilities disclosed herein.
[0042] The first user device 110 may include one or more storage
devices configured to store information used by the processor 210
(or other components) to perform certain functions related to the
disclosed embodiments. In one example, the first user device 110
may include the memory 230 that includes instructions to enable the
processor 210 to execute one or more applications, such as server
applications, network communication processes, and any other type
of application or software known to be available on computer
systems. Alternatively, the instructions, application programs,
etc. may be stored in an external storage or available from a
memory over a network. The one or more storage devices may be a
volatile or non-volatile, magnetic, semiconductor, tape, optical,
removable, non-removable, or other type of storage device or
tangible computer-readable medium.
[0043] In one embodiment, the first user device 110 may include the
memory 230 that includes instructions that, when executed by
processor 210, perform one or more processes consistent with the
functionalities disclosed herein. Methods, systems, and articles of
manufacture consistent with disclosed embodiments are not limited
to separate programs or computers configured to perform dedicated
tasks. The first user device 110 may include the memory 230
including one or more programs 250, for example, to perform one or
more functions of the disclosed embodiments. Moreover, the
processor 210 may execute the one or more programs 250 located
remotely from the first user device 110. For example, the first
user device 110 may access the one or more remote programs 250,
that, when executed, perform functions related to disclosed
embodiments.
[0044] The memory 230 may include one or more memory devices that
store data and instructions used to perform one or more features of
the disclosed embodiments. The memory 230 may also include any
combination of one or more databases controlled by memory
controller devices (e.g., server(s), etc.) or software, such as
document management systems, Microsoft.TM. SQL databases,
SharePoint.TM. databases, Oracle.TM. databases, Sybase.TM.
databases, or other relational databases. The memory 230 may
include software components that, when executed by the processor
210, perform one or more processes consistent with the disclosed
embodiments. In some embodiments, the memory 230 may include an
image processing database 260 and a neural-network pipeline
database 270 for storing related data to enable the first user
device 110 to perform one or more of the processes and
functionalities associated with the disclosed embodiments.
[0045] The first user device 110 may also be communicatively
connected to one or more memory devices (e.g., databases (not
shown)) locally or through a network. The remote memory devices may
be configured to store information and may be accessed and/or
managed by the first user device 110. By way of example, the remote
memory devices may be document management systems, Microsoft.TM.
SQL database, SharePoint.TM. databases, Oracle.TM. databases,
Sybase.TM. databases, or other relational databases. Systems and
methods consistent with disclosed embodiments, however, are not
limited to separate databases or even to the use of a database.
[0046] The first user device 110 may also include the one or more
I/O devices 220 that may include one or more interfaces (e.g.,
transceivers) for receiving signals or input from devices and
providing signals or output to one or more devices that allow data
to be received and/or transmitted by the first user device 110. The
first user device 110 may include interface components, for
example, which may provide interfaces to one or more input devices,
such as one or more keyboards, mouse devices, touch screens, track
pads, trackballs, scroll wheels, digital cameras, microphones,
sensors, and the like, that enable the first user device 110 to
receive data from one or more users (such as via second user device
120).
[0047] In example embodiments of the disclosed technology, the
first user device 110 may include any number of hardware and/or
software applications that are executed to facilitate any of the
operations. The one or more I/O interfaces may be utilized to
receive or collect data and/or user instructions from a wide
variety of input devices. Received data may be processed by one or
more computer processors as desired in various implementations of
the disclosed technology and/or stored in one or more memory
devices.
[0048] While the first user device 110 has been described as one
form for implementing the techniques described herein, those having
ordinary skill in the art will appreciate that other, functionally
equivalent techniques may be employed. As is known in the art, some
or all of the functionality implemented via executable instructions
may also be implemented using firmware and/or hardware devices such
as, for example, application specific integrated circuits (ASICs),
programmable logic arrays, state machines, etc. Furthermore, other
implementations of the first user device 110 may include a greater
or lesser number of components than those illustrated.
[0049] FIG. 3 shows an example embodiment of the computing device
140. As shown, the computing device 140 may include the
input/output ("I/O") device 220 for receiving data from another
device (e.g., the first user device 110), the memory 230 containing
the operating system ("OS") 240, the program 250, and any other
associated component as described above with respect to the first
user device 110. The computing device 140 may also have the one or
more processors 210, a geographic location sensor ("GLS") 304 for
determining the geographic location of the computing device 140, a
display 306 for displaying content such as text messages, images,
and selectable buttons/icons/links, an environmental data ("ED")
sensor 308 for obtaining environmental data including audio and/or
visual information, and a user interface ("U/I") device 310 for
receiving user input data, such as data representative of a click,
a scroll, a tap, a press, or typing on an input device that can
detect tactile inputs. User input data may also be non-tactile
inputs that may be otherwise detected by the ED sensor 308. For
example, user input data may include auditory commands. According
to some embodiments, the U/I device 310 may include some or all of
the components described with respect to the I/O device 220 above.
In some embodiments, the environmental data sensor 308 may include
a microphone and/or an image capture device, such as a digital
camera.
[0050] FIG. 4 is a flowchart of an example of a method 400 for
maintaining contract adherence. Method 400 may be performed by one
or more of the first user device 110 and the computing device 140
of the system 100. The computing device 140, for example, may
ensure contract adherence by determining the plurality of tasks
within the contract and performing the plurality of tasks and/or
reminding the party responsible to perform the task.
[0051] At 405, the computing device 140 may receive the contract.
The contract may be uploaded via the U/I device 310 or received
from the first user device 110 or the second user device 120. At
410, the computing device 140 may transmit the contract to the RNN
130. Operability and/or training of the RNN 130 may be based on
training documents provided to the RNN 130. The training documents
may include data between parties, contracts, negotiations, and/or
the like that have been prelabeled by a human, for example, or
prelabeled by a trained model. The RNN 130 may determine the
plurality of logical rules. In some embodiments, an algorithm
executed by the processor 210 may determine the plurality of
logical rules. Further, in some embodiments the plurality of
logical rules may be determined by another means of artificial
intelligence that is similar and/or comparable to the RNN 130.
After the RNN 130 determines the plurality of logical rules, it may
transmit the plurality of logical rules to the computing device
140. At 415, the computing device 140 may receive the plurality of
logical rules from the RNN 130.
[0052] At 420, the computing device 140 may generate the acyclic
graph based on the plurality of logical rules. The ability to
generate the acyclic graph may correspond to the compatibility of
the contract terms, i.e., generating the acyclic graph may indicate
that the contract terms are compatible (i.e., they can be executed
without conflict). Further, the acyclic graph may contain the
plurality of nodes, where each node represents, for example, the
current state of the contract. Moreover, the acyclic graph may be
used to determine the next action to be performed within the
contract. At 425, the computing device 140 may generate the
plurality of tasks based on the plurality of logical rules. At 430,
the computing device 140 may assign each of the plurality of tasks
to a respective node of the acyclic graph.
[0053] It should be noted that other data structures including, for
example, a queue, LinkedList, tree, pointer, and/or the like may
perform the functions described herein with respect to the acyclic
graph. In other words, while the output of the method 400 is
described in terms of an acyclic graph, one of skill in the art
will recognize that this is merely one type of visualization. Thus,
as before, the use of an acyclic graph to describe the method 400
is merely to simplify and clarify the explanation and not to limit
the disclosure.
[0054] At 435, the method may include organizing the plurality of
tasks in chronological order. At 440, the computing device 140 may
determine whether one or more of the plurality of tasks has not yet
been performed. If all tasks have been performed, then at 445, the
computing device 140 may terminate the method--i.e., all of the
tasks associated with the terms of the contract have been completed
and additional monitoring is not necessary. If, on the other hand,
tasks remain that have not been completed, then at 450, the
computing device 140 may determine a date when the next task must
be performed. At 455, the computing device 140 may identify the
user responsible for the at least one of the plurality of tasks
that must be performed. At 460, the computing device 140 may
calculate, based on a current date and the date the task is to be
performed, an amount of time left before the at least one of the
plurality of tasks must be performed.
[0055] At 465, the computing device 140 may determine if the amount
of time left is less than a predefined amount. The method 400 may
allow a predefined amount of time to serve as a grace period before
taking action, for example, to ensure adherence with a term of the
contract or may provide a reminder a predetermined amount of time
before the task is due. When the time left is greater than or equal
to the predetermined amount of time, then at 470, the method 400
may continue monitoring the contract. If the time left is less than
the predetermined time, then at 475, the computing device 140 may
generate the second message indicating the at least one of the
plurality of tasks must be performed. The second message may
include instructions regarding how the task is to be performed, a
due date, any associated penalties for not performing the task,
etc. At 480, the computing device 140 may transmit the second
message to the user responsible for the task. In some embodiments,
instead of sending the second message, the computing device 140 may
trigger an action associated with the one or more tasks that must
be performed within the predefined time. The method 400 can
continue iteratively until all tasks identified in the contract
have been competed, for example, or the process is stopped by the
user.
[0056] FIG. 5 illustrates a timing diagram of a method 500 for
maintaining contract adherence. The timing diagram represents the
perspective of the computing device 140 in communication with the
first user device 110, the second user device 120, and the RNN 130.
Similar to FIG. 4, the computing device 140 may ensure contract
adherence by determining the plurality of tasks within the contract
and performing the plurality of tasks and/or reminding the party
responsible to perform the task.
[0057] At 505, the first user device 110 may transmit the contract
to the computing device 140. At 510, the computing device 140 may
identify the plurality of parties to the contract. The plurality of
parties to the contract may include individuals and/or legal
entities obligated to perform under the contract. The plurality of
parties to the contract may also include individuals without a
legal obligation to perform under the contract (e.g., assignee,
assignor, beneficiary). At 515, the computing device 140 may
provide the contract to the RNN 130. Providing the contract to the
RNN 130 may include transmitting the contract from the computing
device 140 to the RNN 130. At 520, after analysis, the RNN 130 may
transmit the plurality of logical rules to the computing device
140, as discussed above.
[0058] Based on the plurality of logical rules, the computing
device 140 may determine that a breach of contract can be avoided
(i.e., the logical rules do not conflict). At 525, the computing
device 140 may generate the acyclic graph based on the plurality of
logical rules. At 530, the computing device 140 may generate the
plurality of tasks based on the plurality of logical rules. The
plurality of tasks may include actions to be performed by the
parties to the contract and/or by the computing device 140. At 535,
the computing device 140 may assign each of the plurality of tasks
to the respective node of the acyclic graph. At 540, based on the
acyclic graph, the computing device 140 may organize the plurality
of tasks in chronological order, order of importance, or in some
other logical order.
[0059] At 545, the computing device 140 may determine that a task
of the plurality of tasks has not been performed. At 550, the
computing device 140 may determine the action associated with the
task that has not been performed. At 555, the computing device 140
may determine the date when the task must be performed. At 560, the
computing device 140 may determine the party responsible for the
task that has not been performed from amongst the plurality of
parties. At 565, the computing device 140 can transmit a second
message to the party responsible (e.g., the second user device 120)
for the task indicating the task has not been performed. In some
embodiments, the second message may also include the date or time
when the task must be performed, any penalties for not performing
the task, and estimated time to complete the task, and/or any other
information relevant to completing the task.
[0060] FIG. 6 illustrates a directed acyclic graph. The directed
acyclic graph 600 may be used in one or more embodiments of the
present disclosure. More specifically, the processor 142 may
generate the directed acyclic graph 600 based on the plurality of
logical rules received from the RNN 130. Further, the processor 142
may assign each of the plurality of tasks to respective nodes of
the directed acyclic graph 600. The directed acyclic graph 600 may
provide the processor 142 with an indication of the order to
complete each of the plurality of tasks.
[0061] As shown, the directed acyclic graph 600 contains nodes
0-10. Each node may contain data representative of a respective
task. For example, node 1 may include a "purchase supplies" task.
The arrows in the directed acyclic graph 600 represent directed
edges illustrating the next possible node from the current node.
Nodes having no parents, i.e., no arrow leads to the node are
commonly referred to as ancestral nodes. In some embodiments,
ancestral nodes may indicate a lack of conditions precedent and/or
tasks that must be performed prior to the task associated with the
ancestral node. Therefore, nodes 0 and 1 represent ancestral
nodes.
[0062] Nodes without arrows leading away are commonly referred to
as "leaves," or nodes that have no children. Therefore, leaves may
not be associated with a task that is a condition precedent or a
one that must be performed before another task. In the directed
acyclic graph 600, nodes 9 and 10 represent leaves. The remaining
nodes, nodes 2-8 may require conditions and/or tasks to be
performed prior and after the task associated with its respective
node.
[0063] As used in this application, the terms "component,"
"module," "system," "server," "processor," "memory," and the like
are intended to include one or more computer-related units, such as
but not limited to hardware, firmware, a combination of hardware
and software, software, or software in execution. For example, a
component may be, but is not limited to being, a process running on
a processor, an object, an executable, a thread of execution, a
program, and/or a computer. By way of illustration, both an
application running on a computing device and the computing device
can be a component. One or more components can reside within a
process and/or thread of execution and a component may be localized
on one computer and/or distributed between two or more computers.
In addition, these components can execute from various computer
readable media having various data structures stored thereon. The
components may communicate by way of local and/or remote processes
such as in accordance with a signal having one or more data
packets, such as data from one component interacting with another
component in a local system, distributed system, and/or across a
network such as the Internet with other systems by way of the
signal.
[0064] Certain embodiments and implementations of the disclosed
technology are described above with reference to block and flow
diagrams of systems and methods and/or computer program products
according to example embodiments or implementations of the
disclosed technology. It will be understood that one or more blocks
of the block diagrams and flow diagrams, and combinations of blocks
in the block diagrams and flow diagrams, respectively, can be
implemented by computer-executable program instructions Likewise,
some blocks of the block diagrams and flow diagrams may not
necessarily need to be performed in the order presented, may be
repeated, or may not necessarily need to be performed at all,
according to some embodiments or implementations of the disclosed
technology.
[0065] These computer-executable program instructions may be loaded
onto a general-purpose computer, a special-purpose computer, a
processor, or other programmable data processing apparatus to
produce a particular machine, such that the instructions that
execute on the computer, processor, or other programmable data
processing apparatus create means for implementing one or more
functions specified in the flow diagram block or blocks. These
computer program instructions may also be stored in a
computer-readable memory that can direct a computer or other
programmable data processing apparatus to function in a particular
manner, such that the instructions stored in the computer-readable
memory produce an article of manufacture including instruction
means that implement one or more functions specified in the flow
diagram block or blocks.
[0066] As an example, embodiments or implementations of the
disclosed technology may provide for a computer program product,
including a computer-usable medium having a computer-readable
program code or program instructions embodied therein, said
computer-readable program code adapted to be executed to implement
one or more functions specified in the flow diagram block or
blocks. Likewise, the computer program instructions may be loaded
onto a computer or other programmable data processing apparatus to
cause a series of operational elements or steps to be performed on
the computer or other programmable apparatus to produce a
computer-implemented process such that the instructions that
execute on the computer or other programmable apparatus provide
elements or steps for implementing the functions specified in the
flow diagram block or blocks.
[0067] Accordingly, blocks of the block diagrams and flow diagrams
support combinations of means for performing the specified
functions, combinations of elements or steps for performing the
specified functions, and program instruction means for performing
the specified functions. It will also be understood that each block
of the block diagrams and flow diagrams, and combinations of blocks
in the block diagrams and flow diagrams, can be implemented by
special-purpose, hardware-based computer systems that perform the
specified functions, elements or steps, or combinations of
special-purpose hardware and computer instructions.
[0068] Certain implementations of the disclosed technology are
described above with reference to user devices may include mobile
computing devices. Those skilled in the art recognize that there
are several categories of mobile devices, generally known as
portable computing devices that can run on batteries but are not
usually classified as laptops. For example, mobile devices can
include, but are not limited to portable computers, tablet PCs,
internet tablets, PDAs, ultra-mobile PCs (UMPCs), wearable devices,
and smart phones. Additionally, implementations of the disclosed
technology can be utilized with internet of things (IoT) devices,
smart televisions and media devices, appliances, automobiles, toys,
and voice command devices, along with peripherals that interface
with these devices.
[0069] In this description, numerous specific details have been set
forth. It is to be understood, however, that implementations of the
disclosed technology may be practiced without these specific
details. In other instances, well-known methods, structures, and
techniques have not been shown in detail in order not to obscure an
understanding of this description. References to "one embodiment,"
"an embodiment," "some embodiments," "example embodiment," "various
embodiments," "one implementation," "an implementation," "example
implementation," "various implementations," "some implementations,"
etc., indicate that the implementation(s) of the disclosed
technology so described may include a particular feature,
structure, or characteristic, but not every implementation
necessarily includes the particular feature, structure, or
characteristic. Further, repeated use of the phrase "in one
implementation" does not necessarily refer to the same
implementation, although it may.
[0070] Throughout the specification and the claims, the following
terms take at least the meanings explicitly associated herein,
unless the context clearly dictates otherwise. The term "connected"
means that one function, feature, structure, or characteristic is
directly joined to or in communication with another function,
feature, structure, or characteristic. The term "coupled" means
that one function, feature, structure, or characteristic is
directly or indirectly joined to or in communication with another
function, feature, structure, or characteristic. The term "or" is
intended to mean an inclusive "or." Further, the terms "a," "an,"
and "the" are intended to mean one or more unless specified
otherwise or clear from the context to be directed to a singular
form. By "comprising" or "containing" or "including" is meant that
at least the named element, or method step is present in article or
method, but does not exclude the presence of other elements or
method steps, even if the other such elements or method steps have
the same function as what is named.
[0071] As used herein, unless otherwise specified the use of the
ordinal adjectives "first," "second," "third," etc., to describe a
common object, merely indicate that different instances of like
objects are being referred to, and are not intended to imply that
the objects so described must be in a given sequence, either
temporally, spatially, in ranking, or in any other manner.
[0072] While certain embodiments of this disclosure have been
described in connection with what is presently considered to be the
most practical and various embodiments, it is to be understood that
this disclosure is not to be limited to the disclosed embodiments,
but on the contrary, is intended to cover various modifications and
equivalent arrangements included within the scope of the appended
claims. Although specific terms are employed herein, they are used
in a generic and descriptive sense only and not for purposes of
limitation.
[0073] This written description uses examples to disclose certain
embodiments of the technology and also to enable any person skilled
in the art to practice certain embodiments of this technology,
including making and using any apparatuses or systems and
performing any incorporated methods. The patentable scope of
certain embodiments of the technology is defined in the claims, and
may include other examples that occur to those skilled in the art.
Such other examples are intended to be within the scope of the
claims if they have structural elements that do not differ from the
literal language of the claims, or if they include equivalent
structural elements with insubstantial differences from the literal
language of the claims.
Example Use Case
[0074] The following example use case describes an example of a
typical use of the systems and methods described herein for
maintaining contract adherence. It is intended solely for
explanatory purposes and not for limitation. In one example, a
homeowner has an electronic version of a contract on his laptop
computer (e.g., second user device 120). In this example, the
homeowner has contracted with a builder to have his home renovated.
The contract is already executed by all the parties to the
agreement. Not being a lawyer, however, each party's obligation,
the order in which they may be performed, and which duty arises in
the event of non-performance is unclear to the homeowner.
[0075] To solve this problem, the homeowner uploads his contract to
an application on his laptop, a remote server, or a web
application. The homeowner inputs his contact information (e.g.,
email address, phone number) as well as the information of the
contractor. Uploading the contract and entering the associated
information also causes the application to send a welcome message
to the contractor. The user and the contractor can use the
application to check the current status of the contract, receive a
list or timeline of tasks, and to "check things off" the task list
as they are completed.
[0076] After receiving a welcome message from the application, the
contractor sends an email to the system providing notice that he
purchased certain supplies and the date of purchase. After the
grace period provided in the contract expires, the homeowner
receives an email notification that he must pay because the
contractor for the supplies purchased by the contractor.
[0077] Later in the job, the renovation should be ongoing, but the
contractor cannot be located. As a result, the application sends
the contractor an email and/or a text notifying him that he is at
risk of breaching the contract. The contractor responds with a
message seeking an extension of time due to unforeseen
circumstances. The application then sends a notification to the
homeowner seeking his permission to allow this modification. If the
user accepts the modification, the application dynamically updates
the contract's terms--and any other terms affected by the
modification--and allows for this modification without a breach.
The parties continue meeting their obligations until all
obligations are fulfilled. When all tasks have been performed, the
application stops monitoring the contract.
* * * * *