Agent setup guide
Document Processor
Classifies document text, extracts the key fields and files invoices to Sheets and contracts to Notion.
What it does
Classifies document text, extracts the key fields and files invoices to Sheets and contracts to Notion.
- Receives each document's text through a webhook, from your document parser, scanner software, e-invoicing system or an email parser.
- AI identifies the type (invoice, receipt, credit note, purchase order, contract or other) and extracts the key fields exactly as written: counterparty, number, dates, currency, subtotal, tax, total, line items; for contracts, parties, dates, renewal, value and key terms.
- Checks the document's own arithmetic in code — never by the AI: each line's quantity × unit price, the line amounts against the subtotal, and total minus tax against the subtotal. The extracted figures stay exactly as printed; a mismatch is flagged and the document waits in Reviews.
- Flags anything else a person should check: missing invoice details, past-due dates, changed bank details, risky contract terms or garbled text. Flagged documents wait in Reviews.
- Financial documents are added as a row to your Google Sheets ledger; contracts become a page in your Notion contracts database; anything else is posted to Slack.
What it needs
- A paid plan (agents run live on paid plans).
- An AI provider key (Settings → AI Providers).
- Google Sheets, Notion and Slack, connected in Settings → Integrations.
- A tool that sends document text to a webhook URL (document parser, scanner software, email parser or your own system).
What it doesn't do
- It doesn't run OCR or read PDFs, images or scans directly; it needs the document's text.
- It doesn't watch a Gmail inbox or a Drive folder by itself.
- It doesn't process ID documents, pay invoices or post them to your accounting software.
- It doesn't give legal or tax advice; it reports what's written and what looks unusual.
Availability and plans
Available
Its workflow is built and tested, and every app it needs is live. You can get it and set it up now.
Included free on the Enterprise plan; on other paid plans it's a one-time purchase per workspace (the price is on the Agents page). The Agents page in the app always shows its current status.
Before you start
- A paid plan: agents run live, and the Free plan only runs Dry Runs.
- An AI provider key (OpenAI, Anthropic, Google and more) in Settings → AI Providers. AI usage is billed by your provider.
- These apps, connected in Settings → Integrations: Google Sheets, Notion and Slack.
- A form, app or system that can send each new item to a webhook URL (the agent starts from a webhook).
- About 20 minutes.
Set it up step by step
Get the agent first (buy it, or it's already yours when your plan includes it), then in Agents → My agents press “Set up this agent”. That creates the agent's workflow in your workspace (it counts towards your plan's workflow limit) and opens the canvas with a setup checklist above it. Each item links to the exact place to go and ticks itself off when it's done.
1. Connect your AI provider
The AI steps run on your own key (OpenAI, Anthropic, Google and more). Add one in Settings → AI Providers.
2. Connect Google Sheets
Connect the Google account that can edit your ledger spreadsheet (Settings → Integrations → Google Sheets).
3. Connect Notion
Connect the Notion workspace that holds your contracts database (Settings → Integrations → Notion) and share the database with it.
4. Connect Slack
Connect the Slack workspace your team uses (Settings → Integrations → Slack).
5. Pick your ledger sheet
Open “Add to the ledger sheet”, pick your account, paste the spreadsheet link and pick the tab.
| Setting | What to enter | In step |
|---|---|---|
| Google account (Sheets) | The Google account that can edit your ledger spreadsheet. Pick your connected Google Sheets account. | “Add to the ledger sheet” |
| Ledger spreadsheet | Paste the link of the spreadsheet financial documents are logged in. Give it the columns: Received, Type, Counterparty, Number, Issue date, Due date, Currency, Subtotal, Tax, Total, Issues, File. | “Add to the ledger sheet” |
| Ledger tab | The tab rows are added to, e.g. “Documents”. | “Add to the ledger sheet” |
6. Pick your contracts database
Open “Add to the contracts database” and pick your account and database.
| Setting | What to enter | In step |
|---|---|---|
| Notion account | The Notion workspace that holds your contracts database. Pick your connected Notion account. | “Add to the contracts database” |
| Contracts database | Pick the Notion database contracts are filed in (share it with the Fluxo Flow integration first). Its title column should be called “Name”, Notion's default. | “Add to the contracts database” |
7. Pick the Slack account and channel
Open “Post other documents to Slack” and pick your account and channel. Invite the app to private channels first (/invite @Fluxo Flow).
| Setting | What to enter | In step |
|---|---|---|
| Slack account | The Slack workspace other documents are posted to. Pick your connected Slack account. | “Post other documents to Slack” |
| Channel for other documents | Pick the channel your operations team watches, e.g. #ops. | “Post other documents to Slack” |
8. Test it with Dry Run
Press Dry Run: the agent runs on sample data with no messages sent and nothing written to your apps.
9. Switch the trigger on
Open the trigger, switch the webhook on and point your document parser at its URL (send file_name, source and the text).
How it works
The agent is a normal workflow with 10 steps (1 AI step, with a person approving in Reviews). You can open, edit and monitor it like any other workflow.
- New document text — Starts when your form or app sends data to the agent's webhook URL. Your document parser, scanner software or another workflow posts each document's text (with its file name and source) to the webhook URL.
- Classify and extract the fields — AI step (runs on your AI provider key). AI identifies the document type, extracts the key fields (amounts, dates, parties, terms) exactly as printed and flags anything odd; the document's arithmetic is checked in code in the next step.
- Check the document's arithmetic — Step. Recalculates in code — not by AI — each line's quantity × unit price, the line amounts added up and the total minus tax, and compares them with the printed figures; the extracted figures stay exactly as printed and any mismatch sends the document to Reviews.
- Needs a person? — Decision: picks the branch to follow. Documents with low confidence, any issue or arithmetic that doesn't add up wait for a check in Reviews before they're filed.
- Check the extracted fields — A person approves or rejects it in Reviews (the run waits). Branch: Check first. A teammate compares the extracted fields with the document, fixes them if needed and approves them for filing.
- Which kind of document? — Decision: picks the branch to follow. Branch: Looks right / Approved. Invoices, receipts, credit notes and purchase orders go to your ledger sheet; contracts to Notion; anything else to Slack.
- Add to the ledger sheet — Google Sheets: Add a row. Branch: Financial. Adds a row to your Google Sheet: type, counterparty, number, dates, currency, subtotal, tax, total, issues and file name.
- Add to the contracts database — Notion: Create a page in a database. Branch: Contract. Creates a page in your Notion contracts database with the parties, dates, renewal terms, value and key terms.
- Post other documents to Slack — Slack: Post a message. Branch: Other. Documents that are neither financial nor contracts are posted to your operations channel with a one-line summary, so nothing is lost.
- Filed — Kept in the run history. The run history keeps the document's extracted fields and where it was filed.
Test it with Dry Run
Press Dry Run in the canvas. The agent runs on the sample data stored on its trigger (the “Sample data for Dry Run” box), so you can check every step's output before anything is live. Edit the sample to match the fields your own form or app sends.
Sample data fields
file_name, source, received_at, text.
- Nothing is sent or written: app actions, emails and Slack posts are simulated, and AI steps don't call your AI provider.
- Approval steps use the Dry Run decision you pick in the step's settings (approved, rejected or timeout), so you can try each branch.
Go live
- Open the trigger, switch the webhook on and point your document parser at its URL (send file_name, source and the text).
- The webhook is protected by a secret: send it in the header shown in the Activation panel (requests without it are refused with 403). Each request starts one run.
- The setup checklist adds a “paid plan” item before activation: live runs need a paid plan (the Free plan only runs Dry Runs).
- When every checklist item is done and the trigger is on, the checklist says “Live — this agent is running”. Follow its runs in the workflow's History tab and in Analytics → Agents.
Questions
Can I send it a PDF or a photo?
Not directly: it reads text. Send the text your document parser, scanner software or e-invoicing system extracts (text-based PDFs can be converted to text by most tools).
What columns should the ledger sheet have?
Received, Type, Counterparty, Number, Issue date, Due date, Currency, Subtotal, Tax, Total, Issues, File, in that order.
Does it fix totals that don't add up?
No — it files what the document says. The arithmetic (each line, the lines against the subtotal, total minus tax) is checked in code, not by the AI; when the document's own figures don't add up, it's flagged and waits in Reviews with the difference, and the printed figures are left as they are.
Troubleshooting
- “No AI provider connected” or a rejected key: connect or fix the key in Settings → AI Providers, then press Test there.
- A checklist item stays unticked: the setting is still empty or still contains its placeholder text. Open the step from the checklist and fill it in.
- An app step fails with “Needs reconnect”: the account's access was revoked or expired. Reconnect it in Settings → Integrations.
- Slack says the app isn't in the channel: in Slack, type /invite @Fluxo Flow in that channel (always needed for private channels).
- Nothing happens when your form sends data: check the webhook is switched on and the request carries the secret header (403 means it's missing or wrong).
- A run shows as paused: it's waiting for someone in Reviews to approve or reject it.
- A step failed: open the run in History and check that step in the Trace tab for the error and what it received.
Generated from the agent's own workflow, so it always matches what the agent does. Last updated .