Personas & Roles
Pawdentity serves four personas across three surfaces, with a six-level role hierarchy shared by every layer of the stack.
Personas
Pet parent (customer)
Books stays, pays deposits and balances, signs agreements, uploads vet records, follows their pet's stay, and messages the front desk. Lives in the customer portal (/o/{slug}/portal) and, in the future, the iOS companion app. Same login door as staff.
Facility staff (volunteer → supervisor)
Runs the day: the facility board, check-ins/outs, care logging, bookings, POS. Front-desk employees handle CRM, messaging, and orders. The volunteer role sees only Dashboard and Board (note: the product decision is to drop volunteer; it still exists in the enum).
Facility manager / owner
Everything staff can do, plus: settings (branding, locations, role policies, agreements, reminders), catalog management, refunds, check-in overrides, time approvals, schedules, staff management (owner), and reports.
Platform owner (landlord)
Reviews tenant applications and provisions orgs at /platform. Defined as holding an active owner membership in any org.
The role hierarchy
Defined once in packages/domain (ROLE_RANK) and used by schema validators, backend policy checks, and frontend nav gating:
| Role | Rank | Typical use |
|---|---|---|
owner | 150 | Business owner; staff management, refund overrides |
manager | 100 | Shift lead with settings access |
supervisor | 75 | Senior floor staff |
employee | 50 | Front desk / floor staff — the default working role |
volunteer | 20 | Board-only access (being phased out) |
customer | 5 | Pet parents (portal only) |
roleAtLeast(role, min) is the comparison helper everywhere.
What each role sees (web app nav)
| Nav item | Minimum role |
|---|---|
| Dashboard, Board | volunteer |
| Clients, Pets, Visits, Calendar, Orders, Catalog, Notes, Messages, Schedule, Reports | employee |
| Staff | owner |
| Settings | manager |
Nav gating is user experience only — every backend function independently enforces its policy. See Roles & Permissions for the full policy-action table and the per-org override board.
Persona → surface map
| Persona | Surface | Entry |
|---|---|---|
| Pet parent | Customer portal | /login → portal |
| Pet parent | iOS app | native sign-in (mock today) |
| Staff / managers / owners | Staff app | /login → /accounts → /o/{slug}/dashboard |
| Platform owner | Landlord admin | /platform (link in org sidebar footer) |
| Prospect | Marketing + apply | pawdentity.com → /apply |
The Screen Flow Map uses these personas as swim lanes.