Skip to content
CodeBeyonds

Internal demo

Ledgerline

Matches incoming supplier invoices against bank transactions and flags the ones a person needs to look at.

Type
AI, Automation
Year
2026
Stack
Python, FastAPI, OpenAI API, PostgreSQL, Next.js
Laptop showing source code in a dark editor

Interface shown with sample data.

The challenge

Small accounting firms reconcile hundreds of invoices a month by hand, switching between email, PDFs and bank exports. Most matches are obvious; the time goes on finding the few that are not.

Who it’s for

Accountants and bookkeepers at firms with 3 to 30 staff.

Solution and product strategy

  • Invoices arriving by email are parsed into structured fields with a model, then validated against rules (GSTIN format, totals, dates).
  • A matching step proposes bank transactions for each invoice with a confidence score and the reason for the match.
  • Anything below the confidence threshold goes to a review queue; accepted matches are written back to the accounting system.

System architecture

The path a request takes through the system, and what each part is responsible for.

  1. 01Mail ingestReceives forwarded invoices, stores the original PDF
  2. 02ExtractorLLM with a JSON schema, retried on validation failure
  3. 03RulesDeterministic checks the model is never trusted with
  4. 04MatcherScores candidate transactions, explains each score
  5. 05Review queueHuman decision on low-confidence items

What we’d measure

This is an internal demo, so there are no client results to report. These are the numbers a real deployment would be judged on.

  • Share of invoices auto-matched without edits
  • Minutes spent per 100 invoices before vs after
  • False matches caught in review

What we learned

  • Validation rules did more for accuracy than prompt changes.
  • Showing the reason for each match made reviewers trust and correct it faster.

Want something like this for your team?

Tell us what you're trying to do. A senior engineer reads every message and replies personally.