How AI agents can help with data entry (and where they still slip)
Invoices, receipts, web forms and messy spreadsheets: what AI agents are documented doing today, what went wrong in real tests, and how to use them safely.
Data entry is mostly copying: reading a document and typing the same values somewhere else. That is exactly the kind of work language models are now used for. Simon Willison, creator of Datasette, put it plainly: “I’ve suspected for a while that the single most commercially valuable application of LLMs is turning unstructured content into structured data.” (source ↗) Here is what that looks like in real use.
1. Invoices into accounting systems
RingCentral’s accounts payable team used to open each invoice and hand-key it into Coupa. After deploying Auditoria’s AP agents, the agents extracted fields from emailed invoices and created draft vendor bill records, tagging each extracted value with a high, medium or low confidence level. The case study reports most invoices were processed in under two minutes with 96% accuracy, and that the team shifted to review and exception handling (Auditoria case study ↗).
Kingfisher’s shared-services centre in Poland used Rossum to read invoices before RPA bots indexed them in SAP. Rossum reports invoice indexing fell from about 5 minutes to 25 seconds on average, with 60% of invoices needing no manual touch before SAP (Rossum customer story ↗). Both are vendor-published case studies, so read them as best-case results.
2. Turning documents into tables
You don’t need an enterprise contract to try this. Willison’s open-source datasette-extract ↗ plugin lets you define columns (with hints like “YYYY-MM-DD” for dates), then paste text or drop in an image or text-based PDF and have an LLM fill a database table. His LLM command-line tool ↗ does the same with schemas from the terminal.
3. Spreadsheets
Microsoft’s Agent Mode in Excel ↗ works inside the workbook using tables, formulas and PivotTables, and Microsoft says it evaluates results and fixes issues as it goes. It requires a qualifying Microsoft 365 or Copilot plan.
4. Web forms (the shakiest part)
OpenAI listed “filling out forms” as a use for Operator ↗, its browser agent, and designed it to hand control back to you for logins, payment details and CAPTCHAs. Real tests show the limits. Journalist Timothy B. Lee gave Operator a photo of a 16-item handwritten grocery list: it misread “(5)” as “15”, dropped Cheerios and added only 13 of 16 items to the cart; a second attempt took over 30 minutes and several interventions (Understanding AI ↗). His later test of ChatGPT Agent got 15 of 16 items but missed onions (Understanding AI ↗).
Practical tips
- Verify outputs. Spot-check every field against the source, and check totals add up. Transcription slips like “5” → “15” are exactly the errors Lee hit.
- Keep a human check before anything is committed. RingCentral’s agents created draft records for review rather than posting final ones. Copy that pattern: drafts first, you approve.
- Ask for confidence and gaps. Have the agent mark any value it could not read instead of guessing.
- Protect sensitive data. Don’t paste ID numbers, bank details or health records into a tool unless you’ve read its data policy and your employer allows it. Type passwords and payment details yourself, as Operator is designed to require.
- Start small. Test on 10 documents you already entered by hand and compare before trusting it on a batch.
Starter prompt
I'm attaching [invoices / receipts / a form / a spreadsheet]. Extract these fields for each document: [Date (YYYY-MM-DD), Vendor, Invoice number, Subtotal, Tax, Total, Currency]. Return a table with one row per document and one column per field, plus a "Notes" column. Rules: - Copy values exactly as written. Do not guess or fill in missing values; write UNREADABLE or MISSING instead. - Flag any row where Subtotal + Tax does not equal Total. - Do not include full card numbers, bank account numbers or ID numbers; mask all but the last 4 digits. - After the table, list every value you were unsure about so I can check it against the original.