AI product · credits · live
Meltek Bookkeeper
A focused receipt-capture layer for Australian sole traders and tradies — not another full ledger. Snap photos or dump PDF folders; we extract vendor, date, GST, total, category, and ABN. Pay for what you process.
- React 19
- TypeScript
- Firebase (AU)
- Cloud Functions
- Vertex AI
- Zod schemas
Problem
Tradies and sole traders sit on a shoebox of till slips. Full accounting suites (Xero, MYOB) are a monthly seat for a job that is really: get GST-ready fields out of photos and messy PDFs. They needed a sharp capture layer that sits beside the tools they already use.
Approach
- Ship a dual-surface product: static Meltek marketing at / (home, pricing, FAQ) and a React SPA under /app/ — Firebase Hosting rewrites scoped to the app only, so marketing pages stay real HTML.
- Extract via Vertex AI batch jobs with an honest 30–60 minute window, not fake-instant AI. Australian-first fields: vendor, date, GST, total, ATO/Xero-style category, and ABN with ABR lookup.
- Bill with a credit wallet instead of a subscription: 1 credit per page, +1 to classify multi-page PDFs, mixed invoice+extras rejected before extract. Credits escrow while a batch is in flight; genuine failures refund. Founding pack $10 / 50 credits, never expire. Review in-app and export CSV.
What I owned
- Product, pricing, and upload rules — including the mixed-PDF reject so we don’t invent three receipts from one invoice.
- Ingestion pipeline, relatedness check, Vertex batch settlement, and the credit ledger (hold / spend / refund) as backend-only money movement.
- Marketing site, React app, shared Zod schemas, Firebase Auth/Firestore/Storage/Functions in australia-southeast1, and the launch at bookkeeper.meltek.com.au.
Outcome
Live at bookkeeper.meltek.com.au — a billed Meltek product, not a prototype. Capture first, bookkeep later; Square in-app packs and bank-statement match are next, not claimed as shipped.