extract.do

Turn Unstructured Content into Structured Data

Extract tables, forms, invoices, and custom data from PDFs, images, and documents using AI. Convert to JSON, CSV, or custom schemas with automatic validation.

Read the docs
index.tsextract.do
import { Extract } from 'extract.do' // Extract invoices from email attachmentson.Email.with.Attachment(async $ => {  const invoice = await Extract.fromPDF({ file: $.Attachment.buffer, schema: $.InvoiceSchema })  await $.Database.insert.Invoice(invoice)  if (invoice.confidence < 0.9) $.HumanReview.queue({ invoice })}) // Scrape competitor pricing hourlyExtract.every.hour(async $ => {  const products = await Extract.fromHTML({ urls: $.Competitors.urls, parallel: 10 })  $.Analytics.track.CompetitorPricing(products)})

One of 48 primitives

extract.do sits in Agents: reason, research and act. Every .do shares one grammar, Business-as-Code, and one SDK.

Business

Goals, plans and the work itself

Agents

Reason, research and act

Workflows

Triggers, steps and functions

Data

Records, vocabulary and search

Insight

Measure, test and trace

Build

Ship from code, CLI or MCP

Frequently asked questions

Build your 1-person unicorn

Write the business. Agents run it around the clock.

Read the docs