Inferensys

Prompt

Multi-Turn Workflow Progress Tracking Prompt

A practical prompt playbook for tracking step completion, detecting skipped steps, and identifying the current active step in multi-turn AI assistants.
Operations team reviewing AI workflow automation on laptop, workflow builder visible, casual office setup.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the job-to-be-done, ideal user, required context, and boundaries for the Multi-Turn Workflow Progress Tracking Prompt.

This prompt is designed for AI assistants that must guide users through a defined, ordered, multi-step workflow and accurately track progress across conversation turns. The core job-to-be-done is state management: the assistant needs to know which steps are complete, which step is currently active, and whether the user has skipped, repeated, or attempted to reorder steps. The ideal user is a developer building a copilot, onboarding assistant, troubleshooting wizard, or any structured task agent where the workflow definition is known before the session begins and the assistant must not lose track of progress. The prompt assumes you have a static or session-stable workflow definition with clearly named, ordered steps and that the assistant has access to the full conversation history for the session.

Use this prompt when the workflow has a fixed sequence that the assistant must enforce or track, when step completion can be inferred from user responses, and when skipping or repeating steps is a valid user behavior that must be detected rather than silently ignored. The prompt is particularly valuable in regulated or high-stakes domains—such as healthcare intake, financial onboarding, or legal procedure guidance—where missing a step or misrepresenting completion status creates compliance risk. In these contexts, the prompt output should feed into a validation layer that cross-references the claimed step status against explicit user confirmations before any downstream action is taken. The prompt belongs in the application layer between the raw conversation history and the downstream logic that decides what the assistant should do next: it produces structured state, not the final user-facing response.

Do not use this prompt for open-ended conversations without a defined workflow, for single-turn task completion where there is no progress to track, or when the workflow definition changes dynamically within a session based on external events that the prompt cannot observe. It is also a poor fit for workflows where steps are non-linear or where the user can validly complete steps in any order without constraint—in those cases, a slot-filling or task-queue prompt is more appropriate. If your workflow definition is large enough that it consumes a significant fraction of the context window, consider storing the definition externally and injecting only the relevant step subset, or use a separate prompt to first identify the active step before invoking this tracking prompt. Before deploying, test the prompt against edge cases where users provide ambiguous completion signals, claim completion without evidence, or attempt to skip mandatory steps—these are the failure modes that most commonly surface in production.

PRACTICAL GUARDRAILS

Use Case Fit

Where this prompt works and where it does not. Multi-turn workflow progress tracking requires a defined workflow, clear step boundaries, and a mechanism to persist state across turns.

01

Good Fit: Defined Linear Workflows

Use when: the assistant guides users through a known, sequential process such as onboarding, checkout, troubleshooting scripts, or multi-part form filling. The prompt excels at tracking completion status against a predefined step list. Guardrail: provide the workflow definition as a structured JSON array of step IDs and descriptions in the prompt context.

02

Bad Fit: Open-Ended Exploration

Avoid when: the user's goal is browsing, open-ended Q&A, or creative exploration without a target completion state. The progress tracking schema will hallucinate steps or report meaningless completion percentages. Guardrail: use a phase classification prompt first; only invoke progress tracking when a structured workflow phase is detected.

03

Required Inputs

What you must provide: a complete workflow definition with unique step identifiers, the full conversation history, and the current user turn. Without a canonical step list, the model cannot distinguish between completed, skipped, and out-of-order steps. Guardrail: validate the workflow definition schema before injecting it into the prompt. Missing step IDs cause silent tracking failures.

04

Operational Risk: State Drift Over Long Sessions

What to watch: in sessions exceeding 20+ turns, the model may lose track of early step completions or confuse similar step descriptions. Progress accuracy degrades as context approaches the window limit. Guardrail: pair this prompt with a session summarization step that compresses completed steps into a structured state object before the history is pruned.

05

Operational Risk: Skipped Step Ambiguity

What to watch: users may skip steps intentionally or accidentally. The model must distinguish between a step that was deliberately bypassed and one that was simply not yet reached. Misclassifying skipped steps as pending causes loops. Guardrail: require explicit user confirmation for any step marked as skipped, and include a skip_reason field in the output schema.

06

Operational Risk: Workflow Definition Mismatch

What to watch: if the live conversation diverges from the provided workflow definition, the model may force-fit user actions into incorrect steps or report progress against an irrelevant workflow. Guardrail: include a workflow_relevance confidence score in the output. If confidence drops below a threshold, trigger a workflow re-selection or clarification turn.

PROMPT PLAYBOOK

Copy-Ready Prompt Template

Paste this prompt into your system or developer message to track multi-step workflow progress across conversation turns.

This prompt template instructs the model to act as a workflow state tracker. It takes a predefined workflow definition, the full conversation history, and any previously recorded state as input. The model must output a structured JSON object containing the completion status of every step, the current active step, and any detected anomalies such as skipped steps, repeated steps, or steps completed out of order. The template is designed to be dropped directly into your system prompt or a dedicated state-tracking turn, with square-bracket placeholders you replace with your application's specific workflow and data.

text
You are a workflow progress tracker. Your job is to analyze the conversation history against a predefined workflow definition and output the current state of every step.

WORKFLOW DEFINITION:
[WORKFLOW_DEFINITION_JSON]

PREVIOUSLY RECORDED STATE:
[PREVIOUS_STATE_JSON]

CONVERSATION HISTORY:
[CONVERSATION_HISTORY]

INSTRUCTIONS:
1. Review the conversation history and the previously recorded state.
2. For each step in the workflow definition, determine its status: "NOT_STARTED", "IN_PROGRESS", "COMPLETED", "SKIPPED", or "BLOCKED".
3. Identify the single step that should be actively worked on next. This is the "activeStep".
4. Detect any anomalies: steps completed out of order, steps repeated unnecessarily, steps skipped without explicit user confirmation, or steps that appear completed but lack required evidence in the conversation.
5. Output a single JSON object matching the schema below. Do not include any text outside the JSON object.

OUTPUT_SCHEMA:
{
  "steps": [
    {
      "stepId": "string (matches workflow definition)",
      "status": "NOT_STARTED | IN_PROGRESS | COMPLETED | SKIPPED | BLOCKED",
      "evidence": "string (quote from conversation or 'previously recorded')",
      "updatedAt": "string (ISO timestamp of the turn that changed this status)"
    }
  ],
  "activeStep": "string (stepId of the current step) | null",
  "anomalies": [
    {
      "type": "OUT_OF_ORDER | SKIPPED_WITHOUT_CONFIRMATION | REPEATED_STEP | MISSING_EVIDENCE | STALE_STATE",
      "stepId": "string",
      "description": "string (specific explanation of the anomaly)",
      "severity": "INFO | WARN | BLOCKER"
    }
  ],
  "stateSummary": "string (one-sentence summary of overall progress)"
}

CONSTRAINTS:
- Never invent step completions not supported by the conversation history.
- If the user corrects a previously completed step, mark it as IN_PROGRESS and add an anomaly.
- If the conversation history is empty, all steps should be NOT_STARTED and activeStep should be the first step in the workflow definition.
- If the previously recorded state conflicts with the conversation history, trust the conversation history and flag the conflict as a STALE_STATE anomaly.

To adapt this template, replace [WORKFLOW_DEFINITION_JSON] with a JSON array of step objects, each containing at minimum a stepId and a description. The [PREVIOUS_STATE_JSON] should be the exact JSON output from the previous invocation of this prompt, or null on the first turn. The [CONVERSATION_HISTORY] should be the full turn history, formatted with clear speaker labels. In production, you will parse the model's JSON output, validate it against the schema, and store it as the new [PREVIOUS_STATE_JSON] for the next turn. If validation fails, retry the prompt once with the validation error included as additional context. For high-stakes workflows where an incorrect step status could cause a compliance issue or a bad user action, route any output containing BLOCKER anomalies to a human reviewer before the assistant proceeds.

IMPLEMENTATION TABLE

Prompt Variables

Each placeholder required by the Multi-Turn Workflow Progress Tracking Prompt. Use this table to wire the prompt into your application harness, validate inputs before inference, and catch missing or malformed data before it reaches the model.

PlaceholderPurposeExampleValidation Notes

[WORKFLOW_DEFINITION]

Ordered list of steps that define the complete workflow the assistant is guiding the user through.

["create_account", "verify_email", "set_profile", "add_payment", "confirm_summary"]

Must be a non-empty JSON array of unique string step IDs. Reject if duplicates exist or array length is zero. Validate against a known workflow registry if available.

[CONVERSATION_HISTORY]

Full multi-turn conversation transcript including user and assistant messages, with turn markers or timestamps.

"User: I want to start onboarding.\nAssistant: Great, let's begin with account creation.\nUser: Done, I created my account."

Must be a non-empty string. Validate that it contains at least one user turn. If history exceeds context budget, apply pruning before insertion. Null not allowed.

[CURRENT_USER_TURN]

The most recent user message to process for progress updates.

"I just finished verifying my email. What's next?"

Must be a non-empty string. Validate that it is not identical to the previous user turn (duplicate detection). If empty or whitespace-only, skip inference and return a clarification request.

[STEP_STATUS_SCHEMA]

JSON schema defining the expected output structure for each step's status.

{"step_id": "string", "status": "enum[not_started, in_progress, completed, skipped, blocked]", "evidence": "string", "confidence": "float"}

Must be a valid JSON Schema object. Validate with a schema validator before prompt assembly. Reject if required fields are missing or enum values are undefined. Use as the [OUTPUT_SCHEMA] constraint in the system prompt.

[COMPLETION_CRITERIA]

Natural-language rules defining what constitutes completion for each step, used to ground the model's status determination.

"verify_email is completed when the user confirms they clicked the verification link. add_payment is completed when the user provides valid payment details."

Must be a non-empty string mapping each step ID from [WORKFLOW_DEFINITION] to a completion condition. Validate that every step ID has a corresponding criterion. Missing criteria cause hallucinated completion status.

[SKIP_RULES]

Conditions under which a step may be legitimately skipped, preventing false 'skipped' classifications.

"set_profile can be skipped if the user explicitly declines. add_payment can be skipped for free-tier accounts."

Optional string. If provided, validate that skip conditions reference only valid step IDs from [WORKFLOW_DEFINITION]. If null, the model should not classify any step as skipped without explicit user refusal evidence.

[MAX_STEPS_ACTIVE]

Maximum number of steps that can be in_progress simultaneously, preventing ambiguous active step detection.

1

Must be a positive integer. Default to 1 if not provided. Validate range: 1 to [WORKFLOW_DEFINITION] length. Values greater than 1 require explicit product justification to avoid confusing progress indicators.

PROMPT PLAYBOOK

Implementation Harness Notes

How to wire the Multi-Turn Workflow Progress Tracking Prompt into a production application with validation, retries, and state persistence.

This prompt is designed to be called after every user turn in a multi-step workflow assistant. The application layer is responsible for maintaining the canonical workflow definition and the accumulated session state. The prompt itself is stateless—it receives the full workflow definition, the conversation history, and the previously tracked state as input, and returns an updated state object. The application must validate this output before committing it to the session store. Do not rely on the model's output as the sole source of truth for workflow progress; treat it as a proposed state update that requires structural and logical validation against the known workflow definition.

The integration pattern follows a read-modify-write cycle. On each turn, the application reads the current [WORKFLOW_DEFINITION] (a JSON array of step objects with id, label, and required fields) and the [CURRENT_STATE] (the last validated state object) from the session store. It appends the latest user message to the [CONVERSATION_HISTORY] and sends the full prompt. The model returns a JSON object with steps (an array of step status objects), current_active_step, skipped_steps, and repeated_steps. Before persisting, the application must validate: (1) every step_id in the output exists in the workflow definition, (2) no step is marked completed before its predecessors are completed unless the workflow allows parallel steps, (3) the current_active_step is a valid step that is not already completed, and (4) the skipped_steps and repeated_steps arrays contain only valid step IDs with supporting evidence spans from the conversation. If validation fails, the application should retry with the validation errors appended to the prompt as [CONSTRAINTS] feedback, or fall back to a conservative state that only updates the explicitly confirmed steps.

For retry logic, implement a maximum of two retry attempts with exponential backoff (1s, 2s). On the first validation failure, append the specific validation errors to the prompt and re-invoke. On the second failure, log the full prompt and invalid output for debugging, then apply a safe fallback: update only steps where the user's latest turn contains explicit confirmation language (e.g., 'done', 'completed', 'finished step 3'), and leave all other step statuses unchanged. This prevents a single malformed model output from corrupting the entire session state. For model choice, use a model with strong JSON mode and instruction-following capabilities (e.g., GPT-4o, Claude 3.5 Sonnet). Avoid models under 7B parameters for this task, as they struggle with the combination of schema adherence and multi-step logical consistency required. Set temperature to 0 or a very low value (0.1) to maximize deterministic state tracking.

State persistence should store the full validated output object plus metadata: the model ID, prompt version, timestamp, and turn index. This audit trail is essential for debugging workflow tracking failures and for compliance use cases where you must prove the assistant correctly tracked user progress. If your application supports pause-and-resume, serialize the entire validated state object alongside the conversation history. On resume, reload both and pass them into the prompt as [CURRENT_STATE] and [CONVERSATION_HISTORY]. Do not attempt to reconstruct state from conversation history alone—the structured state object is the authoritative record. Finally, implement a periodic full-state reconciliation (every 10 turns or on explicit user request) where the prompt is asked to re-derive the entire state from scratch against the full history, and compare the result to the incrementally tracked state. Flag any discrepancies for human review or automated correction.

IMPLEMENTATION TABLE

Expected Output Contract

Validation rules for the Multi-Turn Workflow Progress Tracking Prompt output. Use this contract to build a post-processing validator that rejects malformed responses before they reach application state.

Field or ElementType or FormatRequiredValidation Rule

workflow_id

string

Must match a known workflow definition ID from the input context. Reject if not in the allowed set.

steps

array of objects

Array length must equal the number of steps in the referenced workflow definition. Reject if count mismatch.

steps[].step_id

string

Must exactly match a step_id from the workflow definition. Reject unknown or hallucinated step IDs.

steps[].status

enum: not_started | in_progress | completed | skipped | blocked

Must be one of the five allowed enum values. Reject any other string.

steps[].evidence_turn_index

integer or null

If status is completed or in_progress, must reference a valid turn index from the conversation history. Null allowed for not_started.

current_active_step_id

string or null

Must be a step_id from the steps array with status in_progress, or null if no step is active. Reject if pointing to a completed or not_started step.

detected_anomalies

array of strings

Each entry must be one of: skipped_step, repeated_step, out_of_order_step, stalled_step. Reject unknown anomaly types. Empty array allowed.

overall_completion_ratio

number

Must be a float between 0.0 and 1.0 inclusive. Must equal (count of steps with status completed or skipped) / total steps. Reject if calculation mismatch exceeds 0.01 tolerance.

PRACTICAL GUARDRAILS

Common Failure Modes

What breaks first when tracking multi-turn workflow progress and how to guard against each failure in production.

01

Step Status Hallucination

What to watch: The model marks steps as complete when the user never provided the required information, or invents step names that don't exist in the workflow definition. This is the most common failure mode in workflow tracking and directly corrupts downstream state. Guardrail: Always provide the canonical workflow definition as a structured schema in the prompt. Add a post-generation validation step that checks every claimed completed step against required inputs present in the conversation history. Reject any step status that references a step ID not in the original definition.

02

Skipped Step Blindness

What to watch: The model fails to detect when a user jumps ahead or skips a required prerequisite step, allowing the workflow to proceed in an invalid order. This is especially dangerous for regulated or irreversible workflows. Guardrail: Include explicit prerequisite chains in the workflow definition schema. Add a validation rule that checks step ordering before accepting any status update. If a step is marked complete but its prerequisite is not, flag it for re-ordering or human review rather than silently accepting the invalid progression.

03

Context Window Step Amnesia

What to watch: In long-running sessions, earlier completed steps fall out of the context window, causing the model to either re-ask for already-provided information or lose track of overall workflow progress. This produces frustrating duplicate questions and incorrect completion percentages. Guardrail: Maintain an external step-status JSON object that is re-injected into every turn's prompt as a compact progress summary. Never rely solely on raw conversation history for step tracking. Prune verbose turn content while preserving the structured state object.

04

Implicit Completion Assumption

What to watch: The model infers step completion from vague or partial user responses rather than requiring explicit confirmation. A user saying 'I think that's done' or providing partial information gets treated as full step completion, leading to incomplete data capture. Guardrail: Define explicit completion criteria per step in the workflow schema. Require the model to output a confidence score and evidence spans for each completion claim. If confidence is below threshold, trigger a clarification prompt rather than marking the step complete.

05

Repeated Step Contamination

What to watch: When a user revisits or corrects an earlier step, the model either duplicates the step in the progress tracker or overwrites the original without preserving the correction history. This creates state inconsistencies that compound across turns. Guardrail: Implement a step versioning or revision tracking field in the state object. When a step is revisited, increment a revision counter and preserve the prior value in a history array. Validate that no step ID appears more than once in the active step list.

06

Current Step Ambiguity

What to watch: The model cannot reliably determine which step is currently active when the user's message could apply to multiple steps or when the conversation drifts between workflow and off-topic discussion. This causes the assistant to advance the wrong step or lose the workflow thread entirely. Guardrail: Require the model to output an explicit active_step_id field with a rationale tied to specific user utterances. Add a guard that checks whether the active step changed without an explicit user trigger. If the model is uncertain, default to keeping the current active step and asking a clarification question.

IMPLEMENTATION TABLE

Evaluation Rubric

Score each criterion on a pass/fail or numeric scale before shipping the Multi-Turn Workflow Progress Tracking Prompt. Use this rubric to catch step-tracking errors, hallucinated completions, and schema violations in production.

CriterionPass StandardFailure SignalTest Method

Step Status Accuracy

All step statuses match the ground-truth workflow definition for the given conversation history

Completed step marked as pending; pending step marked as completed; step status contradicts conversation evidence

Compare output step_status map against a labeled test set of 20+ conversation histories with known step completion states

Current Active Step Identification

The identified current_active_step is the lowest-index incomplete step in the defined workflow sequence

Skipped step not flagged; wrong step identified as active; multiple steps marked active simultaneously

Validate current_active_step against the workflow definition's step order and the conversation's actual progress

Skipped Step Detection

All steps that were bypassed without user confirmation are listed in skipped_steps with a detected reason

Skipped step missing from skipped_steps array; false positive skip on a completed step; reason field empty or generic

Inject conversations with intentional skips and verify detection recall >= 0.95 and precision >= 0.90

Repeated Step Detection

Steps executed more than once are flagged in repeated_steps with a count and evidence span

Repeated step not detected; count incorrect; evidence span points to wrong turn

Test with conversations containing deliberate step repetition and verify count accuracy and span correctness

Schema Compliance

Output is valid JSON matching the [OUTPUT_SCHEMA] exactly: all required fields present, no extra fields, correct types

Missing required field; extra field present; wrong type; null where non-nullable; malformed JSON

Validate output with a JSON Schema validator against the defined [OUTPUT_SCHEMA] on 100+ test runs

Hallucination Resistance

No step status, completion evidence, or workflow metadata is invented without support in the conversation history

Completed step with no supporting user or assistant turn; fabricated timestamp or evidence span; invented workflow step not in definition

Spot-check outputs against conversation transcripts; flag any status not traceable to a specific turn index

Workflow Definition Adherence

Only steps defined in [WORKFLOW_DEFINITION] appear in the output; step order respects the definition

Extra step added; step reordered; step renamed; step merged or split without authorization

Diff output step list against the input [WORKFLOW_DEFINITION] and reject any structural deviation

Edge Case: Empty History

When conversation history is empty or missing, all steps are marked pending and current_active_step is the first step

Crash or null output on empty history; steps incorrectly marked completed; active step set to null or out of bounds

Run prompt with empty [CONVERSATION_HISTORY] and verify graceful default state

ADAPTATION OPTIONS

Adapt This Prompt

How to adapt

Start with the base prompt and a hardcoded workflow definition. Use a simple JSON output schema with workflow_id, steps (array of {step_id, status, evidence}), and current_active_step. Skip validation beyond JSON parse. Run against 5-10 example conversations.

code
Workflow: [WORKFLOW_DEFINITION_JSON]
Conversation: [CONVERSATION_HISTORY]

Track progress. Output JSON.

Watch for

  • Model inventing steps not in the workflow definition
  • Status values drifting from your enum (e.g., 'done' vs 'completed')
  • Skipped steps being marked complete without evidence
  • No handling of out-of-order execution
Prasad Kumkar

About the author

Prasad Kumkar

CEO & MD, Inference Systems

Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.

His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.