Tenant isolation in the data layer
Every table carries a workspace id and every repository method takes it as its first argument. Forgetting it returns nothing rather than somebody else's data. Unique keys are scoped per tenant, so two companies can have the same department name.