Pistonlog's tenancy model is Company → Garages → Users. One company can run several garages — branches, locations, or specialist sites — and the data model is deliberately split between things shared across the company and things isolated per garage.
What's shared across the company
These records live at the company level. Move between garages and they follow you:
| Entity | Why it's company-level |
|---|---|
| Customers | A customer who books at your Bristol branch can also walk into Bath — same record. |
| Vehicles | The car's history follows the registration no matter which branch services it. |
| Users | One login, one identity, regardless of how many garages they work in. |
What's scoped to each garage
These are isolated per garage. The Bristol branch's settings can be completely different from Bath's:
| Entity | Why it's garage-level |
|---|---|
| Jobcards | Each garage runs its own work list. |
| Workflow statuses | The kanban columns at Bristol may differ from Bath's columns. |
| Job templates | Quick-add templates for common jobs are set up per garage. |
| Inspection templates | Each garage owns its own inspection checklists. |
| Custom roles & permissions | Roles are seeded per garage so you can give the Bath manager full access there while staying view-only at Bristol. |
| Reminder templates | MOT and service reminder schedules are per garage. |
| Suppliers, label colours, branding overrides | All garage-scoped. |
Team members and roles
A team member belongs to one or more garages via a join table. In each garage they have a different role with different permissions. Sarah might be a Manager at Bristol with full permissions and a Reception user at Bath with bookings-only access.
The Owner is the exception — there's one Owner per company and they bypass all permission checks at every garage.
Why this split
Customers and vehicles are shared because real-world ownership doesn't care about your branch boundaries. Everything else is scoped per garage because each garage runs its own workflow, has its own team, and may have a slightly different operation. Sharing it would force every site to standardise; isolating it means each site can evolve at its own pace.
Gotchas
Permissions are per-garage, not per-company
Granting someone jobcards.edit at Bristol does not grant it at Bath. If you have a team member who needs access at multiple sites, configure their role in each garage separately.
Customer history is automatically cross-garage
When a customer's car history appears on a jobcard, it includes jobcards from every garage in your company. You don't need to do anything — the data is already shared.