Skip to content

Building document AI before document AI was easy

Bookkeeping software that turns receipts and invoices into structured financial data for QuickBooks and Xero, built when OCR still took serious engineering.

Smartledgers document review screen with a scanned receipt beside extracted invoice fields and line items
Client
Smartledgers
Project
AI-assisted bookkeeping
Built with
Elixir, Phoenix, Python, Custom OCR and extraction models, Google Vision, Baidu OCR, OpenAI, PostgreSQL
Connects to
QuickBooks, Xero
Related services
Custom Project

The situation

Smartledgers does bookkeeping for small businesses. Its customers send in receipts and invoices, and each one has to become a financial record.

Today you can give a document image to an AI model and get most of the details back. When we built Smartledgers, you couldn’t. OCR gave you text, and everything after that was engineering.

The hard part

Receipts and invoices don’t share a layout, and they arrive in every quality. The system had to find the fields on documents it had never seen, tell a label from a value, pick out totals and line items, and check that what it read made sense.

That meant far more than “upload the document to AI”: preprocessing, tuning, extraction rules and validation, with different documents needing different handling.

What we built

A document workflow in four parts:

  1. Read. Our own OCR engine, working with Google Vision and Baidu OCR, reads the text on each receipt or invoice.
  2. Extract. Our own extraction engine, with a model we trained for it, picks out the invoice fields and line items.
  3. Check. A reviewer sees the scanned document beside the extracted details and corrects them.
  4. Sync. Approved records go to the client’s books through integrations with QuickBooks and Xero.

We did the full-stack development, in Elixir with Phoenix and Python on PostgreSQL, and advised on the technical direction.

What changed

Smartledgers takes in receipts and invoices and turns them into records in QuickBooks or Xero, with a person checking the details on the way.

Tell us what isn’t working.

A few lines is enough: the system, what’s going wrong and what it’s costing you. We’ll reply with where we would start.