Skip to content
jeff.reasoning.is-completev1.4.0

Document completeness check

Checks a set of documents against a checklist. Returns complete, incomplete or unclear, accounting for missing, expired, unsigned or incorrectly attributed documents.

Open in playground

Example

Context

context
organisation: A small business lender reviewer: Loan operations analyst pack_kind: Business loan application purpose: Check the application pack is complete before credit review review_date: 2 November 2026
checklist
- Signed loan application form (all pages) - Business bank statements for the last three months - Photo identification of every director - Latest annual accounts (only for businesses trading more than two years)

Input

case: {"name":"Ferngrove Bakery Ltd","reference":"APP-20931","trading_since":"March 2025","directors":["Priya Natarajan","Tom Okafor"]} documents_received: [{"kind":"Loan application form","date":"28 October 2026","pages":"4 of 4","signatures":"signed by Priya Natarajan"},{"kind":"Business bank statements","date":"July, August and September 2026","pages":"complete"},{"kind":"Passport","date":"valid until 2031","about":"Priya Natarajan"}]

Answer (JSON)
value incomplete, confidence 0.965
Top options
  1. incomplete 0.965
  2. complete 0.034
  3. unclear 0.001

The bakery has two directors but the pack holds photo identification for only one, so it is incomplete.

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.reasoning.is-complete.is_complete", context={        "context": {            "organisation": "A small business lender",            "reviewer": "Loan operations analyst",            "pack_kind": "Business loan application",            "purpose": "Check the application pack is complete before credit review",            "review_date": "2 November 2026",        },        "checklist": [            "Signed loan application form (all pages)",            "Business bank statements for the last three months",            "Photo identification of every director",            "Latest annual accounts (only for businesses trading more than two years)",        ],    })     decision = decide({        "case": {            "name": "Ferngrove Bakery Ltd",            "reference": "APP-20931",            "trading_since": "March 2025",            "directors": [                "Priya Natarajan",                "Tom Okafor",            ],        },        "documents_received": [            {                "kind": "Loan application form",                "date": "28 October 2026",                "pages": "4 of 4",                "signatures": "signed by Priya Natarajan",            },            {                "kind": "Business bank statements",                "date": "July, August and September 2026",                "pages": "complete",            },            {                "kind": "Passport",                "date": "valid until 2031",                "about": "Priya Natarajan",            },        ],    })     print(decision.value, decision.confidence)

More examples

  • Director's passport that has expiredanswer incomplete · confidence 0.986

    Context

    context
    organisation: A small business lender reviewer: Loan operations analyst pack_kind: Business loan application purpose: Check the application pack is complete before credit review review_date: 2 November 2026
    checklist
    - Signed loan application form (all pages) - Business bank statements for the last three months - Photo identification of every director - Latest annual accounts (only for businesses trading more than two years)

    Input

    case: {"name":"Quayside Bikes Ltd","reference":"APP-20945","trading_since":"June 2025","directors":["Ewan Gallagher"]} documents_received: [{"kind":"Loan application form","date":"30 October 2026","pages":"4 of 4","signatures":"signed by Ewan Gallagher"},{"kind":"Business bank statements","date":"August, September and October 2026","pages":"complete"},{"kind":"Passport","date":"expired on 3 March 2026","about":"Ewan Gallagher"}]

    Answer (JSON)
    value incomplete, confidence 0.986
    Top options
    1. incomplete 0.986
    2. complete 0.013
    3. unclear 0.001

    The only director's passport expired before the review, so the pack is incomplete.

    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.reasoning.is-complete.is_complete", context={        "context": {            "organisation": "A small business lender",            "reviewer": "Loan operations analyst",            "pack_kind": "Business loan application",            "purpose": "Check the application pack is complete before credit review",            "review_date": "2 November 2026",        },        "checklist": [            "Signed loan application form (all pages)",            "Business bank statements for the last three months",            "Photo identification of every director",            "Latest annual accounts (only for businesses trading more than two years)",        ],    })     decision = decide({        "case": {            "name": "Quayside Bikes Ltd",            "reference": "APP-20945",            "trading_since": "June 2025",            "directors": [                "Ewan Gallagher",            ],        },        "documents_received": [            {                "kind": "Loan application form",                "date": "30 October 2026",                "pages": "4 of 4",                "signatures": "signed by Ewan Gallagher",            },            {                "kind": "Business bank statements",                "date": "August, September and October 2026",                "pages": "complete",            },            {                "kind": "Passport",                "date": "expired on 3 March 2026",                "about": "Ewan Gallagher",            },        ],    })     print(decision.value, decision.confidence)
  • Trading start date not givenanswer unclear · confidence 0.977

    Context

    context
    organisation: A small business lender reviewer: Loan operations analyst pack_kind: Business loan application purpose: Check the application pack is complete before credit review review_date: 2 November 2026
    checklist
    - Signed loan application form (all pages) - Business bank statements for the last three months - Photo identification of every director - Latest annual accounts (only for businesses trading more than two years)

    Input

    case: {"name":"Brackenridge Florists Ltd","reference":"APP-20960","trading_since":"not stated on the application","directors":["Amara Osei"]} documents_received: [{"kind":"Loan application form","date":"31 October 2026","pages":"4 of 4","signatures":"signed by Amara Osei"},{"kind":"Business bank statements","date":"July, August and September 2026","pages":"complete"},{"kind":"Passport","date":"valid until 2030","about":"Amara Osei"}]

    Answer (JSON)
    value unclear, confidence 0.977
    Top options
    1. unclear 0.977
    2. incomplete 0.017
    3. complete 0.006

    The pack does not say when the firm started trading, which decides whether annual accounts are needed, so the answer is unclear.

    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.reasoning.is-complete.is_complete", context={        "context": {            "organisation": "A small business lender",            "reviewer": "Loan operations analyst",            "pack_kind": "Business loan application",            "purpose": "Check the application pack is complete before credit review",            "review_date": "2 November 2026",        },        "checklist": [            "Signed loan application form (all pages)",            "Business bank statements for the last three months",            "Photo identification of every director",            "Latest annual accounts (only for businesses trading more than two years)",        ],    })     decision = decide({        "case": {            "name": "Brackenridge Florists Ltd",            "reference": "APP-20960",            "trading_since": "not stated on the application",            "directors": [                "Amara Osei",            ],        },        "documents_received": [            {                "kind": "Loan application form",                "date": "31 October 2026",                "pages": "4 of 4",                "signatures": "signed by Amara Osei",            },            {                "kind": "Business bank statements",                "date": "July, August and September 2026",                "pages": "complete",            },            {                "kind": "Passport",                "date": "valid until 2030",                "about": "Amara Osei",            },        ],    })     print(decision.value, decision.confidence)
  • Application form nobody signedanswer incomplete · confidence 1

    Context

    context
    organisation: A small business lender reviewer: Loan operations analyst pack_kind: Business loan application purpose: Check the application pack is complete before credit review review_date: 2 November 2026
    checklist
    - Signed loan application form (all pages) - Business bank statements for the last three months - Photo identification of every director - Latest annual accounts (only for businesses trading more than two years)

    Input

    case: {"name":"Tern Valley Kayaks Ltd","reference":"APP-20967","trading_since":"May 2025","directors":["Luca Benedetti"]} documents_received: [{"kind":"Loan application form","date":"1 November 2026","pages":"4 of 4","signatures":"not signed"},{"kind":"Business bank statements","date":"August, September and October 2026","pages":"complete"},{"kind":"Passport","date":"valid until 2032","about":"Luca Benedetti"}]

    Answer (JSON)
    value incomplete, confidence 1
    Top options
    1. incomplete 1
    2. complete 0
    3. unclear 0

    The application form is in the pack but nobody signed it, so the pack is incomplete.

    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.reasoning.is-complete.is_complete", context={        "context": {            "organisation": "A small business lender",            "reviewer": "Loan operations analyst",            "pack_kind": "Business loan application",            "purpose": "Check the application pack is complete before credit review",            "review_date": "2 November 2026",        },        "checklist": [            "Signed loan application form (all pages)",            "Business bank statements for the last three months",            "Photo identification of every director",            "Latest annual accounts (only for businesses trading more than two years)",        ],    })     decision = decide({        "case": {            "name": "Tern Valley Kayaks Ltd",            "reference": "APP-20967",            "trading_since": "May 2025",            "directors": [                "Luca Benedetti",            ],        },        "documents_received": [            {                "kind": "Loan application form",                "date": "1 November 2026",                "pages": "4 of 4",                "signatures": "not signed",            },            {                "kind": "Business bank statements",                "date": "August, September and October 2026",                "pages": "complete",            },            {                "kind": "Passport",                "date": "valid until 2032",                "about": "Luca Benedetti",            },        ],    })     print(decision.value, decision.confidence)
  • Long-trading firm without its accountsanswer incomplete · confidence 0.982

    Context

    context
    organisation: A small business lender reviewer: Loan operations analyst pack_kind: Business loan application purpose: Check the application pack is complete before credit review review_date: 2 November 2026
    checklist
    - Signed loan application form (all pages) - Business bank statements for the last three months - Photo identification of every director - Latest annual accounts (only for businesses trading more than two years)

    Input

    case: {"name":"Hollin & Daughters Joinery Ltd","reference":"APP-20952","trading_since":"April 2011","directors":["Ruth Hollin"]} documents_received: [{"kind":"Loan application form","date":"29 October 2026","pages":"4 of 4","signatures":"signed by Ruth Hollin"},{"kind":"Business bank statements","date":"August, September and October 2026","pages":"complete"},{"kind":"Passport","date":"valid until 2033","about":"Ruth Hollin"}]

    Answer (JSON)
    value incomplete, confidence 0.982
    Top options
    1. incomplete 0.982
    2. complete 0.015
    3. unclear 0.003

    The firm has traded since 2011, so it needs its latest annual accounts, and they are missing, so the pack is incomplete.

    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.reasoning.is-complete.is_complete", context={        "context": {            "organisation": "A small business lender",            "reviewer": "Loan operations analyst",            "pack_kind": "Business loan application",            "purpose": "Check the application pack is complete before credit review",            "review_date": "2 November 2026",        },        "checklist": [            "Signed loan application form (all pages)",            "Business bank statements for the last three months",            "Photo identification of every director",            "Latest annual accounts (only for businesses trading more than two years)",        ],    })     decision = decide({        "case": {            "name": "Hollin & Daughters Joinery Ltd",            "reference": "APP-20952",            "trading_since": "April 2011",            "directors": [                "Ruth Hollin",            ],        },        "documents_received": [            {                "kind": "Loan application form",                "date": "29 October 2026",                "pages": "4 of 4",                "signatures": "signed by Ruth Hollin",            },            {                "kind": "Business bank statements",                "date": "August, September and October 2026",                "pages": "complete",            },            {                "kind": "Passport",                "date": "valid until 2033",                "about": "Ruth Hollin",            },        ],    })     print(decision.value, decision.confidence)

Use when

  • You need to assess whether a document submission meets a checklist.

Avoid when

  • You need an itemised list of missing documents; this adapter assesses the submission as a whole.

Context and input

FieldKindDescription
submission
inputThe pack received: an object with the case (name, reference) and the documents received, each described (kind, date, pages, signatures).
context
contextThe review: an object with the organisation, the reviewer, the kind of pack, its purpose and the date of the review.
checklist
contextThe checklist: a list of required documents and conditions (some only for some cases).

Functions

KeyInterfaceInstructionsLabels
is_completeclassifyIs the pack complete against the checklist? Go through every checklist line that applies to this case. A required document counts only if it is the kind of document listed (not a similar one), is about the subject of the case, has all its pages, is signed where the checklist asks for a signature, has not expired on the date of the review, and was issued within the period the checklist allows. A conditional line applies only when its circumstance holds for the case. complete: every applicable line is met (extra documents do not matter). incomplete: at least one applicable line is not met. unclear: no line is clearly unmet, but at least one cannot be decided from what is shown, for example a needed date, signature or page count is not visible, a document's kind cannot be told, or the case details do not say whether a conditional line's circumstance holds while its document is absent. Cover notes and labels may be misleading; judge the documents themselves.complete, incomplete, unclear

How it was measured

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

  • 96.8% on the in-house test (1,974 rows). in-house: same generator as the training data
  • 95.7% on a second in-house test of unseen cases (1,932 rows). in-house: same generator as the training data

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
is_complete98.0%96.7%0.791,941

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

Base

jeff-base v1.4

Call it

jeff.reasoning.is-complete.is_complete, 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.reasoning.is-complete.is_complete", context={        "context": "<context>",        "checklist": "<checklist>",    })     decision = decide("<submission>")     print(decision.value, decision.confidence)

Download

Weights: mstrasser/jeff-adapter-is-complete (v1.4)

Licence: Apache-2.0