Extracting data from shop drawings
Fabricators and subcontractors draw shop drawings to show exactly how they will build their part of a project, each in its own CAD standards and title block. They pass through the general contractor to the architect and engineer for review, dozens to hundreds per project, as PDF submittals in a project management portal.
Submittal tracking needs the project, the sheet number and revision, the reviewer's stamp status, and the fabrication schedule rows. A submittal log in a construction management platform records each review outcome, and the fabricator releases approved schedules to the shop floor.

What makes shop drawings hard
Several stamps on one sheet
The architect, engineer and contractor each stamp the same sheet, each ticking its own outcome such as Reviewed or Reviewed as Noted.
Sparse fabrication schedules
A fabrication schedule, such as a bar list, runs to many narrow columns, and each row fills only those its shape uses.
Small type on large sheets
Large-format CAD sheets set title blocks and schedules in small type, often plotted as vector strokes the PDF stores as geometry.
Parse, extract, verify
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.
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.
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.
One shop drawing, end to end
About this document: A reinforcing steel shop drawing submittal for a school music room addition in Ottawa, drawn by AGF Steel Ottawa. The general contractor posted it with the project's returned submittals. Its two landscape CAD sheets cover the footings and the foundation, each with a bar list, review stamps and a title block. Page 1 is featured. Individuals' names and contact details were replaced with stand-ins.
Processing objective: The objective is to log the submittal: which job and contract the sheet belongs to, and how the structural engineer ruled on it. The first bar list row shows what the fabricator will cut. Each value grounds to its own cell on the sheet.
Demonstration fields: Project, Fabricator contract number, Engineer review status, Bar quantity (first bar list row), Bar mark (first bar list row)
The document
2 of 2 pages
Page 1shown below
Page 2
Where each value came from

project_name
{
"value": "TURNBULL SCHOOL MUSIC ROOM ADDITION",
"page": 1,
"range": {
"end": 11982,
"start": 11936
},
"box": {
"xmin": 0.87406,
"ymin": 0.83079,
"xmax": 0.98264,
"ymax": 0.85698
}
}fabricator.contract_number
{
"value": "CP9667F",
"page": 1,
"range": {
"end": 12475,
"start": 12452
},
"box": {
"xmin": 0.91784,
"ymin": 0.94887,
"xmax": 0.95076,
"ymax": 0.97501
}
}sheets[0].engineer_review.status
{
"value": "REVIEWED AS NOTED",
"page": 1,
"range": {
"end": 7983,
"start": 7930
},
"box": {
"xmin": 0.85282,
"ymin": 0.7809,
"xmax": 0.89469,
"ymax": 0.80408
}
}sheets[0].bar_list[0].quantity
{
"value": 32,
"page": 1,
"range": {
"end": 2405,
"start": 2403
},
"box": {
"xmin": 0.42643,
"ymin": 0.69303,
"xmax": 0.44137,
"ymax": 0.708
}
}sheets[0].bar_list[0].bar_mark
{
"value": "A5",
"page": 1,
"range": {
"end": 2437,
"start": 2435
},
"box": {
"xmin": 0.47306,
"ymin": 0.69303,
"xmax": 0.5005,
"ymax": 0.708
}
}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
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.
