DEV Community

Paras Garg
Paras Garg

Posted on

Ledgerling: A private, local-first expense desk for freelancers

Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle Submission 💸

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle

What I Built

Ledgerling is a local-first expense desk for freelancers and solo business owners. Paste in the text from a receipt and a locally running Gemma model extracts the merchant, date, total, description, and an expense category. Review or edit the result, keep expenses in a browser-based ledger, and export the data as CSV for bookkeeping.

The people most likely to pay for a tool like this are independent creatives and consultants who want less receipt admin without handing their purchase history to another hosted service. Ledgerling is a working prototype, not a paid product or accounting service: receipt image OCR, multi-currency support, and encrypted backups are not implemented.

How I Built It

Ledgerling uses Google's open-weight Gemma 3 4B model, served locally by Ollama. When a user submits receipt text, the app asks the model for a structured JSON result containing the merchant, description, date, amount, and one of the app's supported categories. The result enters a review queue so the user can correct it before relying on it in their ledger.

The app is built with React and Vite, with no hosted inference service or API key. Vite forwards the development request to the local Ollama service. This prototype handles pasted receipt text; it does not yet perform OCR on receipt images.

Why Does Open Innovation Matter?

Receipt text can expose client names, locations, and spending habits. Running Gemma through Ollama keeps inference on the user's machine instead of sending receipt contents to a third-party AI API. It also avoids a per-receipt inference bill and gives the owner control over the model and runtime they install.

That local-first approach has a tradeoff: users need to install Ollama and download a model, and extraction depends on their machine. The model is not called until the user asks to analyze a receipt. Ledger data is stored in that browser's local storage, so users should export backups themselves; this prototype does not provide encrypted or synced backups. The included Vite proxy is for local development and must not be exposed as a public Ollama endpoint.

Top comments (0)