DEV Community

Sanjana jha
Sanjana jha

Posted on

Local Expense Sorter: an offline categorizer for freelancers and small shops

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

devchallenge #hf26challenge

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

What I Built

Local Expense Sorter takes a bank statement CSV and categorizes each transaction (Food & Drinks, Supplies, Rent, Client Income, and so on) using a small open-weight model running on the user's own laptop. It then shows monthly spend charts and exports an Excel workbook or CSV for an accountant.

It's for freelancers and small shop owners who spend hours sorting bank and UPI statements by hand. Most tools that do this upload financial data to the cloud. This one doesn't. When a user corrects a category, that correction is saved and used as an example for future imports.

Demo

No hosted link. Here's the dashboard after importing a sample statement:

Dashboard

To try it, follow the setup steps in the README and upload the sample CSV included there.

Code

https://github.com/sanjana-jha-001/expense-sorter

How I Built It

  • Model: Qwen2.5 3B (open weights), run locally through Ollama
  • Storage: SQLite, a local file. Duplicate transactions are detected with a hash, so re-importing a statement is safe.
  • Interface: Streamlit and pandas, bound to 127.0.0.1 so only the same machine can reach it

Categorization runs in order of precedence. A saved correction for a merchant is used first, with no model call. Repeat merchants in the same batch reuse the earlier result. Only new merchants go to the model, and the 20 most recent corrections are included in the prompt as examples.

Why Does Open Innovation Matter?

  • Privacy: Bank statements show client names and family spending. With a local model, nothing leaves the laptop. The README shows how to run the app with --network none to verify this.
  • Cost: Per-transaction API fees would eat the margin on a small paid tool. Local inference costs only electricity.
  • Control: I can swap models, edit the prompt, or change categories without asking a vendor.

The trade-off is accuracy. A 3B model is less accurate than a large cloud model on messy bank descriptions, so the review screen is part of the design, and every correction improves later imports.

Top comments (0)