The platform

Built once.Under all three.

An inventory operation, a therapy practice and a creator agency keep almost nothing in common on screen — and almost everything in common underneath. Tenancy, roles, invites, background work and the audit trail are built once here, which is why a new industry is a set of pages rather than a second product to keep alive.

What every edition gets

The shared half.

None of this is optional or priced separately. It is the floor the industry pages stand on.

A database per company

Every tenant is provisioned its own Postgres schema, migrated on its own stream. Isolation is a boundary in the database rather than a company_id someone has to remember to put in the WHERE clause.

Editions, not forks

A company type is a row, registered at runtime, that decides which pages exist and which actions can be granted. All three run the same shell, the same auth and the same deploy.

Roles built from real routes

The roles editor offers a verb only where a route exists for it, so there is no checkbox that grants a key nothing ever checks — and it never offers a therapy practice a warehouse permission.

Grants down to the field

Some permissions hide a page; some hide a number on a page someone is meant to open. Cost, margin and profit come off the wire without "costs & profit", and a visit's billable hours without "visit billing".

Tabs per role

What a person sees in the sidebar is granted, not derived from a job title. Two people with the same title can be given different consoles.

Invite links

Staff join through a link that is verified before the account is created, so a used or expired link never leaves a half-made user behind. Links can be listed and revoked.

One login, several companies

Membership is per company. An operator working across two of them switches company rather than signing out, and their role in each is separate.

Work that outlives the request

Parsing a stack of shipping labels or recomputing stock does not happen while someone waits on a spinner — it is dispatched to a worker and reported back when it lands.

Who did what

Consequential actions are recorded and readable per member, so a question about a change has an answer that is not somebody's recollection.

On top of it

Three editions.

Each one has its own pages, its own roles and its own database migrations. Pick the one that matches what you run.

Get started

Tell us what
you run.

Accounts are set up with us rather than self-serve, so the edition, the roles and the first warehouse or roster are configured before anyone signs in.