Skip to main content

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 model

Event Payload Schema

Every interview-related event MUST conform to the following payload structure.

Field Definitions

Core Identifiers

  • interviewId Unique identifier for the interview (shared across all attempts). And create another interviewId if send the same payload again.
  • jobId Interview type: STEM, NON-STEM, SWE, DOCKER, DS
  • candidateEmailId Candidate email address used for identification and notifications.

Event Metadata

  • eventName Canonical event name emitted by Qode (example: create_attempt, candidate_ready, attempt_end, abandon).
  • eventValue Optional contextual data for the event (example: failure reason, button clicked, system signal).
  • timestamp UTC timestamp indicating when the event occurred.

Realtime State Fields

  • currentStatus Old interview status that we don’t use anymore in new event flow. In the future, we will use realtimeStatus.
  • realtimeStatus The new realtime interview status, derived from the event stream.
  • isTerminal Boolean 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:
Interview Event Swimlane Diagram (Whimsical)
An interview attempt progresses through six ordered phases, from link access to terminal completion.
  1. Interview Link Exists
  2. Audio and Video Permissions Screen
  3. Candidate Clicks Start
  4. Interview with Tracy
  5. Interview Ends
  6. Completed
Each phase emits canonical events that may:
  • 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
Canonical events
  • attempt_end → Tracy speaks outro and generates <end_token>
  • report_generated

Completed State Rules

Once a report_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
Each path emits a single canonical failure or exit event, followed by interview finalization when applicable.

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 clicks End 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
  • Timeouts are 10 minutes when the meeting is created if candidate doesn’t join the room.

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.

When a Retry Is Allowed

A retry is allowed only when the previous attempt ended in a terminal but retry-eligible state.

Retry-Eligible Terminal Outcomes

Non-Retryable Terminal Outcomes

A completed interview can never be retried using the same interview link.