Build my office setupOffice setup

Brightwork demonstration · 09 / 11 · Data extraction / Paper to rows

PAPER TRAIL

A scan, a photo and a handwritten form. PAPER TRAIL is an original Brightwork demonstration. A scanned tax invoice, a phone photo of a till receipt and a handwritten expense claim, read by the same local model through its own vision encoder and turned into structured data a bookkeeping system can import.

6 documentsOutputs by Qwen3.8-27B, generated locallyShown uneditedChecked by Brightwork: 3 corrections across 3 outputs
PTA · A scanned tax invoiceFictional source
Scanned tax invoice from Kiln Timber Supplies to Avery Joinery, total $1,628.44.
PT1 · The invoice, as dataQwen3.8-27B
Checked by Brightwork · 2 corrections
  • Two characters misread: the account number has nine zeros where the invoice shows eight, and the footnote’s “lineal metres” became “linear metres”.
  • The note asking to confirm the 2026 dates is unnecessary: they are this year’s.

As a spreadsheet row

DocumentTax Invoice
FromKiln Timber Supplies Pty Ltd
ABN00 000 000 051
NumberINV-20817
Date2026-08-28
Due2026-09-27
Bill toAvery Joinery Pty Ltd, Attn: Tom Avery, Your order: PO-118
Before GST$1,480.40
GST$148.04
Total$1,628.44
PaymentEFT · Payment terms: 30 days. Please pay by EFT and quote the invoice number. Kiln Timber Supplies Pty Ltd - BSB 000-000 - Account 000000000

Lines

DescriptionQtyUnitPriceAmount
Victorian Ash DAR 19 x 14042.0lm$18.50$777.00
Tasmanian Oak DAR 19 x 9036.0lm$11.20$403.20
Spotted Gum decking 86 x 1924.0lm$9.80$235.20
Delivery, Bendigo metro1ea$65.00$65.00

Notes from the model

  • Footnote on invoice: 'Timber is supplied in random lengths; linear metres are rounded to the nearest 0.5.'
  • Account reference printed on invoice: AVJ01 (not captured in a dedicated field).
  • Verify banking details before payment: BSB 000-000 and Account 000000000 appear to be placeholder/zero values.
  • Verify ABN: 00 000 000 051 also looks like a placeholder value.
  • Invoice and due dates are in 2026 (28/08/2026 and 27/09/2026) as printed; confirm these are correct.
  • Arithmetic check: line items sum to 1480.40, GST 10% is 148.04, total 1628.44 - all consistent with the printed figures.
The JSON, exactly as written
{
  "document_type": "Tax Invoice",
  "issuer": "Kiln Timber Supplies Pty Ltd",
  "issuer_abn": "00 000 000 051",
  "document_number": "INV-20817",
  "date": "2026-08-28",
  "due_date": "2026-09-27",
  "bill_to": "Avery Joinery Pty Ltd, Attn: Tom Avery, Your order: PO-118",
  "line_items": [
    {
      "description": "Victorian Ash DAR 19 x 140",
      "quantity": 42.0,
      "unit": "lm",
      "unit_price": 18.5,
      "amount": 777.0
    },
    {
      "description": "Tasmanian Oak DAR 19 x 90",
      "quantity": 36.0,
      "unit": "lm",
      "unit_price": 11.2,
      "amount": 403.2
    },
    {
      "description": "Spotted Gum decking 86 x 19",
      "quantity": 24.0,
      "unit": "lm",
      "unit_price": 9.8,
      "amount": 235.2
    },
    {
      "description": "Delivery, Bendigo metro",
      "quantity": 1,
      "unit": "ea",
      "unit_price": 65.0,
      "amount": 65.0
    }
  ],
  "subtotal_ex_gst": 1480.4,
  "gst": 148.04,
  "total_inc_gst": 1628.44,
  "payment": {
    "method": "EFT",
    "details": "Payment terms: 30 days. Please pay by EFT and quote the invoice number. Kiln Timber Supplies Pty Ltd - BSB 000-000 - Account 000000000"
  },
  "notes": [
    "Footnote on invoice: 'Timber is supplied in random lengths; linear metres are rounded to the nearest 0.5.'",
    "Account reference printed on invoice: AVJ01 (not captured in a dedicated field).",
    "Verify banking details before payment: BSB 000-000 and Account 000000000 appear to be placeholder/zero values.",
    "Verify ABN: 00 000 000 051 also looks like a placeholder value.",
    "Invoice and due dates are in 2026 (28/08/2026 and 27/09/2026) as printed; confirm these are correct.",
    "Arithmetic check: line items sum to 1480.40, GST 10% is 148.04, total 1628.44 - all consistent with the printed figures."
  ]
}
PTB · A phone photo of a receiptFictional source
Phone photo of a Bendigo Hardware & Timber till receipt, total $1,211.55.
PT2 · The receipt, as dataQwen3.8-27B
Checked by Brightwork · 1 correction
  • The payment method is “EFTPOS” on the receipt, not “EFPOS”.

As a spreadsheet row

DocumentTAX INVOICE
FromBENDIGO HARDWARE & TIMBER
ABN00 000 000 078
NumberTRANS 4471
Date2026-09-19
Due—
Bill to—
Before GST$1,101.41
GST$110.14
Total$1,211.55
PaymentEFPOS · $1,211.55

Lines

DescriptionQtyUnitPriceAmount
DOMINO TENON 8X50 BOX3—$39.95$119.85
TITEBOND III 4L2—$74.90$149.80
ROUTER BIT SET 1/2 12PC1—$189.00$189.00
HINGE CLIP-ON 110DEG40—$6.45$258.00
DRAWER RUNNER 500MM PR10—$42.50$425.00
SANDING DISC 150 P120 50PK2—$34.95$69.90

Notes from the model

  • No customer / bill-to name printed. Document number is the till transaction reference (TRANS 4471); no separate invoice number is shown. Subtotal ex GST is not printed on the receipt and was calculated as total less GST (1211.55 - 110.14 = 1101.41). No due date present, consistent with point-of-sale payment. ABN is printed as 00 000 000 078 (zeroed pattern) - bookkeeper should verify the supplier's actual ABN before claiming input tax. Operator 'KIM' and 'REG 2' also printed. Item count shown as 58.
The JSON, exactly as written
{
  "document_type": "TAX INVOICE",
  "issuer": "BENDIGO HARDWARE & TIMBER",
  "issuer_abn": "00 000 000 078",
  "document_number": "TRANS 4471",
  "date": "2026-09-19",
  "due_date": null,
  "bill_to": null,
  "line_items": [
    {
      "description": "DOMINO TENON 8X50 BOX",
      "quantity": 3,
      "unit": null,
      "unit_price": 39.95,
      "amount": 119.85
    },
    {
      "description": "TITEBOND III 4L",
      "quantity": 2,
      "unit": null,
      "unit_price": 74.9,
      "amount": 149.8
    },
    {
      "description": "ROUTER BIT SET 1/2 12PC",
      "quantity": 1,
      "unit": null,
      "unit_price": 189.0,
      "amount": 189.0
    },
    {
      "description": "HINGE CLIP-ON 110DEG",
      "quantity": 40,
      "unit": null,
      "unit_price": 6.45,
      "amount": 258.0
    },
    {
      "description": "DRAWER RUNNER 500MM PR",
      "quantity": 10,
      "unit": null,
      "unit_price": 42.5,
      "amount": 425.0
    },
    {
      "description": "SANDING DISC 150 P120 50PK",
      "quantity": 2,
      "unit": null,
      "unit_price": 34.95,
      "amount": 69.9
    }
  ],
  "subtotal_ex_gst": 1101.41,
  "gst": 110.14,
  "total_inc_gst": 1211.55,
  "payment": {
    "method": "EFPOS",
    "details": "$1,211.55"
  },
  "notes": "No customer / bill-to name printed. Document number is the till transaction reference (TRANS 4471); no separate invoice number is shown. Subtotal ex GST is not printed on the receipt and was calculated as total less GST (1211.55 - 110.14 = 1101.41). No due date present, consistent with point-of-sale payment. ABN is printed as 00 000 000 078 (zeroed pattern) - bookkeeper should verify the supplier's actual ABN before claiming input tax. Operator 'KIM' and 'REG 2' also printed. Item count shown as 58."
}
PTC · A handwritten expense claimFictional source
Scanned staff expense claim filled in by hand by Ben Tran, total $108.00.
PT3 · The claim, as dataQwen3.8-27B
Checked by BrightworkNo corrections. Checked against the source.

As a spreadsheet row

ClaimantBen Tran
Claim date2026-10-14
Total claimed$108.00
SignedYes
Approved by— not yet

Items

DateWhat it was forKmAmount
2026-10-07Parking - Avery Joinery visit—$12.00
2026-10-08Lunch w/ Tom Avery (client)—$96.00
2026-10-09Bendigo - Castlemaine & back (Kookaburra Ck)78—

Notes from the model

  • The APPROVED BY field is blank. The claim is signed (B. Tran) but has not been approved.
  • The 09/10/26 item lists 78 km but no amount. The form states mileage is paid at the ATO cents-per-kilometre rate, so this must be worked out before paying. The on-form total of 108.00 only adds the parking (12.00) and lunch (96.00) lines and does not include the mileage.
  • The form requires a tax invoice or receipt for every item. Receipts are not visible on this scan, so confirm they are attached (in particular for the 96.00 lunch and the parking).
  • The venue on the 09/10/26 line is handwritten as 'Kookaburra Ck'; confirm the intended name.
  • Claim date 14/10/2026 is within 30 days of the expense dates (07-09/10/2026), so the older-than-30-days rule (Priya's approval) does not apply on age grounds.
The JSON, exactly as written
{
  "claimant": "Ben Tran",
  "claim_date": "2026-10-14",
  "items": [
    {
      "date": "2026-10-07",
      "description": "Parking - Avery Joinery visit",
      "km": null,
      "amount": 12.00
    },
    {
      "date": "2026-10-08",
      "description": "Lunch w/ Tom Avery (client)",
      "km": null,
      "amount": 96.00
    },
    {
      "date": "2026-10-09",
      "description": "Bendigo - Castlemaine & back (Kookaburra Ck)",
      "km": 78,
      "amount": null
    }
  ],
  "total_claimed": 108.00,
  "signed": true,
  "approved_by": null,
  "notes": [
    "The APPROVED BY field is blank. The claim is signed (B. Tran) but has not been approved.",
    "The 09/10/26 item lists 78 km but no amount. The form states mileage is paid at the ATO cents-per-kilometre rate, so this must be worked out before paying. The on-form total of 108.00 only adds the parking (12.00) and lunch (96.00) lines and does not include the mileage.",
    "The form requires a tax invoice or receipt for every item. Receipts are not visible on this scan, so confirm they are attached (in particular for the 96.00 lunch and the parking).",
    "The venue on the 09/10/26 line is handwritten as 'Kookaburra Ck'; confirm the intended name.",
    "Claim date 14/10/2026 is within 30 days of the expense dates (07-09/10/2026), so the older-than-30-days rule (Priya's approval) does not apply on age grounds."
  ]
}

Fictional demonstration, not client documents. Our workstation: one RTX 3090 with 24 GB, every model layer on the GPU. These are not performance figures for a Brightwork installation.