Full-stack · Local AI
Monny AI
A household cash-flow system that runs entirely on local hardware — rules parse what rules can parse, a locally-hosted LLM handles only what they can't, and no financial data ever leaves the network.
- None
- Data leaving the network
- 0
- Public ports open
- On-device
- Model runtime
Overview
Monny AI tracks household cash flow across individual and joint accounts. The constraint that shaped every other decision is that bank statements are about as sensitive as personal data gets, so nothing in the system is allowed to reach a third-party API. The models run locally, the database is local, and remote access goes over Tailscale with no port exposed to the public internet.
My Role
Solo — architecture, data model, Python backend, Next.js frontend, and the local model setup.
Architecture
The backend is a Python service with a SQLAlchemy data model under Alembic
migrations, running in Docker Compose. Ollama deliberately sits outside the
compose stack — installed natively on macOS and reached from the backend
container via host.docker.internal. Containerising it would have been tidier, and
would also have thrown away Metal GPU acceleration, which was not a trade worth
making.
Attribution is derived rather than stored: transactions belong to whoever owns the
source account, joint-account transactions count in full in the combined view and
split by ownership ratio in individual views. There is no attributed_to column to
drift out of sync, and combined figures are always summed live from individual
records rather than cached.