Contract Analytics Knowledge Model
Overview
The Contract Analytics Knowledge Model (display name: Contract Analytics EN v#) can analyze commercial contracts written in English to:
- Categorize them to determine their type and/or subtype.
- Extract key metadata—such as dates and parties—and legal clauses.
Workflow
Any workflow with this model should be fed with PDF documents. It is recommended to place an Extract Converter processor block before the model, as pictured below, because the processor gets text out of PDF documents in an optimal way.
Since contracts are often large documents, resulting in relatively long and intensive processing, consider changing the default values for the deployment properties of the blocks.
For example, in case of contracts with about 50 pages each, you could use these values:
Block | Timeout | Memory | CPU |
---|---|---|---|
Extract Converter processor | >= 5 m | 3000 Mi | 1000 m |
Model | >= 15 m | 3000 Mi | 1000 m |
If the case of scanned documents, also set these parameters for the block of the Extract Converter processor:
- Enable or disable OCR recognition: enabled
- Specify OCR language:
eng
Categorization
The categorization module aims at classifying contracts according to their type and sub-type. The category tree is:
1000 Contract Type
1001 Affiliate Agreement
1002 Agency Agreement
1003 CoBranding Agreement
1004 Collaboration Agreement
1005 Confidential Information Disclosure/NDA
1006 Consulting Agreement
1007 Development Agreement
1008 Distributor Agreement
1009 Endorsement Agreement
1010 Franchise Agreement
1011 Hosting Agreement
1012 Intellectual Property Agreement
1013 Joint Venture Agreement
1014 License Agreement
1015 Maintenance Agreement
1016 Manufacturing Agreement
1017 Marketing Agreement
1018 Non-Compete Non-Solicit Agreement
1019 Outsourcing Agreement
1020 Promotion Agreement
1021 Property Lease or Purchase
1022 Reseller Agreement
1023 Service Agreement
1024 Software as a Service
1025 Sponsorship Agreement
1026 Strategic Alliance Agreement
1027 Supply Agreement
1028 Transportation Agreement
1029 Warranty
2000 Contract Sub-Type
2001 Master
2002 Addendum
2003 Amendment
2004 Renewal
2005 Statement of Work
2006 Order Form
2007 Change Order
For example, considering this fragment:
Marketing affiliate agreement
This Agreement is made this 1st day of October 2008, (the "Effective Date"), by and between Equimart, Inc., a corporation organized under the Laws of Virginia with its principal place of business at 324 Thimble Shoals Boulevard Newport News, Virginia 23606 ("Equimart"), and Porranch Credit Report.com, LLC a Corporation organized under the Laws of Florida, with its principal place of business at 8800 N. Congress Ave, Suite 2001, Boca Raton FL33487 ("Marketing Affiliate").
the corresponding categorization could be:
"categories": [
...
{
"frequency": 0,
"hierarchy": [
"Affiliate Agreement"
],
"id": "1001",
"label": "Affiliate Agreement",
"namespace": "contract_analytics",
"positions": [
{
"end": 33,
"start": 24
},
{
"end": 43,
"start": 34
}
],
"score": 10,
"winner": true
},
{
"frequency": 0,
"hierarchy": [
"Marketing Agreement"
],
"id": "1017",
"label": "Marketing Agreement",
"namespace": "contract_analytics",
"positions": [
{
"end": 23,
"start": 14
},
{
"end": 43,
"start": 34
}
],
"score": 10,
"winner": true
}
...
]
Extraction groups and classes
The model predicts several data points spanning across a variety of topics that fall into two main macro-areas: metadata and clauses.
Note
In this model's output, the template
key corresponds to the concept of group and template fields correspond to classes.
Metadata
Metadata refers to key information that uniquely identifies a contract, such as the document's name, legal parties, and relevant dates.
DOCUMENT_NAME
The DOCUMENT_NAME group extracts the name—also called title—of the contract in its only class Name.
The title of a contract tends to appear on the cover page or in the introductory paragraph. However, it may also occur in other less common positions within the contract.
For example, considering this fragment:
EXHIBIT 10.66
SUPREMESEC TECHNOLOGIES, INC. DISTRIBUTOR AGREEMENT
This Agreement is made and entered into effective as of November 5, Supremesec Technologies, Inc., a Texas corporation ("SEC"), and Distributor agree as follows:
1997 (the "effective Date), by and between Euroasian Macro ("Distributor").
the corresponding extraction could be like this:
"extractions": [
...
{
"fields": [
{
"name": "Name",
"positions": [
{
"end": 65,
"score": 1,
"start": 14
}
],
"score": 1,
"value": "SUPREMESEC TECHNOLOGIES, INC. DISTRIBUTOR AGREEMENT"
}
],
"namespace": "contract_analytics",
"template": "DOCUMENT_NAME"
}
...
]
DATES
The most relevant dates within a contract are:
- Agreement date: the date as of which the contract agreement is drawn up.
- Effective date: the specific date when an agreement becomes legally binding, and when the terms outlined in the contract begin to apply; also known as Commencement Date or Start Date.
- Expiration date: the date when a contract’s initial term expires; it generally refers to the ending or completion of a contract according to its own terms.
They are extracted, with variations and related classes, in the DATES group. Variations and related classes represent the possible position of dates in the contract and the form in which they are expressed.
Class | Description |
---|---|
Agreement_Date | Agreement date |
Agreement_Date_Lone_Year | Agreement date is in a non-specific section of the document where there is a clear statement of the agreement’s date and represents also an incomplete date, for example composed of just of the year with no indication about month and day. |
Effective_Date | Effective date |
Effective_Date_Sentence | In case of non explicit date, the whole sentence that contains the provisions describing the contract effective terms is extracted. |
Effective_Date_Cloned | Cloned from Agreement_Date if an effective date is not present and it is normalized to Effective_Date at the end of process. |
Expiration_Date | Expiration date is in Term, Termination or Definition sections in explicit form or is calculated from other sections. Normalized. |
Expiration_Date_Value | The time value of expiration. The amount of years, months, days, and so on. |
Expiration_Date_Time_Unit | Expiration date time unit (could be years, months, days and so on). |
Expiration_Date_Normalized_Days | Expiration dates normalized and expressed in days. |
Expiration_Date_Perpetual | In case of no expiration date. |
Expiration_Date_Sentence | In case of non explicit date, the whole sentence that contains the provisions describing when the contract becomes effective is extracted. |
For example, given the following fragment:
EXHIBIT 99.3
4/18/2018
AGENCY AGREEMENT
This Agency Agreement ("Agreement") is made as of April 18, 2018 by and between The Mid-Cat Stores, on the one hand, and (a) a contractual joint venture comprised of PX Retail, Inc. ("PX") and Lions Savings Fund Society, FSB, as the indenture agent and collateral trustee for the 8.00% second-lien hand (in such capacities, the "Notes Trustee" and collectively with Agent, "Purchaser"). Purchaser
% 345
Inc. and its associated chapter 11 debtors in possession (collectively, "Merchant"),1 Capital Group, LLC ("Lions" and collectively with PX, the "Agent") and (b) Wilmington senior secured notes due 2021 (the "Second-Lien Notes") issued by BTDS, on the other and Merchant are collectively the "Parties".
the model could extract something like this:
"extractions": [
...
{
"fields": [
{
"name": "Agreement_Date",
"positions": [
{
"end": 104,
"score": 1,
"start": 90
}
],
"score": 1,
"value": "04/18/2018"
}
],
"namespace": "contract_analytics",
"template": "DATES"
},
{
"fields": [
{
"name": "Effective_Date",
"positions": [
{
"end": 22,
"score": 1,
"start": 13
}
],
"score": 1,
"value": "04/18/2018"
}
],
"namespace": "contract_analytics",
"template": "DATES"
}
...
]
PARTIES
The parties are the two or more individuals or entities that are entering into the legally binding agreement and which are responsible for all the obligations set forth in the contract.
Finding the parties in a contract implies detecting the names of these parties together with other elements characterizing them and providing crucial information for contract interpretation.
These elements include for example:
- Defined terms that are mainly abbreviations of a party’s name and are usually in quotation marks. Defined terms sometimes include indications about subsidiaries, affiliates or successors being involved in the contract for a given party.
- Defined term of a group of parties that refers to a group of parties rather than being specific to only one party.
- DBA and AKA names that are fictitious business names and sometimes include former names of parties (FKA)1.
Parties are usually declared in the introduction, but they can also—or only—be mentioned in the signature page, so the PARTIES group can be related to the SIGNATORIES group group.
The model extracts parties in the PARTIES group, which has these classes:
Class | Description |
---|---|
Party | The name of the company or individual found on the introductory page. Some other keywords are included, for example Franchisee, Sales Agent, Distributor, You or phrases such as the entity identified in Exhibit A or the party set forth in the signature page when these were mentioned as such in the introductory paragraph. |
Alias | The defined term (or terms) specific to Party. |
Alias_Shared | The string of text containing the defined term (or terms) referring to a group of parties, including the party in the record (for example several parties sharing the same defined term). |
Party_Attribute | The text characterizing the name (aka, fka, dba) which immediately precedes the dba, fka and aka name itself. |
AffSubSucc | A single word indicating if Party includes any Affiliates, Subsidiaries or Successors. |
Party_dba_aka | The string of text containing the dba and aka names plus the text characterizing the name (aka, fka, dba), which immediately precedes the dba, fka and aka name itself. |
Other_Party | The string of text containing the name of the entity (a company) which Party represents, acts on behalf or in the interest of. |
Other_Party_Person | The string of text containing the name of the entity (a person) which Party represents, acts on behalf or in the interest of. |
For example, considering the following fragment:
EXHIBIT 99.3
4/18/2018
AGENCY AGREEMENT
This Agency Agreement ("Agreement") is made as of April 18, 2018 by and between The Mid-Cat Stores, on the one hand, and (a) a contractual joint venture comprised of PX Retail, Inc. ("PX") and Lions Savings Fund Society, FSB, as the indenture agent and collateral trustee for the 8.00% second-lien hand (in such capacities, the "Notes Trustee" and collectively with Agent, "Purchaser"). Purchaser
% 345
Inc. and its associated chapter 11 debtors in possession (collectively, "Merchant"),1 Capital Group, LLC ("Lions" and collectively with PX, the "Agent") and (b) Wilmington senior secured notes due 2021 (the "Second-Lien Notes") issued by BTDS, on the other and Merchant are collectively the "Parties".
the extraction output for the PARTIES group could be like this:
"extractions": [
...
{
"fields": [
{
"name": "Party",
"positions": [
{
"end": 221,
"score": 1,
"start": 206
}
],
"score": 1,
"value": "PX Retail, Inc."
},
{
"name": "Alias_Shared",
"positions": [
{
"end": 412,
"score": 1,
"start": 384
},
{
"end": 423,
"score": 1,
"start": 414
}
],
"score": 1,
"value": "and collectively with Agent, Purchaser"
},
{
"name": "Alias",
"positions": [
{
"end": 226,
"score": 1,
"start": 224
}
],
"score": 1,
"value": "PX"
}
],
"namespace": "contract_analytics",
"template": "PARTIES"
},
{
"fields": [
{
"name": "Alias_Shared",
"positions": [
{
"end": 412,
"score": 1,
"start": 384
},
{
"end": 423,
"score": 1,
"start": 414
}
],
"score": 1,
"value": "and collectively with Agent, Purchaser"
},
{
"name": "Party",
"positions": [
{
"end": 264,
"score": 1,
"start": 233
}
],
"score": 1,
"value": "Lions Savings Fund Society, FSB"
},
{
"name": "Alias",
"positions": [
{
"end": 382,
"score": 1,
"start": 369
}
],
"score": 1,
"value": "Notes Trustee"
}
],
"namespace": "contract_analytics",
"template": "PARTIES"
}
...
]
SIGNATORIES
The signatories are the parties that have signed the contract. They are extracted by the model in the SIGNATORIES group, which has these classes:
Class | Description |
---|---|
Party | The name of the company or individual found on the signature page. |
Party_dba_aka | The string of text containing the dba and aka names plus the text characterizing the name (aka, fka, dba), which immediately precedes the dba, fka and aka name itself. |
Alias | The defined term (or terms) specific to Party. |
For example, considering the following fragment of a contract:
the corresponding portion of the extraction output could be like this:
"extraction": [
...
{
"fields": [
{
"name": "Party",
"positions": [
{
"end": 27075,
"geometry": [
{
"box": [
76,
160,
102,
174
],
"page": 9,
"pageHeight": 1170,
"pageWidth": 827
}
],
"score": 1,
"start": 27060
}
],
"score": 1,
"value": "OSG CORPORATION"
}
],
"namespace": "contract_analytics",
"template": "SIGNATORIES"
},
{
"fields": [
{
"name": "Party",
"positions": [
{
"end": 27093,
"geometry": [
{
"box": [
420,
159,
454,
172
],
"page": 9,
"pageHeight": 1170,
"pageWidth": 827
}
],
"score": 1,
"start": 27076
}
],
"score": 1,
"value": "MANA PARTNERS LLC"
}
],
"namespace": "contract_analytics",
"template": "SIGNATORIES"
}
...
]
GOVERNING_LAW
The Governing Law, also called Choice of Law or Applicable Law, refers to the law of a State or Country that governs the interpretation of a contract and that applies in the event of a legal dispute between the parties.
Governing Law is extracted in the Governing_Law class of the GOVERNING_LAW group.
For example, considering the following fragment of a contract:
the corresponding output for this group could be like this:
"extraction": [
...
{
"fields": [
{
"name": "Governing_Law",
"positions": [
{
"end": 23419,
"geometry": [
{
"box": [
556,
443,
597,
457
],
"page": 7,
"pageHeight": 1170,
"pageWidth": 827
}
],
"score": 1,
"start": 23402
}
],
"score": 1,
"value": "THIS AGREEMENT SHALL BE GOVERNED IN ALL RESPECTS, INCLUDING VALIDITY, INTERPRETATION AND EFFECT, BY THE LAWS OF THE STATE OF DELAWARE WITHOUT GIVING EFFECT TO THE CHOICE OF LAW PRINCIPLES OF SUCH STATE."
}
],
"namespace": "contract_analytics",
"template": "GOVERNING_LAW"
}
...
]
Clauses
The clauses include a set of legal clauses constituting the backbone of all commercial transactions and can be defined as specific provisions that set forth the rights and obligations each party has under the agreement.
CONFIDENTIALITY_CLAUSE
Confidentiality legally binds one or more parties to non-disclosure of confidential or proprietary information. It is also known as Non-Disclosure clause.
The confidentiality clause is extracted in the Confidentiality class of the CONFIDENTIALITY_CLAUSE group.
For example, considering the following fragment:
5.1. Confidential Information. Except to the extent expressly authorized by this Agreement or otherwise agreed to in writing by the parties, each party agrees that, for the term of this Agreement and for 20 years thereafter, it shalt keep confidential and shall not publish or otherwise disclose and shall not use for any purpose other than as provided for in this Agreement any confidential information furnished to it by the other party pursuant to this Agreement, except that the foregoing shall not apply to any information for which the receiving party can demonstrate that such information: (i) was already known to the receiving party, other than under an obligation of confidentiality, at the time of disclosure by the other party; (ii) was generally available to the public or otherwise part of the public domain at the time of its disclosure to the receiving party; (iii) later became part of the public domain through no act or omission of the receiving party; (iv) was disclosed to the receiving party
by a Third Party who had no obligation to the disclosing party not to disclose such information to others; (iv) was independently developed by a person having no knowledge of or access to the disclosing party's Confidential Information; or (v) is an Authorized Disclosure under Section 5.3 below.
the corresponding output for the group could be like this:
"extractions": [
...
{
"fields": [
{
"name": "Confidentiality",
"positions": [
{
"end": 251,
"score": 1,
"start": 239
},
{
"end": 403,
"score": 1,
"start": 379
},
{
"end": 295,
"score": 1,
"start": 287
}
],
"score": 1,
"value": "Confidential Information. Except to the extent expressly authorized by this Agreement or otherwise agreed to in writing by the parties, each party agrees that, for the term of this Agreement and for 20 years thereafter, it shalt keep confidential and shall not publish or otherwise disclose and shall not use for any purpose other than as provided for in this Agreement any confidential information furnished to it by the other party pursuant to this Agreement, except that the foregoing shall not apply to any information for which the receiving party can demonstrate that such information: (i) was already known to the receiving party, other than under an obligation of confidentiality, at the time of disclosure by the other party; (ii) was generally available to the public or otherwise part of the public domain at the time of its disclosure to the receiving party; (iii) later became part of the public domain through no act or omission of the receiving party; (iv) was disclosed to the receiving party"
}
],
"namespace": "contract_analytics",
"template": "CONFIDENTIALITY_CLAUSE"
}
...
]
LIMITED_LIABILITY_CLAUSE
Limited Liability, also known as Limitation of liability, Cap on monetary damages or Exclusion of indirect damages, is a clause that rules the liability for damages or losses to be excluded for one or both parties in the agreement. This clause is used to minimize the amount of money and/or damages recoverable by the other party, in that it caps the monetary amount a party is held liable to pay under certain circumstances.
The Limited Liability clause is extracted in the Limited_Liability class of the LIMITED_LIABILITY_CLAUSE group.
For example, considering the following portion of text:
21.5.2 Any statement or representation made by either Party shall not be binding on the other unless agreed otherwise agreed in writing and neither Party shall be liable to any third party for any loss or damages arising out of such statements or representations.
the extraction for this group could be like this:
"extractions": [
...
{
"fields": [
{
"name": "Limited_Liability",
"positions": [
{
"end": 168,
"score": 1,
"start": 162
}
],
"score": 1,
"value": "Any statement or representation made by either Party shall not be binding on the other unless agreed otherwise agreed in writing and neither Party shall be liable to any third party for any loss or damages arising out of such statements or representations."
}
],
"namespace": "contract_analytics",
"template": "LIMITED_LIABILITY_CLAUSE"
}
...
]
DATA_SECURITY_CLAUSE
Data Security details the corrective actions that need to be taken in the event of a data or security breach that involves access to or theft of personal or highly sensitive information.
The Data Security clause is extracted in the Data_Security class of the DATA_SECURITY_CLAUSE group.
For example, from this fragment of a contract:
In forwarding Safety Reports to BIGA, Promoter shall comply with all applicable privacy and data protection laws, rules and regulations on the protection of individuals with regard to the processing of Personal Data and the free
movement of such data. "Personal Data" means information that can be used by itself or in combination with other available information to identify a specific individual. The Promoter shall collect, use and disclose any Personal Data obtained in the course of performing the safety related activities under this Agreement solely for the purposes of complying with the regulatory obligations as described in this Agreement, or as otherwise required by
law or by a court order. Promoter shall use electronic, physical, and other safeguards appropriate to the nature of the information to prevent any use or disclosure of Personal Data other than as provided for by this Agreement.
Promoter will also take reasonable precautions to protect the Personal Data from alteration or destruction.
Promoter shall notify BIGA promptly of any accidental, unauthorized, or unlawful destruction, loss, alteration, or disclosure of, or access to, the Personal Data ("Security Breach"), and take immediate steps to rectify any Security Breach.
the model would produce an extraction like this:
"extractions": [
...
{
"fields": [
{
"name": "Data_Security",
"positions": [
{
"end": 1176,
"score": 1,
"start": 1163
}
],
"score": 1,
"value": "Promoter shall notify BIGA promptly of any accidental, unauthorized, or unlawful destruction, loss, alteration, or disclosure of, or access to, the Personal Data (\"Security Breach\"), and take immediate steps to rectify any Security Breach."
},
{
"name": "Data_Security",
"positions": [
{
"end": 860,
"score": 1,
"start": 847
}
],
"score": 1,
"value": "law or by a court order. Promoter shall use electronic, physical, and other safeguards appropriate to the nature of the information to prevent any use or disclosure of Personal Data other than as provided for by this Agreement."
}
],
"namespace": "contract_analytics",
"template": "DATA_SECURITY_CLAUSE"
}
...
]
INDEMNITY_CLAUSE
The indemnity sets out to protect one party from liability if a third party or third entity is harmed in any way. It contractually obligates one party to compensate another party for losses or damages that have occurred or could occur in the future.
The indemnity clause is extracted in the Indemnity class of the INDEMNITY_CLAUSE group.
For example, from this fragment of a contract:
10. INDEMNIFICATION 10.1 Indemnification. Each Party (the "Indemnifying respective employees,Party") agrees to indemnify, defend and hold harmless the other Party and its Affiliates and their directors, officers, agents and successors (collectively, the "Indemnified Parties") from and against any and all losses (including all costs, liabilities (including present and future damages), claims and expenses) incurred or suffered by any of the Indemnified Parties, to the extent arising out of, relating to or resulting from (a) a breach by the Indemnifying Party of this Agreement: or (b) any gross negligence or willful misconduct of the Indemnifying Party in connection with this Agreement.
the model would produce an extraction like this:
"extractions": [
...
{
"fields": [
{
"name": "Indemnity",
"positions": [
{
"end": 129,
"score": 1,
"start": 200
}
],
"score": 1,
"value": "agrees to indemnify, defend and hold harmless the other Party and its Affiliates"
}
],
"namespace": "contract_analytics",
"template": "INDEMNITY_CLAUSE"
}
...
]
ENTIRE_AGREEMENT_CLAUSE
The Entire Agreement clause states that the agreement supersedes and makes void any prior arrangements, regardless of their form: the contract takes precedence over anything else or, in particular instances, it incorporates all previous agreements.
The Entire Agreement clause is extracted in the Entire_Agreement class of the ENTIRE_AGREEMENT_CLAUSE group.
For example, considering the following fragment:
the corresponding extraction could be like this:
"extractions": [
...
{
"fields": [
{
"name": "Entire_Agreement",
"positions": [
{
"end": 25663,
"geometry": [
{
"box": [
429,
143,
502,
157
],
"page": 8,
"pageHeight": 1170,
"pageWidth": 827
}
],
"score": 1,
"start": 25650
}
],
"score": 1,
"value": "This Agreement contains the entire understanding of the parties with respect to the subject matter hereof and may be amended only by an agreement in writing executed by the parties hereto."
}
],
"namespace": "contract_analytics",
"template": "ENTIRE_AGREEMENT_CLAUSE"
}
...
]
Output structure
The model output has the same structure as any other model and is affected by the functional properties of the workflow block.
The peculiar parts of the output are the result of categorization, i.e. the categories
array, and the result of information extraction, i.e. the extractions
array.
-
- DBA = doing business as
- AKA = also known as
- FKA = formerly known as