People¶
Everything QStack tracks about training, approvals, and escalation ultimately traces back to a person. This page covers the people model that every other module builds on: persons, job functions, workflow roles, and the manager chain.
You'll use this page as an Org Admin setting up new starters, a Quality role holder confirming coverage, or a line manager checking who reports to you.
Persons¶
A person is the regulated-quality-system identity that everything else hangs off: their job function, training record, signing history, and an optional manager (another person, used for escalation and approvals). It's the record every signature, training assignment, and approval points at.
A user is something narrower: a login account — an email and password that can sign in and, through its application role, act in the software. A person may have a linked user account, but the two are deliberately kept as separate records rather than one.
Why person and user are separate
Keeping the two apart is what lets the quality record stay intact independently of who can log in:
- Contractors and external auditors can carry a full training and signing history without ever being given a login — a person can exist with no user account at all.
- Deactivating a login never erases quality history. When someone leaves you disable their user account; the person record — and every signature and training record attached to it — stays exactly where it was, as the audit trail requires.
- Identity lives in one place. A person's name, employee ID, job title, and department are held on the person record (the single source of truth), not copied onto the login, so records stay consistent even as accounts come and go.
In short: the person is who the quality system is about; the user is merely how someone signs in. See Vendors & Audits for how external auditors are recorded by name without a system account.
Separately from the person concept, every user account also carries a coarse application role — Org Owner, Org Admin, User, or Reader — which controls what they can do in the application (manage billing, manage users, use the system, or just view it). Reader is view-only and doesn't consume a billable seat, so you can give inspectors, leadership, or occasional staff free read access without it costing you anything.
Add a person¶
- Click New Person and fill in name, email, job function(s), and manager.
- Alternatively, at onboarding or in bulk, upload a CSV of people (name, email, job function, manager), or — if your tenant uses Okta or Azure AD — let people be created automatically on first SSO login (just-in-time provisioning).
- Assign at least one job function. This is what drives which training requirements apply to them — see below.
- If the person reports to someone else in the organization, set their manager. This feeds escalation and training-plan approvals.
Note
A person doesn't need a user account to exist in QStack. If you need to record training or signatures for a contractor who won't be logging in, create the person without inviting them as a user.
Give an existing person a login¶
When someone you already have on file — a contractor whose training you've been recording, say — needs to start signing in, invite them onto their existing record rather than creating a second one. From the people list, the Invite action next to a person pre-fills the invitation with their email and links it to that person. When they accept, their new login attaches to the record you already have, so their training and signing history and their account are one identity, not two.
How QStack avoids a duplicate on invite
When an invitation is accepted, QStack claims, in order: the person already linked to the new login, then the person the invitation names, then an unclaimed record with the same email, and only then creates a new person. Using the people list's Invite action — which names the person — is what keeps a new starter's login and their pre-existing record together.
Merge a duplicate person¶
If the same human already exists twice — typically once as a record entered by hand and once created when an invitation was accepted before this matching existed — an Org Admin can fold the duplicate into the record you want to keep. On the person you're keeping, use Merge a duplicate, choose the record to absorb, and QStack shows you exactly what will move — the login account, job functions, training, and approvals — before you confirm. Blank fields on the kept record are filled from the duplicate.
A merge can't be undone from the app
Merging deletes a quality identity, so it's deliberately two steps: review what moves, then confirm. The deletion is recorded in the audit trail, but there's no in-app undo — check you've picked the right direction (the record you're on is the one that's kept).
Job functions¶
A job function is a named role in your organization — "QC Analyst", "Production Operator", "QA Reviewer". Job functions are the unit of assignment in the role-based training matrix: a person may hold multiple job functions at once, and each one can carry its own list of training requirements.
Job functions are typically defined at onboarding, either by hand or imported from a CSV, and refined afterward as your organization's structure evolves.
Assign a person's job functions in place. A person's job functions are an inline checklist right on their detail page — tick or untick and save, without opening the full edit form. Changing them drives training immediately: adding a job function creates the assignments for its requirements, as described in how job function drives training.
Delete an unused job function. The job-function list shows, for each one, how many people hold it and how many training requirements reference it. A Delete option appears only when both counts are zero — a never-used typo or duplicate, with no training records behind it, is safe to remove. Anything in use must be deactivated instead of deleted: deleting a job function that the matrix references would take its training requirements and their assignment history with it, which the audit trail won't allow.
Workflow roles¶
Workflow roles are different from application roles: they're named quality responsibilities that gate signatures and decisions across the modules, rather than permission levels on a user account.
| Workflow role | What it gates |
|---|---|
| Quality | The quality-unit authority. Approves deviation classifications and closures, document retirements, record cancellations, vendor status decisions, change approvals, and complaint closures, and signs the periodic audit-trail review. |
| Line manager | Derived automatically from the manager relationship on each person — used for escalations and training-plan approvals. |
Every tenant must designate at least one Quality role holder — QStack blocks GxP workflows until this is done. Designating two or more is recommended, so there's absence cover for a role that so much of the system depends on.
A single person can hold multiple roles at once. In a five-person company, the same person is often Org Admin, a Quality role holder, and the owner of several documents — QStack doesn't stop that. What it does enforce is described in Segregation of duties: regardless of which roles someone holds, they can't review or approve an item they authored or performed themselves.
The manager chain¶
Each person's optional manager relationship does two things:
- Escalation. If someone's task goes overdue, QStack notifies them directly first, then escalates to their manager after a tenant-configurable delay (7 days by default for training assignments), and finally to Quality role holders if it's still open after that.
- Training-plan approval. Line managers approve training plans for their direct reports.
Set the manager relationship when you add a person, and keep it current as your organization changes — escalation and approval routing both depend on it being accurate.
How job function drives training¶
Job function is the connective tissue between People and Training:
- Each job function has a list of training requirements — controlled documents, mostly, plus the occasional external course reference.
- The training matrix is the cross product of every job function and its requirements.
- When a person is added to a job function, QStack automatically creates
training assignments for every requirement on that job function's
list, flagged
new_hire. - When a requirement is added to a job function that already has people
assigned to it, everyone currently holding that job function gets a
new assignment, flagged
matrix. - If a person holds multiple job functions, their training requirements are the union of all of them.
This is why getting job function assignment right matters beyond org-chart bookkeeping — it's the mechanism that decides who gets trained on what, automatically, without anyone having to remember to assign it by hand.
Application roles vs. workflow roles¶
These two concepts sound similar but answer different questions, and it's worth keeping them straight:
| Application role | Workflow role | |
|---|---|---|
| Answers | What can this account do in the software? | What quality responsibility does this person hold? |
| Values | Org Owner, Org Admin, User, Reader | Quality, Line manager |
| Set on | The user account | The person |
| Examples of effect | Whether you can manage billing or invite users | Whether you can approve a deviation classification, sign a document retirement, or receive escalations as someone's manager |
| Seat cost | Reader is free; the others consume a billable seat | No cost of its own — it's a responsibility, not an account tier |
A person can combine any application role with any workflow role. In a five-person company it's common for the same individual to be an Org Admin (application role) and the sole Quality role holder (workflow role) — QStack doesn't require these to be held by different people, but it does enforce segregation of duties on individual signatures regardless of which roles someone holds. See Segregation of duties.
Your organization as a tenant¶
Your organization is a single tenant in QStack: it has its own users, its own data, and its own policies, and it's isolated from every other QStack customer at the database level — nothing you configure here is visible to, or affected by, any other tenant. Tenant-level settings — things like signing-strength policy, retention periods, and reminder cadences referenced throughout this help site — are configured by your Org Admin, typically during onboarding.