ai newsSo., 25. Okt.

Receipt Raccoon: A Local-First AI for the Receipts We Never Want to Find

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady . What I Built Meet Receipt Raccoon 🦝 — a local-first receipt and warranty organizer built to solve a surprisingly annoying problem: finding the bill you need when you actually need it. You buy a phone, an

dev.toSonntag 09:55 · 25.10.4 Min. Lesezeit
Bild: dev.to

Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady Submission 🦥

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady.

Meet Receipt Raccoon 🦝 — a local-first receipt and warranty organizer built to solve a surprisingly annoying problem: finding the bill you need when you actually need it.

You buy a phone, an appliance, or a computer. You keep the receipt somewhere safe. Months later, you need it for a warranty claim, and suddenly that “safe place” is nowhere to be found.

I built Receipt Raccoon to make that process less painful.

Receipt records and original files are stored in the browser's IndexedDB. The goal is to make keeping track of important purchases easier without requiring a complicated account or a cloud database.

The hosted demo lets you explore the document-management interface, warranty tracker, and backup features.

One important detail: AI reading and natural-language search require Ollama running locally with the Gemma model. Those AI features are not enabled on the hosted Vercel demo, so they need to be demonstrated using the local application.

That separation is intentional. I wanted to make the interface accessible online without pretending that my computer's local AI service was available to everyone on the internet.

The project is built with Next.js and TypeScript.

The main parts of the implementation include:

Explore the complete implementation in the GitHub repository.

I built Receipt Raccoon with Next.js, React, TypeScript, and CSS. IndexedDB stores receipt information and the original documents locally in the browser.

For the AI features, I used Gemma 3 through Ollama, running on my own computer.

The receipt-reading flow sends a supported receipt image to the local application endpoint, which passes it to Ollama for analysis. The extracted fields are then placed into a form so the user can verify them against the original receipt before saving.

The search feature takes a different approach: it sends receipt metadata to the local Ollama service rather than sending the original bill images. The model helps interpret the user's question and identify matching receipts.

I also added deterministic duplicate-detection rules, warranty-expiry calculations, individual and bulk deletion, and JSON backup and restore.

One lesson from building this was that the AI model is only one part of the experience. The surrounding application needs to handle uncertain extraction results, storage failures, duplicate warnings, and recovery just as carefully.

Receipts can reveal more than a purchase. They can contain names, addresses, transaction details, and information about the products someone owns.

That made local inference an important design choice for this project.

Because Gemma runs locally through Ollama, the local AI workflow can process receipt images on the user's own computer rather than requiring a hosted AI inference API. The natural-language search also uses local inference, with receipt metadata sent to the local service instead of the original images.

Once the model has been downloaded and installed, local inference can work without an internet connection, provided Ollama and the application are running correctly.

This approach also avoids per-request charges from a hosted AI API, although it still uses the computer's hardware and electricity.

Open-weight models give developers the flexibility to run models in their own environment and build around them. That makes experimentation possible without committing every inference request to one external service.

There are trade-offs. Local inference depends on the user's available hardware, and initial installation requires downloading the model. A hosted model may be more convenient on devices that cannot run AI locally.

For Receipt Raccoon, I chose the local approach because control over personal documents is part of the product, not just an implementation detail.

I haven't measured a specific number of minutes saved, so I won't invent one.

The intended payoff is simple: less time searching drawers, opening random files, typing purchase details manually, and trying to remember warranty dates.

A family could use Receipt Raccoon to keep appliance bills together. Someone replacing a phone could find the purchase details they need. And when a warranty is about to expire, the information is already organized.

The aim is to do a little organizing once and make future searches easier.

That's the kind of laziness I wanted to build for: not avoiding something important, but removing the unnecessary effort around it.

Best Use of Gemma — Receipt Raccoon uses Gemma 3 for local receipt extraction and natural-language receipt search through Ollama.

Building this project reinforced something I appreciate about open innovation: useful AI doesn't always need to live behind a remote API. Sometimes the best solution is a model running on your own machine, doing a small but genuinely useful job.

Thanks for checking out Receipt Raccoon! 🦝

Quelle: dev.to (dev.to). Original öffnen