Ingest
Gmail push or webhook delivers the invoice (PDF, image, or HTML email). The agent extracts vendor, line items, amount, due date, PO reference, and tax fields via Claude vision + structured output.
An AI bookkeeper that watches your accounts-payable inbox, extracts invoice fields against vendor history (RAG over MongoDB Atlas Vector Search), categorizes against your chart of accounts, posts to QuickBooks or Xero, and escalates exceptions to WhatsApp. $0.50 per invoice categorized. Nothing else.
Gmail push or webhook delivers the invoice (PDF, image, or HTML email). The agent extracts vendor, line items, amount, due date, PO reference, and tax fields via Claude vision + structured output.
RAG lookup against your vendor history: prior invoices, contract terms, GL coding patterns, PO records. Returns confidence score. Below threshold → exception. Above → continue.
Posts to QuickBooks Online or Xero with correct GL account, class, and tax treatment. Attaches the original PDF. Marks PO as matched if applicable.
Variances (amount mismatch, unknown vendor, missing PO) get a WhatsApp message to the controller with the proposed coding + a one-tap approve/reject. Audit chain records the decision.
→ tool_use: gmail.fetch_attachment(message_id='gm_9a1c', kind='pdf')
← invoice.pdf (382 KB)
→ tool_use: claude_sonnet.extract_invoice(pdf=...)
← {vendor: 'Acme Corp', amount: 12450.00, po: 'PO-4421', due: '2026-07-15'}
→ tool_use: rag.vendor_lookup(name='Acme Corp', tenant='cust_482')
← 14 prior invoices, 94% match confidence on GL=5240 (software)
→ tool_use: quickbooks.match_po(po='PO-4421')
← matched, amount within 0.3% tolerance
→ tool_use: quickbooks.create_bill(vendor='Acme Corp', amount=12450, gl=5240, po='PO-4421')
← bill_id 'qb_7f3a' created
→ tool_use: outcome_ledger.record(event='invoice_categorized', value=0.50)
→ tool_use: audit_chain.append(event='qb.create_bill', actor='agent.bookkeeper', tenant='cust_482')Real tool-call sequence from a recent production run. Names redacted.
Assumes linear scaling and no ramp-up. Real deployments hit steady-state around week 3–4.
Also see: Automate Accounts Payable → — the same math from a process-first angle, for buyers thinking "we need to fix our accounts payable process" before shopping for an agent.
Default is 90% on GL coding match against your vendor history. Below that, the agent escalates via WhatsApp with its best guess pre-filled. You can lower the threshold once you've built trust — most customers move to 80% after 60 days.
Yes. With no vendor history, the agent uses your chart-of-accounts descriptions and the invoice line items to propose GL coding via Claude Sonnet — and always escalates the first invoice from a new vendor for approval. After 2-3 approved invoices, it learns the pattern.
No. Deduplication runs on invoice number + vendor + amount + date. Duplicates are dropped without a charge — you don't pay for re-runs of the same invoice.
Yes. If you have POs in QuickBooks/Xero, the agent matches invoice → PO → receipt (if you use receiving). Configurable tolerance (default 2%).
No. Traditional RPA fails on unstructured invoices and new vendors. This is a real agent — it reasons about the invoice in context of vendor history and your COA, calls multiple tools, decides when to escalate. See /rpa-vs-agentic-ai for the technical distinction.
A $0 outcome audit takes 3 minutes. We'll show you the outcome math, the integrations, and what week-one looks like — with your real systems.
Book the audit →