Flatmate Expense Workspace
Local-first workspace that syncs Zepto orders, parses invoice PDFs into line items, and surfaces exceptions before they become arguments. Line-item tagging for partial-shared items, AI assist behind a human review gate, settlement-ready export.
The problem
Most flatmate arguments about groceries aren't about money. They're about process — who ordered what, was there a refund, which items were personal vs shared. The kind of thing that only gets messy because nobody has a single source of truth.
Cancellations slip in. A “just one item” gets remembered as shared. Invoice PDFs aren't always consistent. By the end of the month, the WhatsApp scroll-back is the audit trail.
The approach
A local-first workspace that turns Zepto order data into a reviewable expense dataset. The flow is sync → parse → reconcile → review → export: pull orders and invoices, parse the PDFs into line items, reconcile order totals against invoice totals, surface exceptions, hand off a settlement-ready table.
The data model has explicit layers — order, invoice, reconciliation, annotation, exception — connected through stable IDs. Line-item tagging handles the case that breaks every spreadsheet split: items that are partially shared.
Exception-first UI
The dashboard puts mismatches, missing invoices, and cancellations in front of you before it shows the totals. The workbench is where decisions get made: mark a review status, request a retry, flag for follow-up — all on the issue card itself.
AI assistance is optional and review-first. It can suggest categories, flag anomalies, or draft monthly summaries — but nothing applies without a human confirming. The audit trail stays clean.
Why local-first
Everything stays on the laptop. No cloud sync, no shared spreadsheet permissions, no third-party storage of grocery receipts. The output is a table you hand to Splitwise or your flatmate directly. The data and the audit trail are yours.
Open source — github.com/tejasmakesmusic/zepto-expense-workspacearrow_outward