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.
Prompt
Multi-Turn Workflow Progress Tracking Prompt

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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
textYou 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.
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.
| Placeholder | Purpose | Example | Validation 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. |
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.
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 Element | Type or Format | Required | Validation 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. |
Common Failure Modes
What breaks first when tracking multi-turn workflow progress and how to guard against each failure in production.
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.
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.
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.
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.
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.
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.
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.
| Criterion | Pass Standard | Failure Signal | Test 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 |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
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.
codeWorkflow: [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

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.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us