wiki_ghostguild/content/wiki/hub/reference/00-application-status-reference.md

66 lines
4 KiB
Markdown

# Application Status Reference
Every application moves through a defined set of statuses as it progresses from submission to final outcome. This page documents each status, what it means, and the valid transitions between them.
## Status Definitions
**`new`** -- Application recently submitted. This is the starting status for every application that comes in through the apply form.
**`waiting_first_round`** -- Waiting to be scheduled for a first-round interview. The application has been advanced from its initial review stage into the first-round interview stage but does not yet have an interview booked.
**`first_round_scheduled`** -- First-round interview has been scheduled. Set automatically when a Cal.com booking webhook matches the applicant's email, or when an admin manually changes the status.
**`needs_first_decision`** -- First round complete, awaiting a decision. Set automatically when an admin locks the first-round stage (all completed reviews must be locked and the minimum reviewer threshold met).
**`waiting_second_round`** -- Waiting to be scheduled for a second-round interview. The committee decided to advance the application past the first round into a second-round stage.
**`second_round_scheduled`** -- Second-round interview has been scheduled. Same mechanism as first round -- triggered by a Cal.com webhook match or manual status change.
**`needs_final_decision`** -- Second round complete, awaiting final decision. Set automatically when the final stage is locked.
**`accepted`** -- Application accepted into the cohort. Terminal status.
**`waitlist`** -- Application waitlisted. Can still transition to `accepted` or `declined`.
**`declined`** -- Application declined. Terminal status.
## Valid Transitions
Each status can only move to specific next statuses. The system enforces these rules and rejects invalid transitions.
- `new``waiting_first_round`, `first_round_scheduled`, `declined`
- `waiting_first_round``first_round_scheduled`, `waiting_second_round`, `declined`
- `first_round_scheduled``needs_first_decision`, `waiting_first_round`, `declined`
- `needs_first_decision``waiting_second_round`, `accepted`, `waitlist`, `declined`
- `waiting_second_round``second_round_scheduled`, `accepted`, `waitlist`, `declined`
- `second_round_scheduled``needs_final_decision`, `waiting_second_round`, `declined`
- `needs_final_decision``accepted`, `waitlist`, `declined`
- `accepted` → (none -- terminal)
- `waitlist``accepted`, `declined`
- `declined` → (none -- terminal)
## What Triggers Transitions
**Automatic transitions:**
- **Stage locking** sets `needs_first_decision` or `needs_final_decision` depending on whether the locked stage is the final stage or a first-round stage.
- **Advancing to next stage** sets `waiting_first_round` or `waiting_second_round` based on the next stage's type. If an interview is already scheduled for that round, the status skips directly to `first_round_scheduled` or `second_round_scheduled`.
- **Cal.com webhooks** move an application from `waiting_first_round` to `first_round_scheduled` (or the second-round equivalent) when a booking is created.
**Manual transitions:**
- Admins can change any application's status through the **Applications** tab, provided the transition is valid.
- Bulk status changes are available for processing multiple applications at once.
- The **Decisions** tab records accept, waitlist, or decline decisions and updates the status accordingly.
:::info
An application can be declined from almost any active status. The `waitlist` status is the only non-terminal outcome status -- waitlisted applications can still be accepted or declined later.
:::
## Status Groups
The system groups statuses for filtering:
- **Active:** `new`, `waiting_first_round`, `first_round_scheduled`, `needs_first_decision`, `waiting_second_round`, `second_round_scheduled`, `needs_final_decision`
- **Decision pending:** `needs_first_decision`, `needs_final_decision`
- **Terminal:** `accepted`, `waitlist`, `declined`