Use case
Google DriveDropboxGoogle SheetsAGNT

Data extraction from any document, into clean rows

PDFs, invoices, emails, web pages — agents extract the fields you define and write them where they belong, flagging anything they are not sure about.

What this actually involves

The jobPDFs, invoices, emails, web pages — agents extract the fields you define and write them where they belong, flagging anything they are not sure about.
Tools it needsGoogle Drive, Dropbox, Google Sheets, Airtable, PostgreSQL
Setup4 steps, about ten minutes
Runs whenSomething happens in Google Sheets
ApprovalYours, per category — nothing is sent on your behalf unless you say so
Where it runsYour own machine. Credentials stay in a local vault.

What the agent actually does

Clean rows, and a flag on anything uncertain

Scanned PDFs, email bodies, spreadsheets that were never designed to be parsed, web pages, attachments in formats a vendor invented years ago. The agent reads for meaning, so a new supplier’s layout does not require a new parser.

Your schema

You define the fields and their types; the agent fills them. Where a value needs deriving rather than copying — a total that must be computed, a date in an ambiguous format — it does the work and records how it arrived at the answer.

Uncertainty is flagged, not hidden

Anything the agent is unsure about is marked for review rather than guessed. A field flagged low-confidence costs somebody five seconds; a field silently wrong costs a great deal more, much later.

The tools this job needs

Google Drive

Where the work arrives. Where the documents live — and pile up. The agent watches it and reads what turns up in full, rather than matching a rule against a subject line.

Dropbox

Context the agent pulls in before deciding. Shared files that arrive needing processing. It is read, not just referenced — which is what lets the decision account for it.

Google Sheets

Context the agent pulls in before deciding. The database every team already has open. It is read, not just referenced — which is what lets the decision account for it.

Airtable

Where the result lands. Structured records with an API worth automating. Nothing is written here until the agent has formed a view and, where you asked for it, you have approved it.

Get this agent

Document Extractor

PDFs, invoices, emails, web pages — agents extract the fields you define and write them where they belong, flagging anything they are not sure about.

Runs on your own machine. Asks for Google Drive, Google Sheets and nothing else — you approve the connection, and the agent inherits whichever AI model you already use.

You can see exactly what it did

Nothing happens behind your back.

Every run leaves a receipt: what the agent read, which tools it called, what it decided and why, and precisely what it changed. Anything irreversible — sending, paying, publishing, deleting — waits for you to approve it. It runs on your own machine, with your own credentials, and the whole trail is yours to read afterwards. The point is not that you trust it. The point is that you never have to.

Why template parsers keep breaking

Traditional extraction encodes positions and patterns: the total is in the box at these coordinates, the reference matches this expression. It works beautifully for the documents it was built against and fails on the next supplier, the next redesign, the next scanned copy that arrived slightly rotated. Maintenance grows with the number of sources, which is exactly backwards from what you want.

Reading for meaning changes the maintenance curve

An agent locates the invoice total because it understands what an invoice total is, not because it knows where the last one was printed. New formats generally work on the first attempt, and the ones that do not are handled by improving a description rather than writing another parser. The cost of adding the fiftieth source is roughly the cost of adding the second.

Confidence is the feature that makes it usable

The reason extraction pipelines get abandoned is rarely accuracy in aggregate — it is that nobody can tell which rows to trust. An agent that reports per-field confidence turns the output into something a person can work with: accept the clean rows, spend attention only on the flagged ones, and watch the flagged proportion fall as the descriptions improve.

Build it in AGNT

  1. Connect the source — Gmail, Drive, Dropbox, or a folder the documents land in.
  2. Define your fields in plain language, including what makes a value suspicious.
  3. Choose the destination: Google Sheets, Airtable, PostgreSQL, or your own system by API.
  4. Run a batch of real documents, check the flagged rows, and tighten the field descriptions.

Copy this workflow

The build is smaller than it sounds. One trigger, one agent that reads and decides, one action — and a recorded outcome either way, including the times it decides to leave something alone.

Data extraction from any document, into clean rows: watch google sheets → read it and decide → act in google drive TRIGGER google-sheets-new-row Watch Google Sheets Fires the moment it happens. ACTION agnt-agent Read it and decide Judged against your own rules. ACTION google-drive-api Act in Google Drive Runs LIST_FILES.
Runs on your own machine against your own Google Drive account. Every step writes a receipt you can read afterwards.
Data extraction from any document, into clean rowspaste into a new workflow
{
  "id": "12588c7a-ba6f-48f3-ad2f-9b4367dc55e6",
  "name": "Data extraction from any document, into clean rows",
  "nodes": [
    {
      "id": "4adc892c-55d8-4e93-a533-8ce3107335fe",
      "text": "Watch Google Sheets",
      "x": 512,
      "y": 144,
      "isEditing": false,
      "type": "google-sheets-new-row",
      "icon": "connect",
      "category": "trigger",
      "isSelected": false,
      "parameters": {},
      "description": "Listen for new rows added to a specified Google Sheet and trigger the workflow when a new row is detected.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "b769d4eb-7988-4dfd-a804-d5aed4c910b6",
      "text": "Read it and decide",
      "x": 512,
      "y": 336,
      "isEditing": false,
      "type": "agnt-agent",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "instructions": "Scanned PDFs, email bodies, spreadsheets that were never designed to be parsed, web pages, attachments in formats a vendor invented years ago. The agent reads for meaning, so a new supplier’s layout does not require a new parser."
      },
      "description": "PDFs, invoices, emails, web pages — agents extract the fields you define and write them where they belong, flagging anything they are not sure about.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    },
    {
      "id": "78afe873-b983-4de0-ae7d-bec78dd9c394",
      "text": "Act in Google Drive",
      "x": 512,
      "y": 528,
      "isEditing": false,
      "type": "google-drive-api",
      "icon": "connect",
      "category": "action",
      "isSelected": false,
      "parameters": {
        "action": "LIST_FILES"
      },
      "description": "Interact with Google Drive to perform various operations on files and folders.",
      "error": null,
      "isActive": false,
      "output": null,
      "outputs": {}
    }
  ],
  "edges": [
    {
      "id": "132fb636-0d4a-4d95-aa28-759be40bf8fa",
      "start": {
        "id": "4adc892c-55d8-4e93-a533-8ce3107335fe",
        "type": "output"
      },
      "end": {
        "id": "b769d4eb-7988-4dfd-a804-d5aed4c910b6",
        "type": "input"
      },
      "startX": 800,
      "startY": 168,
      "endX": 512,
      "endY": 360
    },
    {
      "id": "a59445fc-0637-4684-af00-1d841a6d9cd4",
      "start": {
        "id": "b769d4eb-7988-4dfd-a804-d5aed4c910b6",
        "type": "output"
      },
      "end": {
        "id": "78afe873-b983-4de0-ae7d-bec78dd9c394",
        "type": "input"
      },
      "startX": 800,
      "startY": 360,
      "endX": 512,
      "endY": 552
    }
  ],
  "zoomLevel": 1,
  "canvasOffsetX": 0,
  "canvasOffsetY": 0,
  "isTinyNodeMode": false
}

Get this running today

Free, local, and it asks for Google Drive, Dropbox, Google Sheets, Airtable, PostgreSQL and nothing else.

Common questions

Does it work on scanned documents?

Yes. Scans and photographs are handled through vision-capable models, including the awkward cases of skewed pages and mixed print and handwriting.

What happens to a field it cannot find?

It is returned empty and flagged, never invented. An honest gap is recoverable; a plausible fabrication in a financial system is not.

Can it validate as well as extract?

Yes — cross-checks like "line items must sum to the stated total" are exactly the kind of rule worth adding, and failures become exceptions for a human rather than silent bad data.

Give AI a job. Get the proof.