Back to Blog
product

Automating Invoice-to-Spreadsheet Workflows With Pilot on macOS

September 22, 2026
Automating Invoice-to-Spreadsheet Workflows With Pilot on macOS

Automating Invoice-to-Spreadsheet Workflows With Pilot on macOS

Invoices arrive as email attachments and leave as spreadsheet rows. Nothing in between requires judgment. You open the message, open the PDF, find the vendor, the invoice number, the date, the amount, the tax line, retype all of it into a sheet, file the PDF somewhere you'll find it again, and repeat. Twenty invoices is an hour. It's an hour that produces no decision, no insight, and no work anyone will ever read — just a table that had to exist before you could do the actual thinking.

This is a walkthrough of handing that hour to an agent running on your own Mac.

The shape of the task

Month-end accounts payable is unusually well-suited to delegation, and it's worth being precise about why. The steps are fixed. The definition of done is unambiguous — every invoice in the inbox has a row, every row has six fields, every PDF is in the right folder. And when something goes wrong, it goes wrong loudly: a missing amount is obvious, a misread date shows up in the totals.

Compare that to the work that sits next to it. Deciding which vendor to renew, flagging an invoice that looks wrong, chasing a discrepancy — those need you. The extraction doesn't. Most desktop automation fails because people aim it at the wrong half of the workflow; the trick is picking the part that's tedious but not delicate.

Setting it up as a request, not a script

With Pilot, the setup is a message. The agent runs locally on your Mac as a background daemon, and you talk to it from Slack or Telegram — so the instruction looks roughly like this:

Search Gmail for messages labeled invoices received this month with PDF attachments. For each one, pull vendor, invoice number, issue date, due date, subtotal, and tax. Put them in a spreadsheet in ~/Finance/AP/2026-09/, one row per invoice, and save the PDFs into the same folder named vendor-invoicenumber.pdf.

Nothing there is a command in a scripting language. It's the same sentence you'd say to a person who was covering for you, which matters more than it sounds like — the reason most of this work never got automated is that describing it in AppleScript took longer than doing it by hand.

Pilot reaches Gmail and Drive through authenticated integrations rather than by clicking around a browser window, and it has direct file and shell access for the writing and filing. So the retrieval step is a real API call, not a screen-scrape that breaks when a layout shifts.

What happens while it runs

You get live status updates in the thread as it goes — which message it's on, what it pulled, what it wrote. This is the part that determines whether you'll actually trust it with next month's batch.

Two things are worth watching the first time through. The first is extraction quality on your specific vendors: invoice PDFs are wildly inconsistent, and a vendor whose "invoice number" sits in the footer in 7pt grey will be the one that comes back empty. The second is what the agent does when it's unsure. You want a blank cell and a note, not a confident guess — and you want to check that's what you got before you scale the job up.

Anything genuinely destructive stops and asks. Dangerous actions — deleting files, running shell commands — trigger an approval prompt with buttons in Slack or Telegram, so the agent can't quietly clean up a directory on its own initiative. For a first run on real financial documents, point it at a copy of the folder anyway. The approval flow is a backstop, not a substitute for the obvious precaution.

Turning one good run into a standing job

The first run is the expensive one, because you're reading every row against the source PDF. The second run is where it pays.

Two features do that work. Pilot's skills system lets you save a procedure the agent has already executed correctly, so "do the AP extract" becomes a thing it knows rather than a paragraph you retype. And scheduled tasks are set in plain language — on the first of every month, run the AP extract and message me the summary — which turns the whole workflow from something you remember to do into something that has already happened by the time you look.

That's the actual change. Not that the hour gets faster, but that it stops appearing on your calendar at all. You go from doing the extraction to reviewing it, and reviewing twenty rows against twenty PDFs is a ten-minute job you can do with coffee.

Where it fits, and where it doesn't

This pattern generalizes to most of the shuttling work that lives between two apps with no integration between them: receipts into an expense sheet, form submissions into a tracker, a weekly report pulled from one tool and dropped into another. If you can describe the task in a paragraph and check the result by looking at it, it's a candidate.

What stays with you is anything irreversible or contested. Paying the invoice, disputing it, deciding a charge is wrong — those aren't extraction, and no amount of accuracy on the reading step makes them safe to delegate. The agent's permission model exists to keep it in the safe, repetitive middle of the workflow, and the workflows that succeed are the ones you deliberately keep there.

Everything runs on your machine, which for financial documents is not a small detail. The invoices stay on the Mac they arrived on.

Pilot is an open macOS agent — code, issues, and roadmap on GitHub: https://github.com/ahn283/pilot-ai

Share

Frequently Asked Questions

What types of invoice tasks can Pilot automate on macOS?

Pilot automates the extraction of fixed data fields from invoice PDFs—such as vendor, invoice number, dates, amounts, and tax—and transfers them into a spreadsheet while saving the PDFs in organized folders. It handles repetitive, rule-based tasks without requiring judgment or decision-making.

How does Pilot ensure accuracy and handle uncertainties during invoice extraction?

Pilot provides live status updates during processing and flags any uncertain or missing data with blank cells and notes instead of guessing. It stops and requests approval before performing any potentially destructive actions, ensuring safe and reliable automation.

How do you set up and run Pilot to automate invoice workflows?

Pilot is configured through plain-language requests sent via Slack or Telegram, describing the task as you would to a human. It runs locally on your Mac with authenticated access to Gmail and Drive APIs, performing real API calls and file operations without scripting.

Can Pilot schedule recurring invoice processing tasks?

Yes, Pilot supports scheduled tasks described in natural language, such as running the accounts payable extraction on the first of every month and sending a summary message. This turns manual workflows into automated, recurring jobs that require only review.

What types of tasks are not suitable for automation with Pilot?

Tasks involving judgment, decision-making, or irreversible actions—like paying invoices, disputing charges, or flagging suspicious entries—are not suitable for Pilot. It is designed to automate safe, repetitive data extraction steps, leaving sensitive decisions to humans.

Continue reading

Automating Invoice-to-Spreadsheet Workflows With Pilot on macOS | Eodin