I built an AI app that turns a hand-annotated receipt into a fair split. Underneath the simple idea: a multi-layer LLM pipeline, computer vision for the handwriting, and a custom HMAC security model.

My partner and I split shared expenses, and existing apps all leave the thinking to me: they can divide a bill, but none I've found will split it automatically from your own preferences and a few handwritten notes.
I also wanted a real project to grow my AI engineering skills on. Tally Split AI is both: a fix for a daily annoyance, and a vehicle for going deep on agentic pipelines, secure authn/authz, and durable serverless workflows.
By default, the app behaves like most splitters: it reads the receipt total and divides it equally, 50/50. But the User can layer on their own curation and annotation rules — handwritten notes and household preferences that take the data-entry work off their plate. The User becomes a curator and approver rather than a typist.
Those rules land directly in the prompt, so the app is exactly as powerful as the User wants it to be, and as comfortable as they are sharing their data. In my own household, for instance, I've stored the last four digits of our cards so the AI can infer who paid.
A multi-layer pipeline split into single-purpose steps, each handed to the cheapest model that does the job well:
prebuilt-receipt model extracts structured line items, totals, vendor, and date.gpt-4o interprets handwriting against fixed conventions (initials, numbers, strikethroughs, circles).gpt-4o-mini cleans noisy OCR and consolidates franchised stores into colloquial names.gpt-4o reconciles everything into a final split, with household rules to resolve ambiguity.Full diagrams and prompts are on the project homepage.
Custom security that's admittedly overengineered for a personal app — but the enterprise architect in me enjoys modeling it and trying to break my own designs. Even small AI applications deserve guardrails against unintended actions.
Authentication verifies two kinds of principal:
nuxt-auth-utils; session cookies are httpOnly, encrypted, and MAC-signed.Authorization enforces scope on every endpoint:
householdId; mismatches return 404 Not Found, so one household can't confirm another's resources exist.resource:permission it may touch. A split:write task can't read receipts; a task scoped to one upload can't reach another.N.B. The app is live but in closed private beta. Login works, but accounts outside the allow-list will see a not-authorized error.