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

Extracting data from QoE reports

An accounting firm prepares a quality of earnings report for the seller before a sale process, or for the buyer after a letter of intent. Each firm builds its own deck or memo. A private equity deal team and its lenders review one for every company that reaches diligence, downloaded from a virtual data room.

The deal team needs reported EBITDA, each adjustment with its rationale, adjusted EBITDA and the net working capital average. Adjusted EBITDA times the agreed multiple sets the price in the valuation model, and the working capital average sets the peg written into the purchase agreement.

Page 8 of a sample Quality of Earnings Report, with extracted values outlined
51,786Markdown characters
1,884parse blocks
92fields extracted
The problem

What makes quality of earnings reports hard

Numbers in tables, reasons in prose

A QoE bridge pairs a ruled table of adjustments with written commentary, and each adjustment's rationale sits in the prose, apart from its amount.

One figure, several scales

Tables print whole dollars or thousands under a units header, while the findings prose rounds the same figures to shorthand such as $8.7M.

Fiscal years and a TTM column

The bridge runs several fiscal years and a trailing twelve months in adjacent columns, and a single add-back can appear in several of them.

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 quality of earnings report, end to end

About this document: A sample quality of earnings report published by QOE Prep, a CPA firm, covering a fictional fixed-wireless internet provider. Its 25 landscape pages are printed from a slide deck: key findings, the EBITDA bridge, revenue and vendor trends, net working capital, and proof of cash. Page 8 is the bridge slide, featured here. One marketing page of customer reviews was removed before publication, so the slide footer reads Page 9.

Processing objective: The objective is to walk the trailing twelve months from reported to adjusted EBITDA. The bridge prints four period columns, and the trailing column sits rightmost, beside a panel of commentary. One diligence add-back, a legal settlement, is picked out from the ten adjustment lines.

Demonstration fields: Reported EBITDA (TTM), Total management adjustments (TTM), Legal settlement add-back (TTM), Adjusted EBITDA (TTM), Adjusted EBITDA margin (TTM)

The document

4 of 25 pages
  • Page 1 of the sample Quality of Earnings ReportPage 1
  • Page 8 of the sample Quality of Earnings ReportPage 8shown below
  • Page 9 of the sample Quality of Earnings ReportPage 9
  • Page 16 of the sample Quality of Earnings ReportPage 16

Where each value came from

Page 8 of the sample Quality of Earnings Report, with every featured field outlined
Reported EBITDA (TTM)ebitda_bridge.periods[3].reported_ebitda
619,882
The region of the sample Quality of Earnings Report containing Reported EBITDA (TTM), with the extracted value outlined
extraction_metadata["ebitda_bridge.periods[3].reported_ebitda"]
{
  "value": 619882,
  "page": 8,
  "range": {
    "end": 9254,
    "start": 9247
  },
  "box": {
    "xmin": 0.4805,
    "ymin": 0.35363,
    "xmax": 0.53373,
    "ymax": 0.37044
  }
}
Total management adjustments (TTM)ebitda_bridge.periods[3].total_management_adjustments
820,085
The region of the sample Quality of Earnings Report containing Total management adjustments (TTM), with the extracted value outlined
extraction_metadata["ebitda_bridge.periods[3].total_management_adjustments"]
{
  "value": 820085,
  "page": 8,
  "range": {
    "end": 9893,
    "start": 9886
  },
  "box": {
    "xmin": 0.48048,
    "ymin": 0.48004,
    "xmax": 0.53375,
    "ymax": 0.49677
  }
}
Legal settlement add-back (TTM)ebitda_bridge.adjustments[9].ttm_amount
285,000
The region of the sample Quality of Earnings Report containing Legal settlement add-back (TTM), with the extracted value outlined
extraction_metadata["ebitda_bridge.adjustments[9].ttm_amount"]
{
  "value": 285000,
  "page": 8,
  "range": {
    "end": 10651,
    "start": 10644
  },
  "box": {
    "xmin": 0.48046,
    "ymin": 0.62282,
    "xmax": 0.53376,
    "ymax": 0.63853
  }
}
Adjusted EBITDA (TTM)ebitda_bridge.periods[3].adjusted_ebitda
1,654,372
The region of the sample Quality of Earnings Report containing Adjusted EBITDA (TTM), with the extracted value outlined
extraction_metadata["ebitda_bridge.periods[3].adjusted_ebitda"]
{
  "value": 1654372,
  "page": 8,
  "range": {
    "end": 10873,
    "start": 10864
  },
  "box": {
    "xmin": 0.48045,
    "ymin": 0.65519,
    "xmax": 0.53377,
    "ymax": 0.67202
  }
}
Adjusted EBITDA margin (TTM)ebitda_bridge.periods[3].adjusted_ebitda_margin_percent
20.1
The region of the sample Quality of Earnings Report containing Adjusted EBITDA margin (TTM), with the extracted value outlined
extraction_metadata["ebitda_bridge.periods[3].adjusted_ebitda_margin_percent"]
{
  "value": 20.1,
  "page": 8,
  "range": {
    "end": 11126,
    "start": 11121
  },
  "box": {
    "xmin": 0.48044,
    "ymin": 0.70509,
    "xmax": 0.53377,
    "ymax": 0.72286
  }
}

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

Quality of Earnings Report processing highlights

Reported-to-adjusted EBITDA bridge
Management and diligence adjustments
Rationale for each adjustment
Trailing twelve month columns
Parenthesized negatives as numbers
Dashes read as zero
Margins as numbers
Net working capital analysis
DSO, DIO and DPO
Shorthand amounts in prose
Landscape slide decks
Bounding box for every value
FAQs

Questions, answered

Yes. Give each adjustment a category field in your schema. Every line in the bridge comes back with its amount per period and the section it sits under, management or due diligence, read from the table's own subheadings.

When the field is typed as a number, a parenthesized amount comes back negative and a dash comes back as zero. Margins printed with a percent sign return as plain numbers, ready for the valuation model.

Yes. Key findings often state amounts as $850K or ($300K). Typed as numbers, those come back as 850000 and -300000, on the same scale as the full figures in the tables.

Each extracted value carries the character ranges it was quoted from in the parsed Markdown. The Ground API turns those ranges into a page and a bounding box. A reviewer opens the slide and sees each amount boxed in its own cell.

Start extracting quality of earnings report data

Reliable, structured outputs with full traceability in minutes