Skip to content
jeff.legal.legal-clausesv1.4.0

Contract clause classification

Classifies a single contract provision by clause type, such as governing law, notices or confidentiality.

Open in playground

Example

Context

document
A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)

Input

This Agreement and any dispute arising out of or in connection with it shall be governed by and construed in accordance with the laws of the State of Delaware, without regard to its conflict of laws principles.

Answer (JSON)
value governing_laws, confidence 0.93
Top options
  1. governing_laws 0.93
  2. applicable_laws 0.055
  3. qualifications 0.001

The provision names the law that governs the contract, so its clause type is governing_laws.

Open in playground

import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.legal.legal-clauses.clause_type", context={        "document": "A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)",    })     decision = decide("This Agreement and any dispute arising out of or in connection with it shall be governed by and construed in accordance with the laws of the State of Delaware, without regard to its conflict of laws principles.")     print(decision.value, decision.confidence)

More examples

  • How notices must be givenanswer notices · confidence 0.998

    Context

    document
    A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)

    Input

    All notices under this Agreement shall be in writing and shall be deemed given when delivered by hand, or three business days after being sent by certified mail, return receipt requested, to the addresses set out on the signature page.

    Answer (JSON)
    value notices, confidence 0.998
    Top options
    1. notices 0.998
    2. intellectual_property 0
    3. no_defaults 0

    The provision says how notices must be given and when they count as received, so its type is notices.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.legal.legal-clauses.clause_type", context={        "document": "A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)",    })     decision = decide("All notices under this Agreement shall be in writing and shall be deemed given when delivered by hand, or three business days after being sent by certified mail, return receipt requested, to the addresses set out on the signature page.")     print(decision.value, decision.confidence)
  • Keeping the other side's information secretanswer confidentiality · confidence 0.973

    Context

    document
    A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)

    Input

    Each party shall hold in confidence all non-public information received from the other party in connection with this Agreement and shall not disclose it to any third party except its advisers who are bound by similar obligations.

    Answer (JSON)
    value confidentiality, confidence 0.973
    Top options
    1. confidentiality 0.973
    2. disclosures 0.009
    3. general 0.003

    Each party must keep the other's non-public information secret, so the type is confidentiality.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.legal.legal-clauses.clause_type", context={        "document": "A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)",    })     decision = decide("Each party shall hold in confidence all non-public information received from the other party in connection with this Agreement and shall not disclose it to any third party except its advisers who are bound by similar obligations.")     print(decision.value, decision.confidence)
  • An invalid term does not sink the restanswer severability · confidence 0.972

    Context

    document
    A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)

    Input

    If any provision of this Agreement is held invalid or unenforceable, the remaining provisions shall continue in full force and effect.

    Answer (JSON)
    value severability, confidence 0.972
    Top options
    1. severability 0.972
    2. interpretations 0.011
    3. amendments 0.002

    An invalid provision leaves the rest of the contract standing, so the type is severability.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.legal.legal-clauses.clause_type", context={        "document": "A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)",    })     decision = decide("If any provision of this Agreement is held invalid or unenforceable, the remaining provisions shall continue in full force and effect.")     print(decision.value, decision.confidence)
  • Signing in separate copiesanswer counterparts · confidence 0.994

    Context

    document
    A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)

    Input

    This Agreement may be executed in any number of counterparts, each of which shall be deemed an original, and all of which together shall constitute one and the same instrument.

    Answer (JSON)
    value counterparts, confidence 0.994
    Top options
    1. counterparts 0.994
    2. miscellaneous 0.002
    3. effective_dates 0

    The contract may be signed in separate copies that together count as one, so the type is counterparts.

    Open in playground

    import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.legal.legal-clauses.clause_type", context={        "document": "A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)",    })     decision = decide("This Agreement may be executed in any number of counterparts, each of which shall be deemed an original, and all of which together shall constitute one and the same instrument.")     print(decision.value, decision.confidence)

Use when

  • You have split a contract into provisions and need a type for each one.
  • Your input consists of commercial or employment agreements in English.

Avoid when

  • You need legal advice or an assessment of fairness or enforceability; this adapter only identifies the clause type.
  • You need to process an entire contract in one call; supply one provision at a time.

Context and input

FieldKindDescription
provision
inputOne provision (a clause) of a contract, as plain text.
document
contextWhat the provision comes from, in a few words (for example "A commercial contract filed with the U.S. Securities and Exchange Commission (SEC)").

Functions

KeyInterfaceInstructionsLabels
clause_typeclassifyWhich type of clause is this contract provision? Choose the clause type that best matches the main topic of the provision.adjustments, agreements, amendments, anti_corruption_laws, applicable_laws, approvals, arbitration, assignments, assigns, authority, authorizations, base_salary, benefits, binding_effects, books, brokers, capitalization, change_in_control, closings, compliance_with_laws, confidentiality, consent_to_jurisdiction, consents, construction, cooperation, costs, counterparts, death, defined_terms, definitions, disability, disclosures, duties, effective_dates, effectiveness, employment, enforceability, enforcements, entire_agreements, erisa, existence, expenses, fees, financial_statements, forfeitures, further_assurances, general, governing_laws, headings, indemnifications, indemnity, insurances, integration, intellectual_property, interests, interpretations, jurisdictions, liens, litigations, miscellaneous, modifications, no_conflicts, no_defaults, no_waivers, non_disparagement, notices, organizations, participations, payments, positions, powers, publicity, qualifications, records, releases, remedies, representations, sales, sanctions, severability, solvency, specific_performance, submission_to_jurisdiction, subsidiaries, successors, survival, tax_withholdings, taxes, terminations, terms, titles, transactions_with_affiliates, use_of_proceeds, vacations, venues, vesting, waiver_of_jury_trials, waivers, warranties, withholdings

How it was measured

Test accuracy: the share of test rows whose top answer was right.

  • 84.2% on real contract clauses filed with the US SEC, labelled with LEDGAR's 100 clause types (9,570 rows). held-out real documents
  • 82.1% on clause types or wordings new to training (7,199 rows). held-out real documents

When confident

From the calibration set: at or above the threshold confidence, how often the answer is right, and how often the adapter is that confident. Below it, escalate.

FunctionRight when confidentConfident onThresholdCalibration rows
clause_type95.0%67.8%0.81922

Base: Jeff v1.4. Adapter trained: 25 October 2026.

Base

jeff-base v1.4

Call it

jeff.legal.legal-clauses.clause_type, with placeholders for its input and context.

import os import jeff with jeff.Jeff.remote("https://api.jeffhub.ai", token=os.environ["JEFF_API_KEY"], timeout_s=30) as client:     decide = client.function("jeff.legal.legal-clauses.clause_type", context={        "document": "<document>",    })     decision = decide("<provision>")     print(decision.value, decision.confidence)

Download

Weights: mstrasser/jeff-adapter-legal-clauses (v1.4)

Licence: Apache-2.0