BlackloreBlacklore
← All work
Demo build

A chat assistant that answers accounting questions safely

Ask who owes money or draft an invoice in plain English, with a person confirming every change.

A working sample we built to show how we would solve a problem like this. It is not a delivered project.

In plain terms

This assistant answers accounting questions such as which customers owe over a set amount, and drafts new invoices from a chat message. It was built and tested on a practice set of 312 made-up customer records. The AI only chooses what to look up. All the sums and name matching are done by ordinary, tested code.

  • Never counts a parent account and its sub-accounts twice.
  • Asks which customer you mean instead of guessing between similar names.
  • Drafts an invoice, but only a button press by a person actually posts it.
  • A retried confirmation cannot create the invoice twice.

What this does not claim: Built on practice data, not a live accounting account. Swapping in the real accounting system is one contained change, but that step has not been done or tested.

Technical details

FastAPI app with a mock QuickBooks layer (app/mock_qbo.py) over a 312-row SQLite load; it is the only module touching the database, so python-quickbooks can replace it without changing callers. The model only selects a tool and extracts arguments; sums, parent/child rollup detection and fuzzy name matching are plain code. draft_invoice stages a proposal in memory; only the /api/confirm endpoint (UI button) writes it, idempotent on a key. An offline deterministic parser runs without an API key. Unit tests cover the mock layer and the ambiguity case.

  • Python
  • FastAPI
  • SQLite
  • Claude tool-calling
  • pytest

Need something like this?

Tell us the problem in your own words. We reply with a plain, practical plan.

Discuss a project like this