Responsibility
AI Interview owns the durable lifecycle after Resume Review continues the workflow. Its work runner creates a module run, claims it in-process, and then uses the existing Tenzo writers for recruiter-visible stages. It is not a private hop executor. See Module and stage-orchestrator contract. The module does not own parks such asNO_CONSENT
or COOLING_DOWN; those remain overlays on the compatibility stage.
The coordinator described in Module-owned stage orchestration
still returns START_AI_INTERVIEW. Resume Review continue_handoff is the only activate
hook, including ingest that bypasses Resume Review scoring.
Work progress
Sit-able stages are on the compiled AI Interview module (OUTREACH through
CALL_COMPLETED and parks inside the click-in). The values below are lease
and work progress on the module run, not a second stage language.
Parks (
NO_CONSENT, COOLING_DOWN, DISPOSITIONED_IN_ATS, and similar) do not change
the Interview local stage.
Fixed V1 flow
continue_handoff gets one Interview run,
including resume-only jobs. Those runs land on bypassed rather than remaining absent.
Activate
Activate is in-process. There is no Interview queue worker.- Create-or-get the
ai_interviewrun atpending. - If the frozen snapshot has interviews disabled, publish
bypassedand projectSKIP_OUTREACHfrom that snapshot. Do not re-read the live job setting. - Otherwise claim
pending→outreachand keep the existingOUTREACHplus pending-call writers.
(candidate_campaign_id, module_key). Re-running handoff
does not insert a second row. If CCI is already OUTREACH or SKIP_OUTREACH, activate
still ensures the run exists and does not repeat the Tenzo writer when the projection
is already there.
Configuration snapshot
The orchestrator freezes whether interviews are enabled, the applicant call type (WEB / PHONE), and a source-version digest when the run is created. Retries read
that snapshot. Later job-setting edits do not change an in-flight run.
Thin publishers
After the canonical Tenzo writers commit, a no-op-if-absent helper publishes the matching Interview stage:AI_INTERVIEW_SCHEDULED→scheduledCALL_COMPLETED/FAILED_KNOCKOUT(including reused interviews) →completedSKIP_OUTREACH→bypassedwhen the run is not already there
TenzoStage projection
Recruiters still read TenzoStage. Interview local stages do not change list columns,
filters, or ATS automation. Transition validation never reads TenzoStage as its local
source of truth.
Operational checks
When an Interview workflow appears stuck, inspect:- the current local stage and latest module-history sequence;
- whether Resume Review has a continuing terminal and
continue_handoffran; - the configuration-snapshot
interviews_enabledvalue; - the derived
TenzoStageprojection last.