This prompt is for chat product teams and evaluation engineers who need to automate quality scoring of multi-turn conversations. It produces a structured rubric that an LLM judge can apply to score context retention, contradiction avoidance, topic progression, and turn-taking appropriateness. Use this when single-turn evaluation misses failures like context loss across messages, factual contradictions between turns, or incoherent topic shifts. This prompt is designed for model-graded evaluation pipelines where human spot checks are too slow or expensive to run on every conversation.
Prompt
Rubric for Conversation Coherence Scoring Prompt Template

When to Use This Prompt
Identify the evaluation scenarios where a structured coherence rubric replaces unreliable single-turn scoring for multi-turn chat products.
The rubric is particularly valuable when you are shipping a chat product where users expect the assistant to remember what was said earlier, stay consistent with its own statements, and navigate topic changes gracefully. Without a multi-turn coherence rubric, your evaluation pipeline will silently pass conversations where the assistant contradicts itself three turns apart or loses track of the user's original request after a digression. The prompt template includes explicit handling for context window boundaries—a common failure mode where older messages fall out of the context window and the model's behavior degrades without the evaluator detecting the root cause.
Do not use this prompt for single-turn evaluation tasks, for grading factual accuracy against external ground truth, or for safety policy adherence scoring. Those require separate, specialized rubrics. This prompt also assumes you already have a working LLM judge pipeline; it does not cover judge deployment, inter-rater reliability measurement, or score calibration against human ratings. If you need those capabilities, pair this rubric with the score calibration and judge alignment playbooks in this pillar. Before deploying, validate the rubric against at least 20 human-scored conversations to confirm that the automated scores correlate with human judgments and that the context-window boundary handling works as expected.
Use Case Fit
Where this rubric template delivers reliable conversation coherence scores and where it introduces risk.
Good Fit: Multi-Turn Chat Products
Use when: evaluating AI assistants, chatbots, or copilots that maintain state across 3+ turns. The rubric's dimensions for context retention, contradiction avoidance, and topic progression directly map to user-perceived quality in dialogue systems. Guardrail: ensure the conversation transcript includes full turn history up to the model's context window boundary.
Bad Fit: Single-Turn Q&A
Avoid when: scoring isolated question-answer pairs or stateless API responses. The rubric's turn-taking and topic progression dimensions produce meaningless scores when there is no conversation history to evaluate. Guardrail: route single-turn evaluations to a factuality or instruction-following rubric instead.
Required Inputs: Full Transcript with Turn Markers
Risk: missing or truncated conversation history causes the judge to score coherence on incomplete evidence, inflating scores for conversations that actually lost context. Guardrail: require explicit speaker labels, turn numbers, and timestamps. Validate that the transcript spans the full evaluation window before invoking the judge.
Operational Risk: Context Window Boundary Artifacts
Risk: when conversations exceed the judge model's context window, early turns are dropped silently. The judge may score coherence as high because it cannot see the contradiction or context loss that occurred before truncation. Guardrail: implement a pre-check that estimates token count. If the transcript exceeds 80% of the judge's context window, either chunk the evaluation or flag the score with a boundary-proximity warning.
Operational Risk: Judge Model Coherence Blindness
Risk: weaker judge models may fail to detect subtle contradictions or topic drift, producing inflated coherence scores that mask real dialogue quality problems. Guardrail: calibrate the judge against human annotations on a golden dataset of conversations with known coherence failures. Set a minimum judge model capability tier and monitor score distributions for unexpected shifts.
Bad Fit: Real-Time Streaming Evaluation
Risk: this rubric expects complete multi-turn transcripts. Applying it to incomplete, in-progress conversations produces unstable scores that fluctuate as new turns arrive. Guardrail: defer coherence scoring until a conversation reaches a natural boundary (session end, topic closure, or turn limit). For streaming use cases, use a lightweight turn-level check instead of the full rubric.
Copy-Ready Prompt Template
A reusable prompt template for scoring multi-turn conversation coherence, ready to be adapted with your specific evaluation dimensions and context.
This prompt template is designed to be dropped directly into your evaluation harness. It instructs an LLM judge to assess a multi-turn conversation transcript for coherence, focusing on context retention, contradiction avoidance, topic progression, and turn-taking appropriateness. The template uses square-bracket placeholders for all variable components—replace each one with your specific configuration before sending it to the judge model. The output is structured as a JSON object with dimension scores, a composite score, and a required justification, making it suitable for automated evaluation pipelines.
textYou are an expert conversation quality evaluator. Your task is to score the coherence of a multi-turn dialogue between a user and an AI assistant. ## Evaluation Context [CONTEXT_DESCRIPTION] ## Rubric Dimensions Score each dimension on a scale of [SCORE_RANGE]. Use the following definitions: ### 1. Context Retention (CR) Does the assistant remember and correctly reference information from earlier turns? Penalize forgotten details, repeated questions, or contradictory statements about previously established facts. - [LEVEL_1_ANCHOR] - [LEVEL_2_ANCHOR] - [LEVEL_3_ANCHOR] - [LEVEL_4_ANCHOR] - [LEVEL_5_ANCHOR] ### 2. Contradiction Avoidance (CA) Does the assistant avoid contradicting its own prior statements? Flag direct contradictions, inconsistent advice, or factual reversals across turns. - [LEVEL_1_ANCHOR] - [LEVEL_2_ANCHOR] - [LEVEL_3_ANCHOR] - [LEVEL_4_ANCHOR] - [LEVEL_5_ANCHOR] ### 3. Topic Progression (TP) Does the conversation flow logically from one turn to the next? Assess whether topic shifts are smooth, abrupt, or disjointed. Penalize non-sequiturs and ignored user topic initiations. - [LEVEL_1_ANCHOR] - [LEVEL_2_ANCHOR] - [LEVEL_3_ANCHOR] - [LEVEL_4_ANCHOR] - [LEVEL_5_ANCHOR] ### 4. Turn-Taking Appropriateness (TA) Does the assistant respond appropriately to the user's last message? Assess whether responses acknowledge user input, answer direct questions, and maintain conversational rhythm. - [LEVEL_1_ANCHOR] - [LEVEL_2_ANCHOR] - [LEVEL_3_ANCHOR] - [LEVEL_4_ANCHOR] - [LEVEL_5_ANCHOR] ## Context Window Boundary Handling [CONTEXT_WINDOW_INSTRUCTIONS] ## Conversation Transcript [CONVERSATION_TRANSCRIPT] ## Output Schema Return ONLY a valid JSON object with this exact structure: { "scores": { "context_retention": <integer>, "contradiction_avoidance": <integer>, "topic_progression": <integer>, "turn_taking": <integer> }, "composite_score": <float>, "justification": "<string explaining key observations, edge cases, and reasoning for each score>", "uncertainty_flags": ["<list of specific concerns or borderline calls>"] } ## Constraints [ADDITIONAL_CONSTRAINTS]
To adapt this template, start by defining your scoring scale in [SCORE_RANGE]—common choices are 1–5 or 1–10. Populate each dimension's [LEVEL_N_ANCHOR] placeholders with concrete behavioral descriptions that distinguish each score point. For example, a Level 1 anchor for Context Retention might read: 'Assistant repeatedly asks for information already provided or contradicts established facts without acknowledgment.' The [CONTEXT_WINDOW_INSTRUCTIONS] placeholder is critical for production use: specify how the judge should handle conversations that exceed the model's context window, such as instructing it to note when earlier context appears truncated and to avoid penalizing the assistant for missing information that may have scrolled out of view. The [CONVERSATION_TRANSCRIPT] should be formatted with clear turn markers (e.g., 'User:', 'Assistant:') and include timestamps if temporal coherence matters for your use case. After populating all placeholders, run the prompt against a golden dataset of conversations with known coherence issues to calibrate the judge's scoring distribution against human ratings before deploying it in an automated pipeline.
Prompt Variables
Inputs the prompt needs to work reliably. Validate each before sending to the judge model. These variables define the contract for the Conversation Coherence Scoring Rubric.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[CONVERSATION_HISTORY] | Multi-turn dialogue to evaluate for coherence | User: What's the weather?\nAI: Sunny.\nUser: Should I wear sunscreen?\nAI: Yes, SPF 30. | Parse check: must contain at least 2 turns. Validate speaker labels are consistent. Null not allowed. |
[COHERENCE_DIMENSIONS] | List of coherence aspects to score (e.g., context retention, topic progression) | context_retention, contradiction_avoidance, topic_progression, turn_taking_appropriateness | Schema check: must be a comma-separated list matching allowed dimension names. Null defaults to all dimensions. |
[SCORING_SCALE] | Numeric or categorical scale for each dimension | 1-5 Likert scale with anchors: 1=Incoherent, 3=Adequate, 5=Flawless | Schema check: must define min, max, and at least 3 anchor points. Null not allowed. |
[CONTEXT_WINDOW_BOUNDARY] | Marker indicating where the model's context window cuts off earlier messages | ---CONTEXT_START---\n[truncated earlier messages] | Parse check: if present, must be a string delimiter. Null allowed if full history fits in context. |
[OUTPUT_FORMAT] | Desired structure for the judge's response | JSON object with dimension scores, overall score, and justification | Schema check: must be a valid JSON schema or format description. Null defaults to plain text. |
[REFERENCE_DEFINITIONS] | Optional glossary defining key terms for the judge | context_retention: ability to recall and use info from prior turns | Parse check: must be a dictionary mapping dimension names to definitions. Null allowed. |
[FAILURE_EXAMPLES] | Few-shot examples of incoherent dialogue to calibrate low scores | User: What's the weather?\nAI: I like pizza.\nUser: Should I wear sunscreen?\nAI: The capital of France is Paris. | Parse check: must contain at least one example with expected low score. Null allowed but recommended for calibration. |
Implementation Harness Notes
How to wire the conversation coherence scoring prompt into an evaluation pipeline with validation, retries, and production monitoring.
The conversation coherence rubric prompt is designed to operate as a model-graded evaluation step within a larger evaluation harness, not as a standalone chat interaction. In production, you will typically call this prompt after a multi-turn dialogue has completed, feeding the full transcript (or a sliding window of recent turns) into the [CONVERSATION_TRANSCRIPT] placeholder. The prompt returns a structured JSON scorecard that your harness can parse, log, and alert on. Treat this prompt as a deterministic measurement instrument: it should produce consistent scores for the same input, so you must control temperature (set to 0 or near-zero), pin the model version, and validate the output schema on every call.
Integration pattern: Wrap the prompt call in a function that (1) assembles the transcript with turn-level speaker labels and timestamps, (2) injects the rubric definition and scoring scale from your configuration store, (3) calls the LLM with response_format set to the expected JSON schema, and (4) validates the returned JSON before accepting the score. If the model returns malformed JSON, a missing required field, or a score outside the defined scale, retry once with an explicit repair instruction appended to the prompt (e.g., 'Your previous response was invalid. Return ONLY valid JSON matching the schema.'). If the retry also fails, log the failure, flag the evaluation as UNSCORABLE, and route it for human review. For high-stakes chat products, implement a calibration check: periodically sample scored transcripts and have a human evaluator independently score them using the same rubric, then compute Cohen's kappa or Pearson correlation to detect judge drift.
Context window handling: For long conversations that exceed the model's context window, implement a sliding window strategy. Score the most recent N turns (where N is calibrated to your model's token limit minus rubric and instruction overhead), and include a [PRIOR_CONTEXT_SUMMARY] placeholder populated by a separate summarization step for earlier turns. The rubric's context retention dimension should then evaluate coherence against both the recent turns and the provided summary. Monitoring: Log every score alongside the transcript hash, model version, timestamp, and any validation errors. Set alerts on score drops below your defined threshold, sudden increases in UNSCORABLE rates, and schema validation failure rates exceeding 2%. Store raw scores in your evaluation database for trend analysis and prompt version comparison.
What to avoid: Do not use this prompt for real-time scoring during live user conversations—latency and cost make it unsuitable for synchronous guardrails. Do not skip schema validation; malformed judge outputs silently corrupt your evaluation metrics. Do not treat the coherence score as a single source of truth without periodic human calibration checks. Finally, do not reuse the same model instance for both generating the conversation and scoring it, as self-evaluation bias inflates coherence scores. Always use a separate judge model or a separate API call with no shared context.
Expected Output Contract
Fields, format, and validation rules for the judge model's JSON response when scoring conversation coherence. Use this contract to parse, validate, and store scores reliably in your evaluation pipeline.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
overall_coherence_score | integer (1-5) | Must be an integer between 1 and 5 inclusive. Reject if float, string, or out of range. | |
dimension_scores.context_retention | integer (1-5) | Must be an integer between 1 and 5. Reject if missing or out of range. | |
dimension_scores.contradiction_avoidance | integer (1-5) | Must be an integer between 1 and 5. Reject if missing or out of range. | |
dimension_scores.topic_progression | integer (1-5) | Must be an integer between 1 and 5. Reject if missing or out of range. | |
dimension_scores.turn_taking_appropriateness | integer (1-5) | Must be an integer between 1 and 5. Reject if missing or out of range. | |
justification | string | Must be a non-empty string with at least 20 characters. Reject if null, empty, or whitespace-only. | |
flagged_issues | array of strings | Must be a JSON array. Each element must be a non-empty string. Empty array is valid if no issues found. | |
context_window_boundary_note | string or null | If context window was truncated, must contain a non-empty string describing impact. Otherwise must be null. Reject if empty string when truncation occurred. |
Common Failure Modes
What breaks first when scoring conversation coherence and how to guard against it.
Context Window Truncation
What to watch: The rubric evaluates only the visible portion of the conversation, missing critical context from earlier turns that fell outside the context window. This produces falsely low coherence scores for long conversations. Guardrail: Implement a sliding window strategy that summarizes earlier context into a running synopsis, and instruct the judge to treat the synopsis as canonical history when earlier turns are unavailable.
Surface-Level Fluency Confusion
What to watch: The judge mistakes well-written but contradictory or off-topic responses for coherent conversation. Fluent prose masks failures in topic progression and context retention. Guardrail: Add a dedicated contradiction-detection dimension to the rubric that explicitly compares each new response against previously established facts, and weight it higher than stylistic fluency.
Turn-Taking Blindness
What to watch: The rubric scores each response in isolation, missing failures where the assistant interrupts, ignores user corrections, or repeats already-resolved questions. Guardrail: Require the judge to output a turn-transition annotation before scoring, explicitly labeling whether the assistant acknowledged the user's last intent, and penalize unacknowledged topic shifts.
Topic Drift False Positives
What to watch: Legitimate user-initiated topic changes are penalized as incoherence, punishing the assistant for following the user's lead. Guardrail: Add a conditional scoring rule that exempts assistant responses from topic-continuity penalties when the user's immediately preceding turn explicitly introduces a new subject or question.
Boundary Artifact Scoring
What to watch: The judge penalizes the first and last turns in the evaluated window because they lack preceding or following context, creating artificial coherence drops at window boundaries. Guardrail: Apply a boundary-awareness flag that instructs the judge to reduce topic-continuity weight for the first turn and closure-expectation weight for the last turn in any evaluation window.
Persona and Role Inconsistency Overlooked
What to watch: The rubric focuses on factual and topical coherence but misses when the assistant contradicts its own stated role, capabilities, or behavioral guidelines across turns. Guardrail: Include a persona-consistency sub-dimension that checks whether the assistant's self-descriptions, capability claims, and tone remain stable throughout the conversation, and flag role drift as a coherence violation.
Evaluation Rubric
Use this rubric to test the conversation coherence scoring prompt before production deployment. Each criterion validates a specific quality dimension of the judge's output against expected behavior.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Score validity | Output score is an integer within the defined scale range for each dimension | Score is missing, null, non-integer, or outside [MIN_SCORE]-[MAX_SCORE] range | Schema validation: parse output, check type and range for each dimension score |
Dimension coverage | All required dimensions from [DIMENSIONS_LIST] appear with a score and justification | Missing dimension, extra dimension not in rubric, or dimension scored without justification text | Field enumeration: extract all dimension keys, compare against expected dimension set |
Justification quality | Each justification references specific turn content or turn numbers from the conversation | Justifications are generic, repeat rubric definitions verbatim, or fail to cite any turn | Citation check: scan justification text for turn references like turn_N or quoted message content |
Context retention accuracy | Score correctly penalizes conversations where later turns contradict or ignore earlier facts | High context retention score assigned to conversation with clear contradiction across turns | Golden dataset: run against pre-labeled contradictory conversations, verify score <= [CONTRADICTION_THRESHOLD] |
Topic progression scoring | Score reflects natural topic shifts and penalizes abrupt, unexplained jumps | Same topic progression score for coherent flow and random topic switching | Pairwise test: compare scores for coherent vs. scrambled conversation variants, expect significant difference |
Turn-taking assessment | Score penalizes ignored questions, interrupted responses, or non-sequitur replies | High turn-taking score when user question is completely ignored in assistant response | Targeted case: inject conversation with one ignored question, verify turn-taking score drops below [TURN_QUALITY_THRESHOLD] |
Context window boundary handling | Judge correctly notes when earlier context is truncated and adjusts scoring expectations | Judge penalizes missing context that falls outside the provided window as if it were a model failure | Boundary test: provide conversation with explicit truncation marker, verify judge output mentions context window limitation |
Output format compliance | Output matches [OUTPUT_SCHEMA] exactly with all required fields present and correctly typed | Missing overall_score, malformed JSON, or extra fields that violate schema contract | Schema validation: validate against JSON Schema definition, reject on missing required fields or type mismatches |
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
Use the base rubric template with a single coherence dimension and a 1–3 scale. Remove the multi-turn context window boundary handling and the contradiction severity classification. Focus on getting a rough signal, not calibrated scores.
codeScore the conversation on coherence from 1 (incoherent) to 3 (fully coherent). Consider topic progression and turn-taking appropriateness. [CONVERSATION]
Watch for
- Scores that don't distinguish between topic drift and true incoherence
- No definition of what counts as a turn-taking failure
- Single-dimension scores masking specific failure modes

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