← All projects

Project 02 Shipped

Email → Invoice → Journal Entry Bot

Four invoice types most SMEs see every week, booked correctly and explained line by line — not a generic 'upload anything' promise it can't keep.


For: Indian SME accountants · Live — shipped July 2026.

The problem


Indian SMEs spend roughly six hours per accountant per week downloading invoices from email and keying them into Tally. Most of that time goes into a handful of high-volume, single-format categories — subcontractor and SaaS invoices, cab-hailing receipts, bank charges, flight bookings — not the one-off exotic invoice that needs a human anyway.

What it does


Four tabs, four rules engines. Office invoices and cab-hailing receipts run over a picker of real-shaped sample documents; bank charges and flight/OTA tickets run as a generate-then-push demo — enter the numbers, watch a synthetic invoice get created, then watch the same extraction-and-JE pipeline that would run on a real one process it.

Each category gets its own extraction and journal-entry logic: GSTIN and line-item parsing, the GST treatment specific to that category (including Rule 32(3) deemed-value for air travel and the two-document fare/commission structure for cab aggregators), and TDS applied only where the law actually requires it. Output is a balanced journal entry on screen, plus a Tally-importable XML and an Excel JE template.

  • 100% field- and JE-level accuracy on the synthetic benchmark, across all four categories
  • No LLM — deterministic, rules-based extraction anchored to each category's known document shape
  • Generate-then-push demo on two tabs: fill a form, watch a synthetic invoice get created, then watch the real pipeline extract and book it — no real document ever reaches the server

Design choices


No LLM in the pipeline. The extraction is regex-anchored to each category's known document shape, and that's stated plainly rather than oversold as 'reads any invoice.' A model that books to the wrong ledger with total confidence is a liability on month-end data; a rules engine that only handles what it's built for — and says so — is more trustworthy at the categories it does cover.

TDS treatment follows the Income Tax Act 2025's consolidated Section 393 codes rather than the old 194C/194J/194I/194Q citations, GST on air travel follows Rule 32(3), and bank charges carry no TDS at all per CBDT Circular 56/2012 — the kind of detail that only surfaces when someone who has actually closed these books builds the tool.

Stack


PythonpdfplumberStreamlitpypdfium2openpyxl

Built and demonstrated on synthetic data only.