This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
GigReceipt is a local-first receipt scanner and expense tracker built for freelancers, gig workers, and small business owners who want to simplify expense management without sending sensitive financial documents to a third-party AI service.
Manually entering receipt details is tedious. Keeping track of expenses across different receipts makes bookkeeping even more frustrating.
GigReceipt lets users upload a receipt image and extract important details with local AI, including:
- Merchant name
- Transaction date
- Total amount and currency
- Expense category
- Payment method
- Notes
Users can review and edit the extracted information, save expenses locally, manage their records, and export them to CSV for bookkeeping.
The goal is simple: turn a pile of receipts into organized expense records with less manual work.
It's a tool that could be useful to freelancers and small business owners who want a lightweight alternative to expensive bookkeeping software.
Demo
Demo video: [https://github.com/user-attachments/assets/dfeb4644-c42c-4637-859c-14406812af54]
The video will show the receipt upload, AI extraction, expense review, local saving, and CSV export workflows.
GigReceipt currently runs locally because it uses Ollama for AI inference. A screen-recorded demo is the most straightforward way to let judges see it in action.
Code
GitHub repository: [https://github.com/coder-ralph/GigReceipt]
The repository includes the application source code, setup instructions, and configuration needed to run GigReceipt locally.
How I Built It
I built GigReceipt using Next.js, TypeScript, Tailwind CSS, and Ollama.
The AI extraction workflow uses Gemma 4 through Ollama's local API. When a user uploads a receipt, the application sends the image to the local model, validates the returned structured data, and presents the results in an editable review form.
The main technologies are:
- Next.js App Router for the application and receipt extraction API route.
- TypeScript for type-safe application logic.
- Gemma 4 + Ollama for local vision-based receipt extraction.
- Zod for validating extracted data.
- Dexie + IndexedDB for storing expenses locally in the browser.
- CSV export for transferring expense records into spreadsheet and bookkeeping workflows.
One important part of the implementation is that AI-generated results are treated as data that needs validation and user review, rather than being accepted blindly.
I tested the workflow using a Maple Grove Market receipt. GigReceipt successfully extracted the merchant name, identified the exact total of $33.43, categorized the expense as Shopping, detected Visa as the payment method, and saved the record locally.
Screenshot
Why Does Open Innovation Matter?
Receipts contain financial information that users may not want to upload to an external service. For a freelancer or small business owner, privacy and predictable costs matter.
Using an open-weight model through local inference makes a different approach possible.
With GigReceipt, receipt images can be processed by a model running on the user's own computer instead of being sent to a hosted AI API. Expense records are stored in the browser's local database, giving users control over their data.
Local inference also avoids per-request charges from a third-party AI provider, although users still need suitable hardware and incur their own electricity and computing costs.
Open models give developers the freedom to experiment with different models, inspect their behavior, and adapt the application without being locked into a single hosted AI provider's pricing or API.
For me, open innovation makes it possible to build practical AI tools that prioritize privacy, accessibility, and user control.
Prize Categories
- Best Use of Gemma

Top comments (0)