This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle
What I Built
Managing expenses is one of those tedious tasks that freelancers and small-business owners can never quite escape. Receipts pile up, GST figures need checking, and organizing everything into a spreadsheet takes time that could be spent on actual work.
I built Khata, a browser-based receipt sorter that aims to make that process easier using open-weight AI.
Here's what it does-
Import receipts: Paste receipt text or add receipt photos.
Extract and categorize: Turn receipt information into structured expense records, with details such as vendor, date, amount, currency, GST, and expense category.
Check the numbers: Validate extracted amounts and totals against the available receipt information.
Review and correct: Inspect entries that need attention and edit the results.
Export a spreadsheet: Download categorized expenses as CSV or copy them as TSV.
The project is designed around an important principle: your financial documents shouldn't have to leave your device just to be organized.
Khata integrates an open-weight Gemma model intended to run directly in the browser. It also includes a basic rules-based mode, so the application can remain useful even when AI inference isn't available.
Who is it for?
Freelancers, independent contractors, consultants, and small-business owners who want a simpler way to organize receipts without adopting an entire accounting platform.
Khata could serve as a lightweight free tool today and a foundation for a more complete expense-management product in the future.
Demo Video: https://www.youtube.com/watch?v=1P_8kuupbH4
Try the deployed application: https://khata-beige.vercel.app/index.html
I'll provide a video walkthrough demonstrating the receipt-processing workflow, the categorized results, and the export functionality.
Code
GitHub repository: https://github.com/Nullhermit/khata
The project includes the main application, documentation, and tests for the receipt-processing logic.
How I Built It
I wanted to explore whether a useful AI-powered financial tool could run directly in the user's browser instead of relying on a remote AI API.
Khata brings together client-side receipt processing, structured expense extraction, validation logic, and spreadsheet exports.
The key components are:
Gemma: An open-weight language model integrated into the browser-based AI workflow.
Browser-side inference: The application is designed to load and run the model locally on compatible hardware.
Receipt-processing logic: Converts receipt information into structured expense records.
Validation and error checking: Checks extracted figures and totals so users can review questionable results.
CSV and TSV export: Makes the resulting data usable in existing spreadsheet workflows.
The intended workflow is straightforward:
Add a receipt by pasting its text or selecting a receipt photo.
Process the available receipt information.
Generate categorized expense records.
Check the extracted values and resolve anything flagged for review.
Export the results into a spreadsheet.
I also tested the non-model receipt-processing, number-checking, and CSV logic against five sample receipts. Those tests passed, and I fixed a bug during development.
One limitation remains: I couldn't run the AI model successfully in my development workspace because the full inference path requires a compatible browser and GPU support. The browser-side model-loading step still needs an end-to-end test on a suitable desktop machine.
That's why the application includes a basic fallback mode. If the model cannot be loaded, there's still a way to demonstrate the core receipt-processing workflow.
Why Does Open Innovation Matter?
Expense records can contain sensitive information about someone's business, purchases, and financial life. Sending every receipt to a third-party AI service introduces an additional dependency and a potential privacy concern.
Open-weight models make another approach possible.
With Khata, I'm exploring an architecture in which the model runs locally in the browser, allowing receipt data to be processed without sending it to a remote inference service.
This matters for three reasons.
Privacy: Local inference can reduce the need to share financial documents with external AI providers.
Cost: Once the model is downloaded, local inference doesn't require a per-request AI API bill. Users still need compatible hardware, storage, and bandwidth to download the model.
Control: Open-weight models and accessible tooling give developers more flexibility to experiment with AI-powered applications instead of designing everything around a proprietary inference API.
Open innovation makes it possible to explore these trade-offs directly. Rather than treating AI as something that must always live in the cloud, Khata experiments with bringing it closer to the person using the application.
The project is a small step toward making practical AI tools more accessible, private, and independent of paid inference services.
My Agent Session
I'll add my DevRelay agent session here if I have one available to share.
Prize Categories
Best Use of Gemma.
What's Next?
The next priority is verifying the complete AI workflow in a compatible desktop browser, including model loading and receipt processing.
After that, I'd like to expand the test coverage, improve extraction accuracy across different receipt layouts, and explore how Khata could become more useful for freelancers who handle receipts regularly.
Building Khata has been an opportunity to experiment with open-weight AI on a practical problem rather than simply wrapping a remote API.
I'd love to hear what you'd change, what features you'd find useful, and whether you'd use a tool like this to manage your own expenses.
Top comments (0)