Skip to content
Ashutosh Giri
All projects
SaaS · Enterprise software2026Live

AUXO

Open the outlet, then run it — one platform, one thread

A multi-tenant SaaS platform for restaurant and retail groups that open outlets at scale. Where to open, argued from evidence; the build with CFO-grade CAPEX and procurement; then the same outlet's reservations, kitchen, stock, guests and daily operations once it trades. Twenty-five modules, ninety thousand lines of TypeScript, and a physically separate database for every customer.

Lines of TypeScript
91,700Lines of TypeScript
Modules, build and run
25Modules, build and run
Database tables
229Database tables
Database per tenant
1:1Database per tenant
AUXO executive dashboard
The executive dashboard across a 25-outlet portfolio. Every tile drills through to the rows behind it.

What it is

AUXO is a multi-tenant SaaS platform for companies that open physical outlets at scale — restaurant groups, café chains, retail estates. A customer gets a workspace, invites their team, and runs the whole life of an outlet inside it: the site they are considering, the project that builds it, the money it costs, the vendors who fit it out, and then — once the doors open — the tables, the kitchen, the stock, the guests and the daily checklists.

That last half is what changed this year. AUXO started as an expansion tool. It is now the system the outlet keeps using after the ribbon is cut.

Twenty-five modules, two hundred and twenty-nine tables, ninety-one thousand lines of TypeScript, 658 server calls — and a tenancy model built for the one failure a SaaS business cannot survive.

The problem it solves

Opening a restaurant is a construction project, a procurement programme, a licensing exercise and a hiring drive that all have to land on the same day. Opening twenty-five at once, across four cities, is a different problem — and almost every group doing it runs on spreadsheets, email threads and a WhatsApp group per site.

Then the outlet opens, and a second set of tools takes over: a reservations app, a POS, a stock sheet, an audit app, a marketing tool. None of them knows the outlet was ever a project. The sanctioned budget, the vendor who fitted the kitchen, the licence that expires in eleven months — all of it is in a different system from the one the manager looks at every morning.

AUXO’s premise is that this is one thread, not two products.

The journey — one outlet, start to finish

Every screen in AUXO sits somewhere on this line, and the hand-offs are built, not left to a human to remember.

ATLAS ─────▶ Projects ────▶ CAPEX ──────▶ Supply Chain ▶ Checklist ▶ Run
site scored  24 stages,     sanction by   RFQ · PO ·     155 items,  outlet
& approved   Gantt, tasks   category,     GRN · invoice  go-live     switched on:
                            revisions     · payment      gate        book, till,
                                                                     stock, ops

Where to open. ATLAS scores a candidate site on catchment, competitor density, white space and coverage, across 4 km neighbourhood grids of the whole network. A site that is approved becomes a project with one click — location, brand and geography carried across, never retyped.

Get it built. The project is provisioned with a 24-stage plan, a Gantt with a computed critical path, dependency graphs and a 155-item opening checklist. Drag a bar and everything downstream reschedules. Vendors are sourced by RFQ, committed by purchase order, received against goods receipts, and paid against invoices — with multi-level approvals at each hop.

Switch it on. When the project reaches go-live, AUXO turns the outlet on: operations, reservations, the till, the kitchen display and the stock ledger all wake up for that outlet, already knowing its brand, its floor and its vendors, because they were the project’s.

Control the money like a finance controller would

CAPEX in AUXO is not a budget-versus-actual tile. It is the financial spine of the build, modelled the way a CFO actually runs a programme:

  • Sanction by category — civil, interiors, kitchen equipment, HVAC, electrical, technology and the rest — with revisions that go through approvals and keep the original figure beside the sanctioned one.
  • Commitments and cash from the documents, not from a spreadsheet: every purchase order, goods receipt and invoice rolls up automatically, so committed, booked and paid are always what the paperwork says.
  • Estimate at completion with headroom per category, and a decision list that surfaces exactly which outlet has blown which category by how much.
  • A 90-day cash forecast built from what falls due on open orders and invoices, with retention and advances handled.
  • A business case per outlet — revenue per month, payback, IRR and NPV against the sanction — so an opening is argued in the same terms Finance argues it.
  • Capitalisation — what becomes an asset, at what class and useful life, with the GST credit that is claimable and the credit that is blocked.
  • Benchmarks and templates — cost per square foot by concept and city, learned from the portfolio, so the next budget starts from evidence.
  • A policy layer — approval bands, thresholds and who may sanction what — enforced at the point a purchase order is submitted, not audited afterwards.

Run the estate once it trades

The second half of the platform, built in eight phases this year.

Reservations. A host stand, a book with pacing per 15-minute slot, floor plans and table combinations, a waitlist, guest messaging with a consent ledger, and feedback after the meal. The same reservation the guest made is the one the till seats.

Point of sale. A native till and a kitchen display, per outlet. Bills settled while the network is down are queued as complete packets and posted when the server answers, booked exactly once by reference however many times they are retried. Day close produces a Z-report; the numbers reconcile to the ledger, not to a printout.

Materials. Recipes, the stock ledger, indents, transfers, base kitchen production, counts and theoretical-versus-actual food cost — on the same vendor engine as CAPEX. Wastage is a first-class entry with a reason and a photo, and anything over threshold goes to Approvals before it counts. Cuts and yields, bill passing and escalations live here too.

Campaigns. Guests, segments and journeys — “regular after three visits”, “lapsed after ninety days”, “repeat no-show” — with consent enforced at the outbox rather than on a checkbox. WhatsApp runs against the real Business Cloud API when credentials are present.

Operations. An SOP engine where a daily checklist, an FSSAI audit and a regional store visit are the same object with different settings: 27 input types, weighted scoring, auto-fail items, conditional logic, and evidence carrying GPS, device and duration. Maintenance tickets, compliance records and licence expiries roll into one restaurant health score.

Command Centre and Reports. A daily huddle view per outlet, an inbox of what needs a decision, and a report workbench that exports to CSV, Excel, PDF, PNG and PowerPoint.

Underneath, a Microsoft Dynamics 365 Business Central connector keeps finance in step, a communications hub routes email, SMS, WhatsApp and in-app messages through one outbox with delivery logs, and AUXO Brain answers questions from live rows rather than from a model’s guess — scoped to what the person asking is allowed to see.

The tenancy model

For a multi-tenant product there is exactly one failure that cannot be walked back: one customer seeing another customer’s data. A wrong number in a report is embarrassing and fixable. A cross-tenant read is a disclosure, and no later release un-discloses it.

Most SaaS keeps every customer in shared tables and separates them with WHERE tenant_id = ?. That works precisely as long as every query in the codebase remembers the clause — including the report written three years later by someone who has never heard of the tenancy model. One forgotten WHERE and the product leaks.

AUXO gives every workspace its own physically separate database. Another customer’s rows are not in the file being queried. A query that forgets to filter does not leak — it returns nothing. The mistake is not caught. It is unrepresentable.

The tenant is bound once at the edge of the request in an AsyncLocalStorage scope and read at the bottom by getDb(), rather than threaded through several hundred call sites where a single miss would be silent. On the server, a database access outside any tenant scope throws rather than falling back:

Database access outside a tenant scope. On a multi-tenant server every request must run inside runInTenant(); this is refused rather than served from a shared database.

Refusing is recoverable. Quietly opening a shared database is not. That guard caught a real defect the first time it ran — handler registration was resolving getDb() once at startup, which on a server would have captured the first customer served into every handler’s closure and served their rows to everyone afterwards.

Sessions are HttpOnly cookies, never localStorage. Passwords are scrypt with a unique salt. Sign-in with Google or Microsoft is built in (OpenID Connect with PKCE, tokens verified against the provider’s keys). Account, workspace and membership are re-resolved on every request, so suspending a workspace or removing a member takes effect immediately rather than whenever a session happens to expire. Public sign-up is closed; workspaces are created by invitation.

Deployable three ways — which is a sales advantage

The hosted SaaS is the product. But the same codebase also runs as a desktop application and on a phone, and that matters commercially rather than being a curiosity.

Enterprise buyers in this sector routinely refuse cloud storage of commercial terms and site data. AUXO can answer that: the identical product, running entirely on their own machine, with data never leaving it. Most SaaS competitors have to say no to that customer.

These are not three ports. They share the same handlers, the same schema and the same permission checks, and differ only in how a call travels:

        React interface  ·  identical on every surface
                     │
        ┌────────────┼────────────┐
        │            │            │
     HTTP      Electron IPC   Capacitor
        │            │            │
  per-tenant     local DB     local DB
   SQLite       (on-prem)     (mobile)

Adding a feature adds it everywhere, because there is only one of it.

How it runs in production

The hosted instance lives in Mumbai, behind Cloudflare, on a LiteSpeed Node runtime with a leased scheduler — two processes, one of which holds the lease and runs the outbox, reminders and nightly jobs while the other stands by. Tenant databases are backed up nightly and kept for fourteen days.

Every server exception, slow call and browser error lands in PostHog, and a scheduled AI agent reads the previous day’s failures each morning, fixes what it can, deploys, and reports. The site itself is a Cloudflare Worker; the product is not — a deliberate split, so the marketing page and the customer data never share a runtime.

Where it scales next

Being straight about the current ceiling, because a serious buyer will ask.

The hosted deployment runs as a single machine. Every tenant is a SQLite file on one volume, so a second machine would hold its own copy and the two would diverge. Scaling today means a bigger machine, not more of them.

That is the correct trade at this stage — it is fast, cheap to run, and the isolation guarantee is stronger than what shared-table competitors offer. The path beyond it is known and does not require rewriting the product: the data layer is reached through one function, so moving tenants onto Postgres or libSQL/Turso changes that layer rather than the twenty-five modules above it.

Seeing it

Every screenshot on this page is the live product running on fictional data — an invented group called Meridian Hospitality, its eleven brands, synthetic vendors and generated financials. Nothing here belongs to a real company.

Access is by invitation. Tell me what you want to see and I will set up a workspace with the full 25-outlet portfolio for you to change as you like.

Source

AUXO is closed source. The repository is private, and the server — handlers, schema, permission model, integrations — never leaves the machine it runs on.

Inside the product

Fourteen of the twenty-five modules

Every screen is the live product on fictional data — Meridian Hospitality, an invented group with eleven brands and twenty-five outlets.

Build

From a scored site to a switched-on outlet.

ATLAS — location intelligence
ATLAS — location intelligence — Catchment, competitor density, white space and coverage scored across the whole network. An approved site becomes a project with one click.
The project
The project — Site, build, money, readiness, operations and run — the six steps of one outlet's journey on a single screen, with the milestones and the cash curve beneath.
Gantt & critical path
Gantt & critical path — Drag a bar and everything downstream reschedules. Red is the critical path; late tasks are flagged against today.
CAPEX
CAPEX — Sanction by category, commitments and cash from the documents, estimate at completion, business case and what becomes an asset — with a decision list of every outlet that has overrun a category.
Supply chain
Supply chain — Vendor lifecycle from discovery to termination, with a procurement health score built from twelve weighted components.
Procurement
Procurement — RFQ → purchase order → goods receipt → invoice → payment, with approvals at each hop and a budget gate on submit.
Opening checklist
Opening checklist — 155 items per outlet across departments; readiness is the gate that lets a project go live.

Run

The same outlet, once it trades.

Operations
Operations — The SOP engine — daily checklists, audits, maintenance and compliance as one object with different settings, rolled into a restaurant health score.
Reservations
Reservations — Host stand, the book, floor plans, waitlist and guest messaging. The reservation the guest made is the one the till seats.
The till
The till — A native point of sale per outlet with a kitchen display behind it. Bills settled offline are queued and booked exactly once when the network returns.
Materials
Materials — Recipes, the stock ledger, counts and theoretical food cost — with wastage recorded by reason and routed through approvals over threshold.
Guest journeys
Guest journeys — Segments and automated journeys — regular after three visits, lapsed after ninety days — with consent enforced at the outbox, not on a checkbox.
AUXO Brain
AUXO Brain — An enterprise copilot answering from live rows, scoped to what the asker is allowed to see, with a daily briefing of what changed.
Reports
Reports — A workbench over every module, exportable to CSV, Excel, PDF, PNG and PowerPoint.

Want to look around inside it?

Workspaces are created by invitation. Tell me a little about what you want to see and I'll set one up on the demo portfolio.

Request access