Applicants
Applicant vs Client — key distinction
| Applicant | Client | |
|---|---|---|
| Scope | Specific to one application | Workspace-level user profile |
| Concept | A person listed on an application | A user who is a client of the org |
| Role | VIEWER / COMMENTER / EDITOR (per-application) | CLIENT (workspace role) |
| Linked to | Application + optionally a PublicUserProfile | Team membership |
| Max per app | 5 (PRIMARY through FIFTH) | N/A |
An applicant may or may not be a client. Some applicants are linked to existing clients; others are added ad-hoc without a client account.
Applicant types
Each application can have up to 5 applicants:
| Type | Meaning |
|---|---|
| PRIMARY | Main applicant (required) |
| SECONDARY | Co-applicant or co-borrower |
| TERTIARY | Third applicant |
| FOURTH | Fourth applicant |
| FIFTH | Fifth applicant |
The type is immutable once set — it cannot be changed after the applicant is added.
Per-application roles
Each applicant is assigned a role that controls their access to the application:
| Role | Access |
|---|---|
| VIEWER | Read-only — can see the application |
| COMMENTER | Can add comments |
| EDITOR | Can edit application details |
These roles are separate from and independent of the workspace-level team roles.
Linking to a PublicUserProfile
Each applicant optionally has a profileId linking to a PublicUserProfile. This is how personal data (name, DOB, address, phone) appears in the application context.
Data flow:
- Client creates a
PublicUserProfileand shares it with the org - Staff adds the client as an applicant on an application, linking their profile
- Staff can inline-edit the profile from the application's Applicants tab (this updates the
PublicUserProfiledirectly) - The profile data is visible to all staff reviewing the application
If no profile is linked (ad-hoc applicant), only the type and role are recorded — no personal data.
GraphQL type
type Applicant {
id: ID
slug: String
clientId: ID
client: Client
clientInvitationId: ID
clientInvitation: ClientInvitation
profileId: ID
profile: PublicUserProfile
status: ApplicantStatus!
type: ApplicantType!
}
Applicant status
| Status | Meaning |
|---|---|
| PENDING | Invited but not yet accepted |
| ACTIVE | Active applicant |
| INACTIVE | Deactivated |
| SUSPENDED | Suspended |
| INVITED | Invitation sent |