Built for the real world

Every feature your clients
actually depend on.

Not a checkbox list. These are the hard problems we've already solved so your clients don't have to learn the hard way.

📡

Offline-durable capture

Works through power cuts, dead Wi-Fi, and flaky routers.
  • Every action is written to a local IndexedDB outbox before it ever touches the network.
  • When connectivity returns — even after a full power cycle — the outbox syncs automatically with conflict resolution.
  • POS transactions, stock counts, and shift sign-ins captured without hesitation, regardless of signal.
🔐

DB-enforced role security

Four roles. Zero trust. Every row locked at the database.
  • Postgres Row-Level Security (RLS) policies enforce access — not just in the UI, but at the data layer itself.
  • Owners, managers, staff, and members each have precisely scoped read/write access.
  • Even direct database connections can't bypass the policy — there is no "admin mode" that leaks data.
🏪

Multi-store & multi-tenant

One platform, unlimited companies and stores.
  • Spin up a new tenant organisation in seconds from the super-admin console.
  • Each company's data is fully isolated — schema-level separation backed by RLS.
  • Assign staff to multiple stores within an org; manage all from a single owner dashboard.
📅

Shift rule engine

Hour caps, no double-booking, automatic conflict detection.
  • Configurable weekly hour caps per employee with automatic over-hour warnings.
  • Shift requests and approvals flow through a manager-gated queue.
  • Double-booking prevention built into the scheduling engine — never assign the same person to two concurrent shifts.

Stock reconciliation

Expected vs counted, variance surfaced in real time.
  • Baseline stock counts co-signed by manager and staff create an immutable starting point.
  • Purchases, wastage, and POS sales are tracked continuously to compute expected on-hand.
  • Reconciliation surfaces variances with drill-down detail — instantly flag shrinkage or data entry errors.
📊

Turnover & margin analytics

Revenue, COGS, and gross margin — across all stores.
  • Group-level KPI dashboard gives owners a consolidated view across every location.
  • Drill down from org → store → SKU to find where margin is won or lost.
  • Export-ready reports in CSV; live refresh on every shift reconciliation.
🛍

Customer storefront

A full customer-facing online shop, built in.
  • Customers browse, add to cart, and checkout against live inventory — no separate e-commerce platform needed.
  • Store-credit wallet lets customers accumulate and spend loyalty points.
  • Fully branded per tenant — same white-label theming as the ops platform.
🎨

White-label branding

Drop in artwork, get a completely re-skinned product.
  • Each tenant supplies a logo URL and a handful of brand colour hex codes.
  • CSS custom properties cascade through every component — zero rebuild, instant re-skin.
  • Your clients' staff never see "PebblePay" — they see your client's brand.
📱

Android + web

Flutter mobile and Next.js web — one shared data model.
  • Flutter Android app for shop-floor staff: POS, stock takes, and shift sign-in — touch-optimised for the counter.
  • Next.js 16 web app for managers and owners: reports, scheduling, reconciliation, and the full ops console.
  • Both clients share the same Supabase backend and the same role/module contract — one data model, two surfaces.

Convinced? Let's talk.

We'll scope your deployment, agree on modules, and get your first tenant live — often in the same week.

Start a conversationSee how it works →