Skip to content
befday
Esc
navigateopen⌘Jpreview
On this page

Consumer Receipt Management

A free consumer receipt wallet in apps/native — scan via LLM vision or enter manually. Merchant-funded via aggregated spend insights; consumers are never charged.

Status: Accepted (direction); implementation deferred
Date: June 2026
Decision: Add a receipt wallet to apps/native where users store every purchase (befday merchant or not), via photo scan (LLM-vision auto-fill) or manual entry. Scanning is free for consumers. Cost and upside are merchant-funded (aggregated spend insights + targeting), never by charging consumers.


TL;DR

A free receipt wallet in apps/native. Manual entry is primary; LLM-vision scan is the accelerator. It captures a user’s total spend (incl. non-befday merchants), which powers personalization and a merchant insights pitch. Consumers are never charged; monetization is merchant-side.


Context

Today befday only sees spend at befday merchant POS stores. The consumer app (apps/native) is a birthday-perks / loyalty app — discover shops, bookmark, claim vouchers, track stamps. It has no record of spend outside the befday network.

Receipt management was proposed for three reasons:

  1. Data loop — capture a user’s total spend (incl. non-befday merchants) to power perks and personalization.
  2. Retention — a durable reason to keep the app installed (“my purchases live here”).
  3. Merchant sales wedge — “befday users near you spend RM X/month on coffee” is a strong acquisition pitch.

Open question: is scanning too expensive, and should consumers pay for it?


Decision

Build a free consumer receipt wallet in apps/native. Manual entry is the primary, always-available path; LLM-vision scan is the accelerator. Monetization is merchant-funded (aggregated, anonymized spend insights + birthday-perk targeting). Consumers are never charged.

Why not charge consumers

  • Scanning is cheap (see below) — a consumer paywall loses more in adoption than it recovers.
  • A paywalled receipt wallet churns; bank/expense apps already scan receipts for free.
  • The data is the product, monetized merchant-side. Charging users to contribute it is backwards.

Why it works (with the right framing)

A standalone “receipt vault” is a low-engagement utility. It works because it feeds the perks engine:

Free consumer scanning → total spend data (incl. non-befday merchants)
        │                              │
   Retention (wallet)         Merchant insights & targeting
        │                              │
   Perks personalization  →  "befday users spend RM X/mo on coffee
                              near you — run a birthday campaign"

Cost Analysis (receipt OCR / auto-fill)

Two approaches; prices approximate, 2026, USD.

Option A — Dedicated receipt OCR APIs

Purpose-built; return structured merchant / date / total / tax / line items.

Provider Rough price Notes
Veryfi ~$0.08–0.16/receipt Best accuracy, full line-item extract
Taggun ~$0.07–0.10/receipt Cheaper, decent
Mindee ~$0.10/receipt Good DX, small free tier
Google Document AI (Expense) ~$0.10/page Scales with GCP
AWS Textract (AnalyzeExpense) ~$0.10/page AWS ecosystem

Option B — Multimodal LLM vision (chosen direction)

Send the photo to a vision model; prompt for structured JSON; validate; fall back to manual edit on low confidence.

Model Rough cost/receipt Notes
Gemini Flash-class ~$0.001–0.005 Cheapest, capable for receipts
GPT mini/vision ~$0.003–0.01 Good, structured output

LLM vision is 10–100× cheaper than dedicated OCR and “good enough” for receipts. Trade-off: build your own validation / retry / merchant normalization, and slightly lower accuracy on crumpled thermal receipts (mitigated by manual-edit fallback).

Projected spend (Gemini Flash-class @ ~$0.003/receipt)

Scale Monthly scans Est. cost/month
1,000 users × 5 receipts/mo 5,000 ~$15
10,000 users × 8 receipts/mo 80,000 ~$240

Manual entry costs ~nothing (storage only). Cost is negligible until serious scale.


Cost-control measures (no consumer charge)

  • Use LLM vision, not dedicated OCR — ~30× cheaper per receipt.
  • Manual entry is primary, scan is the accelerator — data keeps flowing even when a scan fails.
  • Soft per-user monthly scan cap (e.g. 30–50) purely as abuse protection, not monetization; ~99% of users never hit it.
  • Cache / dedupe — store extracted JSON, never re-OCR the same image.

Privacy & Compliance (must-do)

Aggregating consumer spend has real legal + trust implications (Malaysia PDPA; app-store rules):

  • Opt-in with clear consent (“help us send you better birthday perks”).
  • Sell merchants aggregated / anonymized insights only — never individual receipts.
  • Be transparent in-app; trust is the entire reason a user keeps the app.

Data Model Impact (sketch)

New consumer-side tables, keyed by user.id, optionally linked to a befday shops.id when the merchant is recognized.

receipts

Column Type Notes
id uuid PK
user_id text FK → user.id
shop_id uuid nullable FK → shops.id (set when merchant recognized)
merchant_name text as captured / normalized
merchant_category text nullable (e.g. café, grocery)
total_cents integer receipt total
tax_cents integer nullable
currency text ISO 4217, default MYR
purchased_at timestamp date on the receipt
source enum scan | manual
image_url text nullable — stored photo
ocr_confidence integer nullable — basis points; drives manual-review prompt
created_at timestamp

receipt_items

Column Type Notes
id uuid PK
receipt_id uuid FK → receipts.id
name text line-item description
qty integer default 1
price_cents integer line total

Note: this is consumer-owned data, distinct from merchant POS orders. A receipt may be linked to a shop_id but is never a substitute for a server-verified orders record.


Scan Flow (sketch)

1. User taps "Add receipt" → choose Scan or Manual
2. Scan: expo-camera capture → upload image
3. Server sends image to LLM vision → structured JSON
   (merchant, date, total, tax, line items, confidence)
4. Low confidence → prefilled manual-edit screen for correction
5. Save → receipts (+ receipt_items); link shop_id if merchant recognized
6. Feed totals into perks/personalization (opt-in)

Consequences

Type Consequence
Pro Closes the data loop beyond befday merchants; powers personalization and a strong merchant pitch.
Pro Retention utility that complements (not replaces) the perks core.
Pro Cheap to run (~$15–240/mo at realistic scale); no billing complexity for consumers.
Con Receipt OCR is commoditized — only valuable because it feeds the perks engine; must not ship as a standalone vault.
Con Requires explicit privacy/consent work (PDPA) and anonymized aggregation before any merchant-facing insight.
Con LLM-vision accuracy on poor receipts needs a solid manual-edit fallback.

Resolved Decisions

Question Decision
Build it? Yes — as a perks-integrated wallet, not a standalone vault
Where? apps/native (consumer)
Scan tech LLM vision (Gemini Flash-class), structured JSON + validation
Charge consumers? No — free scanning; manual entry always available
Monetization Merchant-funded — aggregated/anonymized spend insights + perk targeting
Cost control LLM vision, manual-primary, soft per-user scan cap, dedupe/cache
Privacy Opt-in consent; merchants see aggregates only (PDPA)

Open Questions

  • Merchant normalization: how to map free-text merchant names to canonical merchants / categories (and to befday shops)?
  • Perk linkage: what spend signals trigger which perks (category thresholds, share-of-wallet)?
  • Insight productization: what exactly do merchants buy, and at what aggregation floor (min cohort size) to stay anonymized?
  • Image retention: keep receipt photos long-term, or extract-then-discard for privacy/storage?
  • Phasing: ship manual-only first (zero variable cost) and add scan once perk linkage proves retention?

Was this page helpful?