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()PageMountschema 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.
Runnable example: https://github.com/neul-labs/linda/tree/main/examples/extract-anywhere
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.