Receipt AI Expense Tracker
Privacy-aware Thai and English receipt extraction app with a local-first review workflow.
- Project type
- Multimodal AI Product
- Core stack
- Next.js, TypeScript, Zod
- Delivery
- Demo available
Case Study
The problem, implementation decisions, measured evidence, and next improvements.
Overview
A multimodal receipt-to-expense workflow with schema validation, human review, local storage, and provider guardrails.
Problem
Receipt extraction must handle multilingual text, Buddhist Era dates, inconsistent layouts, and unsafe model output without silently saving incorrect financial records.
Solution
Built a Next.js application with capability-aware provider routing, strict schema validation, Buddhist Era normalization, editable review, and IndexedDB persistence.
Technical Decisions
- Local persistence avoids a required account or cloud database.
- Mock extraction exercises the same validation and review contract as provider output.
Outcome
Users explicitly review extracted data before it enters the local ledger, while deterministic mock extraction keeps the product flow testable without provider credentials.
What It Proves
Multimodal extraction, Thai and English normalization, provider routing, local-first data design, and privacy-aware product engineering.
Key Features
- Provider capability checks prevent images from reaching text-only routes.
- Strict schemas validate extracted receipt records.
- Explicit human confirmation is required before IndexedDB persistence.
Architecture
- 01
Receipt upload
- 02
Provider router
- 03
Structured extraction
- 04
Schema validation
- 05
Human review
- 06
IndexedDB
- 07
Local analytics
Tech Stack
- Next.js
- TypeScript
- Zod
- IndexedDB
- AI provider routing
- Privacy guardrails
Verification
- Synthetic extraction evaluation
- Schema-validation tests
- Deterministic mock workflow
Security & Privacy
- Receipt data stays local after review.
- Provider keys remain server-side and AI output is never saved automatically.
Limitations
- Browser-local storage is device-specific and is not a synchronized backup.
- Extraction accuracy depends on image quality and provider capability.
Future Improvements
- Add encrypted export and import.
- Expose field-level confidence and duplicate detection.
Repository, tests, and the existing public deployment are the evidence sources.