This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
Local Receipt Sorter turns a pile of receipt photos and PDFs into a clean, categorized CSV. An open-weight vision model (Gemma 4) runs on the user's own laptop through Ollama, reads each receipt, and returns the vendor, date, total, currency and category. There's an editable review table, totals per category, and a one-click CSV export that opens straight in Excel or Google Sheets.
It's built for freelancers and tiny agencies. They handle financial documents that belong to their clients, and at tax time someone has to type every receipt into a spreadsheet by hand. Cloud tools can do this job, but they mean up those documents to someone else's server. I haven't tested whether people would pay for this yet, but the pain it targets is real and recurring.
In the video I switch off Wi-Fi before extracting, to show that everything runs locally.
Turn a pile of receipt photos and PDFs into a clean, categorized CSV, using an open-weight vision model (Gemma 4) that runs entirely on your own computer.
Built for the DEV Hacktoberfest Open-Source AI Challenge, Week 2 (Side Hustle).
Freelancers handle financial documents that belong to their clients. Sending them to a cloud API means that data leaves their control. Here the model runs on the laptop through Ollama, so no receipt is uploaded, there is no per-receipt cost, and it works offline.
ollama pull gemma4:e4b
python3 -m venv .venv
…gemma4:e4b), an open-weight vision model, served locally by Ollama.
How I tested it: I generated synthetic receipts with known correct answers and compared the model's output against them. In my first test run I fed it 3 receipts, and the model read all 3 completely correctly: vendor, date, total and category. Each receipt took about 5 to 6 seconds on a MacBook Air. That's a very small sample of clean, synthetic receipts, so it shows the pipeline works but says little about how it handles messy real-world receipts. I haven't yet measured accuracy on blurry, crumpled or handwritten ones.
Where a closed model would probably do better: large cloud models are likely more accurate on crumpled or handwritten receipts, and they'd be faster than a laptop. For a paid product I'd keep the local model as the default and offer an optional high-accuracy mode, but the privacy-first default is what makes this tool different.
Limitations: only the first page of a PDF is read, categories are the model's best guess, and PyMuPDF is AGPL-licensed, so I'd swap it for a permissively licensed alternative before selling this commercially.