Bank alerts to a day-book, with a local Gemma
Description and use
A browser‑only day‑book app for a Nigerian POS operator uses Gemma 3 1B to parse bank transfer alerts, auto‑extract customer names, and produce an offline end‑of‑day summary.
Problem
Mama POS needed a way to record bank transfer alerts without manual notebook entry, verify balances, and generate end‑of‑day summaries while keeping all data offline.
Outcome
The app correctly parsed all 5 real alerts with 5/5 kind accuracy and 4/5 name accuracy, and 30/30 synthetic alerts for kind and 23/30 for name. It runs offline after a one‑time 859 MB download and works on devices with a GPU.
Workflow
- Open the app in a browser with WebGPU support.
- Paste the email alert into the input field.
- Code extracts time, amount, and kind of money.
- Gemma 3 1B reads the customer name from free‑text.
- The app displays a row with all fields and a status (Landed/Not seen yet/2 payments).
- Repeat for each alert of the day.
- At end of day, the app shows total money in, estimated charges, rows needing review, and a text ready to paste into WhatsApp.
- Copy the summary to WhatsApp and send to the business owner.
Evidence
She writes each payment in a notebook, and it "takes long".
All data stays in the browser. Nothing goes to a server.
The model is Gemma 3 1B instruct (ONNX, q4), running in the browser with transformers.js on WebGPU.
Results (all in [bench/RESULTS.md])… her 5 real alerts, her labels | 5/5 | 4/5
The first load downloads 859 MB once; after that it loads in a few seconds, with no internet (tested with the network off: ready in 6 s)
- Record date: 2026-11-03T04:14:02.830Z