A verification desk for every document your team scans

By General Input

See every scan next to the details pulled out of it, correct anything wrong, and let only verified numbers reach your ledger sheet.

Integrations

  • JigsawStack
  • Airtable
  • Google Sheets

Type

App

Categories

  • Operations
  • Finance

Build me a verification desk for the scanned paperwork my team collects. Reading documents automatically is only half the job: somebody still has to confirm the numbers before they hit our records. Documents land as attachments on records in an Airtable intake table, and this app is the surface where a person checks each one and approves it.

The main view is a queue built from the Airtable intake table with List Records. Anything not yet verified sorts to the top, and I can filter the queue by document type and by who submitted it. Each row shows a thumbnail or file name, the document type, the submitter, the date it landed and its verification status. Keep a running count of how many documents are still waiting pinned at the top of the page, so the team can see when the queue is clear.

Opening a document gives me a side by side review pane. On the left, render the scan or PDF itself from the Airtable attachment URL, large enough to actually read, with zoom. On the right, show the fields pulled out of it by JigsawStack Extract Data with Vision OCR: supplier, document date, reference number, line items and total. Every one of those fields is editable in place. Load the current record with Get Record when the detail pane opens, so I am always correcting the latest values rather than a stale copy.

A server handler runs the extraction by passing the Airtable attachment URL straight through to JigsawStack Extract Data with Vision OCR as the public url parameter. JigsawStack accepts either a url or a file_store_key and never both at once, so only ever send the url. Store the extracted values and the raw extracted text back onto the Airtable record with Update Record, so a document does not have to be read again every time someone opens it.

Flag any field that came back blank or with low confidence in a warning colour, so my eye goes straight to what needs checking. Keep the raw extracted text visible in a panel next to my corrections, so I can see exactly what the model read versus what I changed. When I edit a field, keep the original extracted value visible beside it rather than discarding it.

Verify is the main action. When I press it, write the corrected values back to the source Airtable record with Update Record, set its verification status to verified, and stamp it with my name and the current timestamp. Then append one clean row to our ledger spreadsheet with Google Sheets Append Values, carrying the supplier, document date, reference number, total, document type, the Airtable record id, who verified it and when.

Two rules matter. First, only verified rows ever reach the ledger: nothing writes to Google Sheets from the extraction step, from the re-read action, or from anywhere except Verify. Second, nothing is ever written twice. Before appending, re-read the record with Get Record and skip the append if it is already marked verified, and check existing ledger rows with Google Sheets Get Values for that Airtable record id so re-opening or re-verifying the same document never creates a duplicate line. If a document is already in the ledger, show that state in the UI instead of offering Verify again.

Give me a re-read this document action for bad scans. It runs Extract Data with Vision OCR again over the same attachment, replaces the extracted values and raw text on the record with Update Record, and leaves the document unverified so it comes back through the queue. Re-reading must never touch the ledger.

Anyone on the team can work the queue, and each ledger row records whichever person actually pressed Verify. Make the review pane quick to work through: keyboard friendly, with a way to jump straight to the next unverified document after verifying one, and an obvious indicator when the queue is empty.

Related prompts

Explore more prompts
Call overdue Xero customers with an AI collections agentLocal listing health board for every location you manageLet support send one-off Loops emails without an engineerA brand asset library your marketing team actually searchesStop cold emails to anyone with a live deal in PipedriveiMessage campaign console with pre-flight checks and delivery boardLinkedIn Ads budget pacing dashboard for every client accountFront desk appointment confirmation board for the next 3 daysGive your team Looker numbers without buying more seatsBuild audience segments from product usage and push to Loops