Bank alerts to a day-book, with a local Gemma
Description and use
A browser‑only day‑book app for a Nigerian POS operator automatically parses Moniepoint email alerts, extracts transaction details and customer names using a local Gemma 3‑1B model, runs offline with WebGPU acceleration, and summarizes daily totals without sending data to a server.
Problem
A POS operator in Port Harcourt, Nigeria, manually records bank transfer alerts in a notebook, which is time‑consuming, error‑prone, and discourages daily balancing. Customers often claim payments have not arrived, causing further confusion.
Outcome
The app achieved 5/5 accuracy on real alerts for kind detection and 4/5 for name extraction, with 30/30 real‑world synthetic alerts for kind and 23/30 for name. The model runs offline after a one‑time 859 MB download, and the app functions without internet, making it suitable for unreliable connectivity.
Workflow
- Paste Moniepoint alert emails into the app
- The app parses fixed fields (time, amount) via code
- Keyword rules identify the kind of money (transfer, airtime, reward, failed)
- Gemma 3‑1B model extracts the customer’s name from the free‑text line
- The app checks the name against guard rules and stores it as JSON
- The user can confirm or reject the name; if rejected, the entry stays "not read"
- The app calculates daily totals, estimated charges, and flags suspicious rows
- The user copies the generated WhatsApp text to report to the business owner
Evidence
She pastes the alert emails, and she gets: Rows with the time, the amount, the kind of money and the customer's name. She types nothing.
Gemma found most of them: on the run in the video it found 3 of 3; on an earlier test run it found 2 of 3.
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.
- Record date: 2026-10-19T06:56:30.313Z