Overview
This document defines the canonical interview flow and its associated event model. It standardizes how the system tracks interview progress, transitions states, and determines terminal outcomes.All events in this document are append-only, immutable, and ordered by timestamp.
Event Payload & Realtime Interview Status
This section defines the canonical event payload schema and the realtime interview status modelEvent Payload Schema
Every interview-related event MUST conform to the following payload structure.Field Definitions
Core Identifiers
-
interviewIdUnique identifier for the interview (shared across all attempts). And create anotherinterviewIdif send the same payload again. -
jobIdInterview type: STEM, NON-STEM, SWE, DOCKER, DS -
candidateEmailIdCandidate email address used for identification and notifications.
Event Metadata
-
eventNameCanonical event name emitted by Qode (example:create_attempt,candidate_ready,attempt_end,abandon). -
eventValueOptional contextual data for the event (example: failure reason, button clicked, system signal). -
timestampUTC timestamp indicating when the event occurred.
Realtime State Fields
-
currentStatusOld interview status that we don’t use anymore in new event flow. In the future, we will userealtimeStatus. -
realtimeStatusThe new realtime interview status, derived from the event stream. -
isTerminalBoolean indicating whether the interview can progress further.
All Realtime Status Values
Canonical Event Model
Each row represents a canonical event emitted during the interview lifecycle.Interview Attempt – Event-Driven Swimlane (Happy Path)
View the interactive flow:An interview attempt progresses through six ordered phases, from link access to terminal completion.
Interview Event Swimlane Diagram (Whimsical)
- Interview Link Exists
- Audio and Video Permissions Screen
- Candidate Clicks Start
- Interview with Tracy
- Interview Ends
- Completed
- Update the authoritative interview state
- Trigger downstream processing
- Transition the attempt into a terminal outcome
All interview behavior is driven by events. States are derived from the event stream and are never written directly.
Happy Path (Successful Completion)
The happy path represents a fully completed interview where the candidate reaches the natural end of the session. Key characteristics- Tracy completes the interview flow
<end_token>is generated- The attempt ends normally
- Scoring and finalization proceed
attempt_end→ Tracy speaks outro and generates<end_token>report_generated
Completed State Rules
Once areport_generated event is emitted:
- The interview attempt is completed
- All artifacts (transcript, scores, report) are ready
- The interview link cannot be reused to create a new attempt
Interview Attempt – Failure & Exit Paths (Non-Happy Path)
This section defines all failure and early-exit paths for an interview attempt. These paths represent terminal conditions where the interview cannot continue and can be retried using the same link.Failure and exit events are authoritative. Once emitted, the interview attempt immediately transitions to a terminal state.
Failure & Exit Flow Overview
An interview attempt may terminate from any active phase, including:- Device check failed
- Candidate drops mid-interview
- Interview times out
- Connection failure
Failure & Exit Paths
1. Device Validation Failure
Occurs during device checks when required hardware or permissions are not met. Flow- Device checks in progress
- Event emitted:
device_check_failed
2. Candidate Abandonment
Occurs when the candidate clicksEnd Interview during interview before attemp_end.
Flow
- Any active step
- Event emitted:
abandon - Interview terminates immediately
3. Interview Expiration (Timeout)
Occurs when the interview exceeds the allowed time window. Flow- Any active step
- Event emitted:
expire - Interview terminates
4. Connection Failure
Occurs when the interview session drops due to network issues. Flow- Any active step
- Event emitted:
connection_failure - Interview terminates
Connection failures are classified separately from abandonment for analytics accuracy. If candidate left during the interview without clicking
End Interview, Tracy will wait 5 minutes before leaving the interview.Canonical Failure & Exit Events
Terminal State Rules
Once a failure or exit event is emitted:- The interview attempt is irreversibly terminal
- The interview link can be reused to create a new attempt
Retry & New Attempt Creation
This section defines how the system handles retries after an interview attempt reaches a terminal outcome. Retries are event-driven and always result in the creation of a new interview attempt.An interview attempt is immutable. Retrying never reopens or modifies a previous attempt.