Skip to content
← All projects

Invoice Platform

A small-business invoice inbox that collects documents, extracts their details, flags uncertain data and prepares the accountant's monthly export.

2026 Micro SaaS Next.jsAISaaSPostgres

I built Invoice Platform to remove one repetitive monthly job: finding every invoice, checking its details and preparing the files for the accountant.

Invoices rarely arrive in one place. Some are Gmail attachments, others are downloaded PDFs or photos sent from a phone. The platform brings them into one inbox, reads the useful fields and keeps uncertain values visible instead of silently guessing.

Invoice Platform dashboard showing invoices that need review, monthly spending and export readiness
The dashboard brings review work, spending and export readiness into one view.

The monthly flow

  • Connect Gmail, upload a PDF or image, or send the document through Telegram.
  • OCR and a language model extract the supplier, date, invoice number, amounts, VAT and currency.
  • Missing and low-confidence fields stay in the review queue until someone validates them.
  • Pick a period and export the original files as a ZIP, an Excel summary, or an Excel file with secure document links.
Invoice table showing suppliers, dates, validation statuses, confidence scores and totals
Every invoice keeps its source, status and extraction confidence visible.

The platform supports teams as well. Owners can invite colleagues or accountants, assign roles and trace sensitive changes through the audit log.

Outside the dashboard

The Telegram bot is another entry point, not a separate workflow. It accepts photos and files, answers questions about stored invoices and sends scheduled reminders. An MCP server exposes the same scoped actions to Claude and other compatible clients, including listing, uploading, validating and exporting invoices.

Under the hood

The project is a Turborepo monorepo running on Bun. A Next.js 15 application serves the interface and API, a BullMQ worker handles document processing and exports, and separate services run the Telegram agent and MCP server. Data lives in PostgreSQL through Prisma, Redis backs the queues, and private files are stored in Cloudflare R2 behind time-limited signed links.

Invoice export preview showing the selected period, included invoices, totals and export format
An export preview shows exactly which invoices and totals will be included.

The part that mattered most

The hardest decision was not how to extract another field. It was deciding when not to trust the extraction. A wrong amount presented with confidence is worse than leaving the field empty, so the processing pipeline is built around a clear handoff from automation to human review.