Take a live AI-guided product tour with Lando.Launch AI demo
Document type

Extracting data from credit agreements

Lenders' counsel drafts each credit agreement on its own form, from a few dozen pages for a bilateral revolver to well over a hundred for a syndicated loan. Loan operations teams, credit funds and acquirers each review hundreds. Most arrive as executed PDFs from counsel or a data room, or as exhibits to SEC filings.

Review needs the parties, the commitment amount, the margin, the fees, the maturity and the financial covenants. A loan servicing system boards the facility from those, and an acquirer's debt schedule models its interest and payoff.

Page 6 of a sample Credit Agreement, with extracted values outlined
218,087Markdown characters
947parse blocks
31fields extracted
The problem

What makes credit agreements hard

Terms live in the definitions

Each economic term is a defined term, so the margin sits in a definition pages away from the interest section that applies it.

Pricing set by a grid

The applicable margin often steps with a leverage ratio or credit rating, printed as a grid of pricing levels in basis points.

Amendments rewrite the terms

A facility is amended several times over its life. Each amendment restates only the sections it changes, so current terms span several documents.

How it works

Parse, extract, verify

1

Parse

Parse turns the document into reading-order Markdown and a hierarchy of blocks (text, tables, figures), and grounds each block to its exact location on the page.

2

Extract

You define the fields in a JSON schema, and Extract returns their values in a consistent, structured format, each linked back to where it appears in the Markdown.

3

Verify

Each value links back to where it appears, down to the character range in the Markdown, and the page and bounding box in the source document, so every result can be verified.

Worked example

One credit agreement, end to end

About this document: A revolving credit agreement under which Truist Bank and STI Institutional & Government, Inc. lend to the Hillsborough County Aviation Authority. The Authority runs Tampa International Airport and publishes the agreement as a public record. It runs to 76 portrait pages: the agreement itself, a scanned signature page carrying the Authority's seal, and exhibits including two forms of note. Page 6 is featured.

Processing objective: The objective is to establish who the deal is between, and the date it carries, from the agreement's opening sentence. Truist Bank appears there as a lender and again as the agent, and each role grounds to its own line.

Demonstration fields: Agreement date, Borrower, Lender (bank), Lender (STI), Agent

The document

4 of 76 pages
  • Page 1 of the sample Credit AgreementPage 1
  • Page 6 of the sample Credit AgreementPage 6shown below
  • Page 7 of the sample Credit AgreementPage 7
  • Page 12 of the sample Credit AgreementPage 12

Where each value came from

Page 6 of the sample Credit Agreement, with every featured field outlined
Agreement dateagreement_date
April 20, 2020
The region of the sample Credit Agreement containing Agreement date, with the extracted value outlined
extraction_metadata["agreement_date"]
{
  "value": "April 20, 2020",
  "page": 6,
  "range": {
    "end": 8761,
    "start": 8675
  },
  "box": {
    "xmin": 0.11501,
    "ymin": 0.15724,
    "xmax": 0.88699,
    "ymax": 0.17462
  }
}
Borrowerborrower.name
Hillsborough County Aviation Authority
The region of the sample Credit Agreement containing Borrower, with the extracted value outlined
extraction_metadata["borrower.name"]
{
  "value": "Hillsborough County Aviation Authority",
  "page": 6,
  "range": {
    "end": 8761,
    "start": 8675
  },
  "box": {
    "xmin": 0.11501,
    "ymin": 0.15724,
    "xmax": 0.88699,
    "ymax": 0.17462
  }
}
Lender (bank)lenders[0].name
Truist Bank
The region of the sample Credit Agreement containing Lender (bank), with the extracted value outlined
extraction_metadata["lenders[0].name"]
{
  "value": "Truist Bank",
  "page": 6,
  "range": {
    "end": 8865,
    "start": 8762
  },
  "box": {
    "xmin": 0.11494,
    "ymin": 0.1747,
    "xmax": 0.88646,
    "ymax": 0.19239
  }
}
Lender (STI)lenders[1].name
STI Institutional & Government, Inc.
The region of the sample Credit Agreement containing Lender (STI), with the extracted value outlined
extraction_metadata["lenders[1].name"]
{
  "value": "STI Institutional & Government, Inc.",
  "page": 6,
  "range": {
    "end": 8964,
    "start": 8866
  },
  "box": {
    "xmin": 0.11454,
    "ymin": 0.19235,
    "xmax": 0.88662,
    "ymax": 0.20979
  }
}
Agentagent
Truist Bank
The region of the sample Credit Agreement containing Agent, with the extracted value outlined
extraction_metadata["agent"]
{
  "value": "Truist Bank",
  "page": 6,
  "range": {
    "end": 9061,
    "start": 8965
  },
  "box": {
    "xmin": 0.114,
    "ymin": 0.20931,
    "xmax": 0.80783,
    "ymax": 0.22776
  }
}

How to try it yourself

Everything on this page is reproducible. The sample, its schema, and the Parse and Extract API outputs are published. You can repeat the same two calls from whichever surface you already build on.

  • Claude Skilldescribe the job; the agent writes it
  • CLIno code at all
  • MCPexpose ADE docs as an agent tool
  • REST APIany language
  • Pythonlandingai-ade
  • TypeScriptlandingai-ade
Why LandingAI?

Documents into data

Accurate

The best accuracy on the difficult documents other tools get wrong, such as messy scans, complicated tables, checkboxes and handwriting.

Auditable

Every answer cites its sources. Values come back with an audit trail (page, bounding box, character range) so a human can review them.

Agentic

Applies multi-step reasoning, and plans before it acts. Handles documents it has never seen before and adapts to variations.

API-first

Composable APIs that drop into any tech stack and can be called from anywhere. Easy to build on and embed in your pipelines and products.

Affordable

Cost-competitive rates with complete price transparency. Spend controls before you run, and every job reports its exact cost.

Enterprise-grade

Built for production and scale from day one. Fully observable and monitored, running securely in our cloud or yours.

Built for high-volume, high-throughput production

  • Zero data retention
  • Priority rate limits
  • Enhanced support
  • VPC and on-prem deployment

Available on Team and Enterprise plans. VPC and on-prem deployment require an Enterprise plan.

Compare plans
Capabilities

Credit Agreement processing highlights

Borrower, lenders and agent
Commitment amounts
Applicable margin and pricing grids
Benchmark and default rates
Unused commitment fees
Defined terms across sections
Covenants and events of default
Governing law and venue
Exhibits and forms of note
Scanned signature pages
Hundreds of pages per agreement
Bounding box for every value
FAQs

Questions, answered

Yes. Parse Jobs accepts PDFs of up to 6,000 pages on the standard tier, and Extract accepts Markdown of any size. A complete agreement with its schedules and exhibits parses as one document.

To its definition. Economic terms such as the margin or the unused fee ground to the line that defines them. That holds even when the agreement mentions them in many other sections.

Yes. Describe each role in the schema, and the bank comes back in both. Each role is grounded to the clause that assigns it, such as the "as agent" phrase in the opening paragraph.

Signatures, stamps and seals parse as attestation blocks, labeled SIGNED, E-SIGNED, STAMPED or SEALED. Readable text inside them is transcribed, and a signature that cannot be read is marked ILLEGIBLE_SIGNATURE.

Every extracted value carries the character range it was quoted from in the parsed Markdown. The Ground API maps that range to a page and a bounding box, so a reviewer sees each term on the line that states it.

Start extracting credit agreement data

Reliable, structured outputs with full traceability in minutes