Dev.to · 4 min read

Kiroku

Kiroku

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 2: Side Hustle What I Built Kiroku turns financial documents into structured, exportable records—without them ever leaving your machine. Drop in PDFs or phone photos. It extracts vendor details, document numbers, dates, currency, subtotal, tax, and total; scores confidence per field; detects exact duplicates using SHA-256 and probable duplicates using vendor, amount, and dates within ±7 days; and queues uncertain records for human review. The result: RFC-4180-compliant CSV exports ready for QuickBooks, Xero, or your accountant. Demo kiroku-jade-five.vercel.app Code jitenverma076 / Kiroku Kiroku turns a folder of invoices, receipts, and bills into searchable, exportable financial records. It reads the vendor, dates, and amounts off each document, flags whatever it is unsure about, and hands you a CSV your accountant can open. Kiroku Kiroku (記録, "records") turns a folder of invoices, receipts, and bills into a searchable, exportable set of financial records. It reads the vendor, dates, amounts and tax off each document, flags anything it is unsure about, and exports a CSV your accountant can use. It runs entirely in your browser. Documents are parsed, extracted, and stored in the tab — nothing is uploaded to a server. There is also a self-hosted backend if you would rather keep everything in a SQLite file on disk. Use it Open the deployed app, or run the frontend yourself: cd frontend npm install npm run dev # http://localhost:5173 / is the landing page and /documents is the app. Nothing else is required — no Python, no database, no API keys. How it works Step In the browser Read a PDF pdf.js reads the text layer Read a scan or photo tesseract.js runs OCR … View on GitHub How I Built It An open-weight model, running entirely locally. typeform/distilbert-base-uncased-mnli (Apache 2.0) runs through Hugging Face Transformers on Apple MPS, CUDA, or CPU via PyTorch. Its job is deliberately narrow: classify documents as invoices, receipts, bills, or credit notes. Classification is probabilistic; financial extraction is deterministic. Every monetary field comes from a labelled-regex extractor with per-field confidence scoring. A hallucinated total is worse than a blank one, so the extractor returns nothing rather than guessing, leaving uncertain fields for the review queue. Optional, non-blocking, and offline-capable. The model sits in a separate requirements-ml.txt and loads on a background thread that imports never await. Testing confirmed imports remain around one second offline instead of hanging. Without the model, keyword and document-structure matching take over, with zero network calls. Weights download once; subsequent inference runs offline. Why Does Open Innovation Matter? It's the only reason this product can exist. Financial documents never leave your machine. A closed API would send sensitive data—client names, billing rates, bank details—to a third party that may retain or train on it. That's fundamentally a different product. Zero marginal cost changes the design. Open weights make re-extraction free, turning it into a button rather than a billing decision. Freelancers processing 500 receipts a year shouldn't have to think twice about reprocessing. I could verify my own claims. I blocked the Hugging Face endpoint, measured what broke, found offline imports hanging, and fixed them. With a closed API, you can't inspect what leaves your machine. You take the vendor's word for it. Open weights give the app a working floor. No network or model weights? Classification falls back to keyword matching, and imports still work. A closed API offers no such fallback: no key or connection means a dead app. Pinned weights mean reproducible books. Hosted models can change silently and alter extraction results. For records that feed a tax return, unversioned model drift is a liability. The honest caveat: Weights download from Hugging Face on first run. After that, the app runs fully offline. That dependency is transparent and verifiable precisely because the entire stack is open.

This is a summary aggregated from Dev.to. Read the complete article on the original site:

Read full article at Dev.to

More AI & Machine Learning News