Skip to content

Bizro

A full ERP turned into a multi-tenant SaaS: many independent businesses run on one deployment, each seeing only its own books, with an AI layer that reads supplier bills from a phone photo, chases late payers and answers questions about the business in plain language, plus a plan and billing console, a ten minute setup and a Play Store app on the same login.

Platforms & SaaS
Service
Overview

The context

Small distributors, hardware stores and wholesalers in Pakistan run on paper registers and spreadsheets, and the accounting packages built for them are either desktop software from a decade ago or per seat cloud tools priced for companies ten times their size. We had already built a full ERP for a single distributor and watched it change how that business ran. Bizro is that system rebuilt as a product: the same depth of ERP, sold as a monthly subscription that a shop owner can start on their own.

The operator console: tenants, plans and bank transfer verification on its own address
The operator console: tenants, plans and bank transfer verification on its own address
The problem

What we were solving

  • Selling the same ERP to fifty businesses one installation at a time does not work. Every one of them would need its own deployment, its own upgrades and its own backups, and the cost of running them would grow faster than the revenue.

  • Putting all of those businesses in one system creates the risk that matters most: one company seeing another company's customers, prices or books. A bug in a single query is enough, and no amount of careful reviewing makes that risk go away on its own.

  • A business that switches systems is not starting from zero. It arrives mid life with money owed to it, bills it has not paid, stock on the shelves and a bank balance, and if any of that lands in the new system twice the books are wrong from day one.

  • The people who need this run their day from a phone on a shop counter, often on a modest handset and an unreliable connection, so a desktop first web app would have been unusable exactly where the work happens.

  • The real reason small businesses abandon accounting software is the typing. Every supplier bill has to be keyed in line by line, so within a month the system is behind reality and nobody trusts the numbers in it.

The approach

How we built it

  1. Put every business on one shared database and one schema, tagged by business, rather than a separate database each. That is the only shape that lets one small server serve dozens of companies and get updated once rather than fifty times.

  2. Enforced separation twice, independently. The application narrows every query to the business making the request, and the database applies its own row level rules underneath, so a query that slips past the first layer returns nothing at all instead of somebody else's records.

  3. Made the active business come from the server side session and nowhere else. Never a header, never a parameter, never a cookie the browser can edit, and the check is re run on every request so removing someone's access takes effect immediately.

  4. Gave the operator console its own address, its own login and its own database role, and made the build fail if console level access is ever imported into the tenant application by mistake.

  5. Built plans as a matrix of modules and ceilings, then enforced them in the system itself. A module outside your plan is refused when it is called, not merely hidden from the menu, and lapsing drops a business to read only rather than locking it out of its own records.

  6. Wrote the setup as a branching wizard with a hard rule underneath it: opening balances carry the ledger and open invoices carry the detail, never both, because importing both counts the same money twice. Nothing commits until the books balance, and any import can be undone in one click.

  7. Designed every screen at phone width first and measured what a page actually downloads, then moved the heavy pieces off the first load so the busiest screens got roughly a third lighter.

  8. Shipped the same product three ways on one login: the web app, an installable version that keeps working when the browser is closed, and a Play Store app, with alerts reaching whichever the owner actually uses.

  9. Put an AI clerk on the worst job in the building. A supplier bill photographed at the counter comes back as a draft purchase entry with the supplier matched, the lines matched to the shop's own catalog, and anything odd flagged, and it stays a draft until a person posts it.

  10. Let the owner ask the business questions in plain language, in English or Urdu, and had the assistant answer from the same records every screen reads. Questions become checked, validated queries scoped to that one business. The model is never handed the database and never writes its own SQL, because on a shared system one clever prompt would otherwise read everybody's ledger.

  11. Wired the assistant into the work rather than leaving it as a chat box. It drafts the WhatsApp payment reminders for late customers, flags prices that jumped since the last purchase, and points at the invoices worth chasing this week.

Switching in: opening balances gated on a balance check, with the import preview beside it
Switching in: opening balances gated on a balance check, with the import preview beside it
Why it lasts

Why it holds up

One business can never see another

Separation is enforced by the database itself, not only by careful code, so a mistake in one query returns nothing rather than a competitor's customer list.

Everyone gets the same upgrade at once

There is one system to update, so a fix or a new feature reaches every business the same day instead of being rolled out shop by shop.

The books start clean

Balances have to add up before anything is written, so a business that switches over does not spend its first month reconciling numbers that were double counted on the way in.

A wrong import is not a disaster

Any batch that came in wrong can be rolled back in one click, so trying the migration is safe rather than a one way door.

Losing a payment does not lose the business

An unpaid month drops to read only, so the owner keeps their records and can pick up where they left off instead of being locked out and leaving.

It runs on the phone they already own

Screens are built for a phone first and the heavy parts load only when needed, so it stays usable on a modest handset at a shop counter.

AI drafts, a person decides

Nothing the assistant reads or suggests reaches the books until someone approves it, so the time saving never comes at the cost of trusting the numbers.

The assistant cannot wander

It answers from checked queries against one business's own records, so no question, however it is phrased, can reach another company's data.

The AI assistant: a bill read from a photo into a draft, and the business answering a question about itself
The AI assistant: a bill read from a photo into a draft, and the business answering a question about itself
What it does

Key features

  • Full ERP per business: inventory, sales, purchasing, POS, quotations, deliveries, returns and warranty claims
  • Real double entry accounting underneath: journals, ledger, chart of accounts, trial balance, profit and loss and balance sheet
  • Cash book, bank, credit and deposit registers, approvals and a system wide audit log
  • Every business keeps its own numbering, so both start at invoice one without colliding
  • One person, many businesses: an accountant serves several clients from one login with a different role in each
  • Operator console on its own address for tenants, plans, trials, suspensions and payments
  • Plans as a module matrix with user, invoice and storage ceilings, enforced by the system rather than the menu
  • Bank transfer billing: the business uploads a receipt, the operator verifies it and the period rolls forward
  • Setup wizard with a fork for starting fresh or switching in, and a chart of accounts generated from the business type
  • Spreadsheet import with column mapping, validation, a preview, one click rollback and errors returned as a marked up file to fix in Excel
  • Salesmen module with targets, commissions and location stamped field visits
  • Installable web app with an offline shell, a Play Store Android app, and alerts by push to either
  • Urdu and right to left support built into the interface, plus a simplified mode for less technical staff
  • Configurable WhatsApp templates and a public product catalog per business
  • AI bill capture: photograph a supplier bill and get a draft purchase entry with the supplier and every line matched to the shop's own catalog
  • AI price watch: a line that costs more than it did last time is flagged before the bill is posted
  • Ask the business: plain language questions about sales, stock, customers and the books, answered from that business's own records only
  • AI drafted payment reminders for late customers, sent over WhatsApp with one press
One login across several businesses, on the Android app and installable web
One login across several businesses, on the Android app and installable web
The result

The outcome

The hard part of this project was never the ERP, which already existed and was proven in a real distributor. It was turning one company's system into something dozens of companies can share safely, sell themselves into, and leave without losing their records, then adding an AI layer that removes the data entry without ever being trusted blindly. Isolation, plan enforcement, the opening balance rule and the assistant's query scope are each covered by their own automated proof that runs before anything ships, because on a shared system those are the failures you cannot apologise your way out of.