Use case · Extraction primitive

Extract any table → CSV

Point Linda at any HTML table — your CRM, an admin grid, a wiki, a third-party SaaS — and have it return clean CSV. Universal table extractor via the linda.extract() primitive.

  • linda.extract()
  • PageMount
  • schema validation

Try it live → Run the table-extract demo — point Linda at a mock invoice table.

The shape

Your CRM exports tables as PDF. Your admin tool has a “download CSV” button that crashes on 10K rows. Your team copy-pastes from Excel grids. Linda’s extract primitive solves this in 10 lines.

Code

import { Linda } from "@linda/core";

const linda = new Linda({
  transport: { mode: "browser", provider: "anthropic", apiKey: "..." },
});

const rows = await linda.extract({
  selector: "table.invoices",
  schema: {
    invoice_id: "string",
    customer: "string",
    amount_usd: "number",
    due_date: "date",
    status: "enum: paid|pending|overdue",
  },
});

// rows is a typed array. Pipe to CSV, save, ship.

Why this works

linda.extract() is a thin wrapper over the agent loop with a constrained output schema. The model reads the DOM, sees the table, and returns rows that match your schema. Linda validates against the schema — if a row doesn’t fit, it’s flagged for review.

When it shines

  • Legacy admin tools that don’t export.
  • SaaS tables in tabs you don’t own (paired with @linda/extension).
  • Sales-ops batches — extract from 50 pages, dedupe, hand to ops.
  • Audit trails — extract the page state at a moment, persist as CSV.

Linda.act() and linda.observe()

The same primitive family includes:

  • linda.act(prompt) — let the agent take actions on the page (click, fill).
  • linda.observe(question) — ask a question about the current page.
  • linda.extract(schema) — pull structured data out.

These are the Playwright primitives, but user-side: the user owns the browser and consents. They’re useful when you don’t need a full chat — just one shot of agent work.

FAQ

Does this work on tables in iframes?

Only same-origin iframes. Cross-origin iframes can't be read from the parent due to browser security.

What about virtualized grids (e.g., AG-Grid)?

Yes — Linda scrolls the grid to materialize all rows. Configurable via the scrollDepth option.

Ship an agent-driven flow this afternoon.

Install Linda, paste a config, and your form turns into an agent that fills its own inputs.