Skip to content

Side product · Household spending app

Masroof

مصروف (“allowance”)

Never overpay twice.

An app my family uses to log what we spend in seconds, and to check, right at the shelf, whether a price is a good deal. It works offline.

Built solo: product, design and engineering.

Masroof price check: lowest, average and highest price for a product, by store, with a good deal badge
Masroof report: total spending for a quarter and a breakdown by category
Masroof entries list with a scanned receipt and single purchases
To log an item
<10s
Arabic and English, full right-to-left
EN · AR
Specs written before coding
14
Automated test files
46

The journey.

  1. 01

    Idea

    We tracked spending in our heads and on scraps of paper. In the store we only wanted to know one thing: is this a good price?

  2. 02

    Spec

    Wrote a short spec with goals, what I wouldn’t build yet, and one test of success: log a grocery item in under 10 seconds, on a phone, offline.

  3. 03

    Build

    A React app that works offline and syncs later, in Arabic and English, with barcode scanning and spending reports by category, store and prepaid electricity.

  4. 04

    AI

    Take a photo of a receipt or scan an Egyptian e-invoice QR code. Gemini turns it into items matched to our own product list, ready to check.

  5. 05

    Iterate

    Using it every day set the next steps: a good deal / bad deal price check, a better iPhone barcode scanner, and typing the code in when small barcodes won’t scan.

Product decisions.

Works offline first
We shop in aisles with bad signal. Entries save on the phone and sync when the connection comes back.
No budgets or bank sync in the first version
I left them out on purpose, so daily logging shipped first and stayed fast.
Past purchases beat the AI’s guess
If we bought an item before, its category comes from our history, not from the model.
Real data over AI when we have it
E-invoice prices come straight from the tax authority. The AI only tidies up item names.
Compare prices over 6 months
Prices change. Older data would make the good deal check wrong.

How I think about it.

Design for the moment it’s used
A servant at a church door with forty kids arriving can’t type names into a list, so Flock’s QR attendance works offline. Masroof had to log an item in under 10 seconds, in a store with weak signal.
Decide what not to build
Masroof’s first version left out budgets, bank sync and receipt photos. AI receipt scanning only came after daily logging worked.
AI helps, people decide
Masroof’s receipt scanner fills in items for you to check, and past purchases override the model. At Luciq I added checks and fallbacks for unreliable LLM output.
Watch real use, then improve
When iPhone barcode scanning didn’t work well, I swapped the scanner and added typing the code in. At Luciq, we tuned prompts from real customer feedback.

Built with

  • React
  • TypeScript
  • PWA
  • IndexedDB
  • Node.js
  • Express
  • MongoDB
  • Gemini API

How I build: I write the spec and the plan, AI coding agents write code against them, and nothing ships unless the tests pass.

More work.

Let’s build something.

Open to remote product engineering and senior front-end roles. Email is the fastest way to reach me.