This prompt is designed for collaborative decision-making workflows where an action cannot proceed until multiple designated reviewers have weighed in. The job-to-be-done is to programmatically evaluate a collection of approval responses—each from a different stakeholder—and determine whether a genuine consensus exists. It is not a simple vote counter; it must detect subtle disagreements, blocking concerns, and suppressed objections that a naive tally would miss. The ideal user is a platform engineer or product manager embedding this logic into an enterprise approval system, a compliance officer automating governance gates, or an AI reliability engineer building a human-in-the-loop orchestration layer.
Prompt
Multi-Stakeholder Consensus Check Prompt

When to Use This Prompt
Defines the job, ideal user, and constraints for the Multi-Stakeholder Consensus Check Prompt.
Use this prompt when you have already collected structured feedback from all required reviewers and need a final status determination before executing a high-risk action. The required context includes the original action proposal, the list of required approvers with their roles, and each reviewer's structured response (approve, reject, abstain, or approve with conditions). You should not use this prompt for single-approver workflows, for initial routing decisions about who should approve, or for evaluating the quality of an individual reviewer's feedback. It is also inappropriate for low-stakes decisions where a simple majority vote suffices; the prompt's value lies in catching the edge cases where consensus is ambiguous or fractured.
Before wiring this into production, define what consensus means for your organization: full unanimity, majority with no blocking vetoes, or approval with recorded dissents. The prompt template expects you to supply this definition as a [CONSENSUS_RULES] constraint. Always pair the output with a validation step that checks for false consensus—cases where all reviewers technically approved but one included conditional language that should halt execution. The next section provides the copy-ready template you can adapt to your specific approval schema and organizational policy.
Use Case Fit
Where the Multi-Stakeholder Consensus Check Prompt delivers value and where it introduces risk. Use these cards to decide if this prompt fits your workflow before integrating it into an approval pipeline.
Good Fit: Structured Review Boards
Use when: you have a formal change advisory board (CAB), architecture review board, or security council where multiple named roles must explicitly approve or object. Why: the prompt expects structured approval responses and can detect blocking concerns, abstentions, and conditional approvals across a known reviewer set.
Bad Fit: Informal Team Chat
Avoid when: consensus is gathered through unstructured chat threads, emoji reactions, or implicit social signals. Risk: the prompt requires explicit approval statements. Ambiguous input produces false disagreements or missed objections. Guardrail: pre-process informal input with a structured extraction step before consensus checking.
Required Inputs
What you need: a list of required reviewers with their stated positions (approve, object, abstain, conditional), the action under review, and any policy thresholds for consensus (e.g., unanimous, majority, no objections). Guardrail: validate reviewer list completeness before calling the prompt. Missing required reviewers should block consensus, not default to approval.
Operational Risk: False Consensus
Risk: the prompt may declare consensus when a reviewer's objection was vague, conditional, or buried in long text. Guardrail: require explicit objection language in reviewer input. Add a pre-check that extracts and highlights any hedging phrases before consensus evaluation. Test with edge cases where objections are implied but not stated.
Operational Risk: Suppressed Dissent
Risk: a reviewer raises a concern but the prompt treats it as non-blocking when policy requires it to block. Guardrail: define blocking vs. non-blocking concern categories in the prompt's policy context. Include eval tests where a concern should block but is phrased politely or tentatively.
Variant: Time-Boxed Consensus
Use when: approvals must arrive within a deadline window. Adaptation: add a time constraint to the prompt and flag late responses as abstentions or escalate to a default approver. Guardrail: log timeout decisions separately for audit. Never silently treat a missing response as approval.
Copy-Ready Prompt Template
A reusable prompt template for evaluating multi-stakeholder approval responses to determine if consensus has been reached or if escalation is required.
This prompt template is designed to be the core reasoning engine for a multi-stakeholder consensus check. It takes a set of structured approval responses from different reviewers, evaluates them against a defined policy, and determines whether a decision can be made autonomously or if a human escalation is necessary. The template is built to be wired directly into an application's approval workflow, receiving inputs from a database or upstream service and returning a structured, machine-readable consensus status.
textYou are an AI system responsible for evaluating consensus in a multi-stakeholder approval workflow. Your task is to analyze the approval responses from multiple reviewers for a specific action and determine the consensus status. You must strictly adhere to the provided policy, identify dissenting views, and recommend the next step. ## ACTION CONTEXT [ACTION_DESCRIPTION] [ACTION_METADATA] ## APPROVAL POLICY [APPROVAL_POLICY_RULES] ## REVIEWER RESPONSES [REVIEWER_RESPONSES] ## OUTPUT SCHEMA You must output a single JSON object with the following structure: { "consensus_status": "reached" | "blocked" | "insufficient_quorum" | "escalation_required", "summary": "A concise, one-sentence summary of the overall decision state.", "dissenting_views": [ { "reviewer": "[REVIEWER_ID]", "concern": "A specific, quoted or paraphrased summary of the blocking concern.", "policy_clause_violated": "[POLICY_CLAUSE_REFERENCE]" } ], "next_step": "proceed" | "escalate_to_human" | "request_clarification" | "reopen_for_review", "escalation_rationale": "If next_step is escalate_to_human, provide a clear explanation of why automated resolution is not possible. Otherwise, set to null." } ## CONSTRAINTS - Consensus is reached only if all required approvers have responded with 'approved' and no blocking concerns are raised. - A single 'rejected' or 'blocked' response from a required approver must result in a 'blocked' status. - If a required approver has not responded, the status must be 'insufficient_quorum'. - If two or more required approvers have conflicting non-blocking conditions, the status is 'escalation_required'. - Do not fabricate agreement. If a reviewer's response is ambiguous, treat it as a lack of consensus and flag it for human review.
To adapt this template for your specific workflow, replace the square-bracket placeholders with data from your application. [ACTION_DESCRIPTION] and [ACTION_METADATA] should be populated with the details of the proposed action, such as 'Delete production database table X' and its risk score. [APPROVAL_POLICY_RULES] is the most critical variable; it must contain the specific, deterministic rules for your organization, such as 'Requires unanimous approval from Security Lead and Engineering Director for any production data mutation.' The [REVIEWER_RESPONSES] should be a structured list of objects, each containing a reviewer ID, their role, their decision (approved/rejected/abstain), and any comments. Before deploying, test this prompt with a golden dataset of known consensus and deadlock scenarios to ensure the output JSON strictly conforms to the schema and the logic matches your policy.
Prompt Variables
Required inputs for the Multi-Stakeholder Consensus Check Prompt. Each variable must be populated before the prompt is sent. Missing or malformed inputs are the most common cause of false consensus or suppressed objections.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[ACTION_DESCRIPTION] | The proposed action or decision requiring multi-stakeholder consensus | Deploy release v2.4.1 to production EU region during Friday maintenance window | Must be a non-empty string. Should include what is being done, where, and when. Vague descriptions cause false consensus. |
[STAKEHOLDER_RESPONSES] | Array of structured approval responses from each required reviewer | [{"reviewer":"security-lead","decision":"approved","notes":"Passed pen test","conditions":["Run DB migration first"]}] | Must be valid JSON array. Each object requires reviewer, decision, and notes fields. Empty array triggers immediate escalation. |
[REQUIRED_APPROVERS] | Complete list of roles or individuals who must provide input for consensus to be valid | ["security-lead","infra-owner","compliance-officer","product-manager"] | Must be a non-empty JSON array of strings. Used to detect missing responses. Mismatch with STAKEHOLDER_RESPONSES triggers incomplete consensus status. |
[DECISION_RULES] | Policy rules defining what constitutes consensus, blocking conditions, and veto authority | {"consensus_type":"unanimous","veto_roles":["security-lead","compliance-officer"],"abstain_behavior":"counts-as-approve"} | Must be valid JSON object. Check that veto_roles is a subset of REQUIRED_APPROVERS. Invalid rules cause incorrect consensus determination. |
[ESCALATION_POLICY] | Instructions for what happens when consensus fails, including escalation target and urgency | {"escalate_to":"vp-engineering","timeout_hours":4,"auto_escalate_on":["veto","missing-response"]} | Must be valid JSON object. Null allowed if no escalation path exists. Missing escalation policy on high-risk actions is a compliance gap. |
[CONTEXT_WINDOW] | Relevant background: previous related decisions, risk assessments, or policy references | {"previous_decision":"Approved v2.4.0 with condition to add rollback test","risk_assessment_ref":"RISK-2025-0042"} | Must be valid JSON object or null. Provides grounding for detecting whether objections reference known risks. Missing context increases false consensus risk. |
[OUTPUT_SCHEMA] | Expected structure for the consensus determination output | {"consensus_reached":"boolean","status":"string","dissenting_views":"array","missing_approvers":"array","escalation_required":"boolean"} | Must be valid JSON schema object. Used to validate output shape. Schema mismatch between prompt instruction and application parser causes integration failures. |
Implementation Harness Notes
How to wire the Multi-Stakeholder Consensus Check Prompt into an application or workflow.
This prompt is designed to be called after all required stakeholder responses have been collected, not as a real-time streaming function. The application layer should gather each reviewer's decision, their stated rationale, and any conditions or objections into a structured input payload before invoking the model. This separation ensures the model operates on a complete snapshot of the decision state, reducing the risk of premature consensus declarations or missed objections that arrive late.
The implementation should wrap the model call in a validation harness that checks the output schema before the result is acted upon. The consensus status field must be one of a controlled enum: CONSENSUS_REACHED, CONSENSUS_WITH_CONDITIONS, BLOCKED, or ESCALATION_REQUIRED. If the model returns an unrecognized status or fails to include a dissenting_views array when the status is not CONSENSUS_REACHED, the harness should reject the output and retry with a stricter prompt that includes the validation error. For high-stakes decisions, such as production deployments or financial approvals, the system should route any BLOCKED or ESCALATION_REQUIRED result to a human review queue with the full consensus payload attached, rather than automatically acting on the escalation path.
Logging is critical for auditability. Every invocation should record the input stakeholder responses, the raw model output, the validation result, and the final consensus determination. This trace allows teams to debug false consensus cases—where the model declared agreement but a human reviewer later identifies a suppressed objection—by replaying the exact input through updated prompt versions. When deploying, start with a model that has strong instruction-following and structured output capabilities, and avoid using this prompt with models that have known weaknesses in detecting negation or subtle disagreement in long contexts. The next step is to pair this prompt with the Approval Evidence Package Assembly Prompt to ensure reviewers have complete context before they cast their vote.
Expected Output Contract
Defines the exact fields, types, and validation rules for the consensus check output. Use this contract to parse the model response and gate downstream actions.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
consensus_status | enum: reached | blocked | deadlocked | insufficient_quorum | Must be exactly one of the four enum values. Reject any other string. | |
blocking_objections | array of object | If consensus_status is blocked or deadlocked, array must contain at least one object. If reached, array must be empty. | |
blocking_objections[].reviewer_id | string | Must match a reviewer_id from the [REVIEWER_RESPONSES] input. Reject orphan objections. | |
blocking_objections[].objection_summary | string | Must be a non-empty string under 280 characters. Summarize the core disagreement, not a verbatim quote. | |
dissenting_views | array of object | Captures non-blocking disagreements. Can be empty. Each object must have reviewer_id and concern_summary. | |
dissenting_views[].concern_summary | string | Must be a non-empty string under 280 characters. Must not duplicate a blocking objection from the same reviewer. | |
escalation_recommendation | enum: proceed | human_review | executive_decision | null | If consensus_status is reached, must be proceed. If blocked, must not be proceed. Use null only if insufficient_quorum. | |
summary_of_agreement | string | If consensus_status is reached, provide a 1-2 sentence synthesis of the agreed position. If not reached, use null. |
Common Failure Modes
What breaks first when using a Multi-Stakeholder Consensus Check Prompt and how to guard against it.
False Consensus from Acquiescence
What to watch: The model interprets silence or non-objection as agreement, especially when some reviewers provide terse approvals like 'LGTM' or 'ok'. This masks unresolved concerns and creates a false consensus record. Guardrail: Require explicit affirmative language for each stakeholder. If a response is ambiguous, classify it as 'unclear' and trigger a targeted clarification request before declaring consensus.
Suppressed Dissent in Group Context
What to watch: When the prompt presents all stakeholder responses together, the model may downplay a single dissenting view to favor the majority, especially if the dissenter used hedging language. The summary loses the weight of the objection. Guardrail: Instruct the model to extract and elevate every unique objection, regardless of how many stakeholders raised it. A single blocking concern must prevent a 'consensus reached' status.
Role Confusion Across Stakeholders
What to watch: The model conflates stakeholders with similar titles or misattributes a comment to the wrong role, causing the consensus check to validate against the wrong authority. This is common in large committees or cross-functional reviews. Guardrail: Provide a structured input schema that maps each stakeholder name to a unique role ID and decision authority level. Require the output to reference stakeholders by their canonical role ID, not just their name.
Ignoring Conditional Approvals
What to watch: A stakeholder approves 'pending clarification on X' or 'once the rollback plan is added'. The model treats this as a standard approval and moves to consensus, bypassing the unmet condition. Guardrail: Add a dedicated output field for 'pending conditions'. Any approval with a qualifier must be classified as 'conditional' and block final consensus until all conditions are explicitly resolved or waived by the original approver.
Escalation Threshold Miscalibration
What to watch: The prompt uses a rigid rule like 'escalate if any stakeholder objects', which floods the escalation queue with minor wording suggestions. Conversely, a rule like 'escalate only for blocking vetoes' misses critical risk flags from non-veto holders. Guardrail: Implement a tiered objection severity classifier. Distinguish between 'blocking' (veto, safety, legal), 'advisory' (suggestion, preference), and 'informational' (context-only) concerns. Escalate only on blocking objections or when advisory concerns accumulate beyond a defined threshold.
Stale or Out-of-Context Approvals
What to watch: An approval was granted 3 days ago, but the underlying artifact or risk context has since changed. The consensus check re-uses the stale approval without verifying its continued validity. Guardrail: Attach a version hash or timestamp to the artifact under review. The prompt must compare the approval timestamp against the current artifact version. If the artifact has changed since the last approval, invalidate that stakeholder's vote and re-request approval.
Evaluation Rubric
Use this rubric to test the Multi-Stakeholder Consensus Check Prompt before deploying it to a production review queue. Each criterion targets a specific failure mode common in multi-party agreement detection.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Consensus Status Accuracy | Correctly classifies status as 'consensus_reached', 'consensus_blocked', or 'consensus_pending' based on [APPROVAL_RESPONSES] and [REQUIRED_APPROVERS]. | Status is 'consensus_reached' when a required approver has an unresolved 'block' or 'veto' response. | Run 10 golden cases with known approval/disapproval mixes and compare predicted status to ground truth. |
Dissenting View Capture | All dissenting views are extracted into the [DISSENTING_VIEWS] array with the correct [REVIEWER_ID] and a verbatim quote of the objection. | A blocking concern from a reviewer is omitted from the output or paraphrased in a way that softens the objection. | Inject a test case with a clear, hard-block objection. Assert the objection text appears exactly in the output. |
False Consensus Detection | Does not report 'consensus_reached' when a reviewer abstains or provides conditional approval without the condition being met. | An 'approve_if' or 'abstain' response is counted as a full approval, leading to a false consensus. | Provide a response set where one reviewer says 'Approved only if the DB migration is rolled back first.' Verify status is not 'consensus_reached'. |
Suppressed Objection Detection | Identifies when a reviewer changes their vote from 'block' to 'approve' without addressing the original concern, and flags it as a potential suppressed objection. | A reviewer's retraction of a block is accepted silently without noting the unresolved concern. | Simulate a sequence where a reviewer blocks, then approves with the comment 'Fine, ship it.' Assert the output flags the unresolved original concern. |
Escalation Path Clarity | When consensus is blocked, the [ESCALATION_PATH] field contains a specific role or individual, not a generic team name. | Escalation path is 'management' or 'leadership' without a specific role or named individual. | Provide an org chart in [CONTEXT]. Assert that a blocked consensus returns a specific role like 'VP of Platform Engineering'. |
Stakeholder Identification | Correctly maps every reviewer in [APPROVAL_RESPONSES] to a role defined in [STAKEHOLDER_MAP]. | A reviewer is listed as 'unknown' or omitted from the consensus calculation. | Include a response from an unmapped reviewer ID. Assert the output flags an 'unmapped_stakeholder' warning. |
Output Schema Validity | The output strictly conforms to the [OUTPUT_SCHEMA] with all required fields present and correctly typed. | The JSON is missing the [CONSENSUS_DETAIL] object or [DISSENTING_VIEWS] is a string instead of an array. | Validate the raw output string against the JSON Schema definition. Assert no schema violations. |
Abstention Handling | Abstentions are counted toward quorum but do not count as approval. The [QUORUM_STATUS] field reflects whether enough active votes exist. | An abstention is treated as an implicit approval, allowing a decision to pass without true agreement. | Provide a case where 2 of 3 required approvers abstain. Assert status is 'consensus_pending' or 'consensus_blocked', not 'consensus_reached'. |
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 prompt with a small set of synthetic stakeholder responses. Skip formal schema validation and focus on whether the model correctly identifies consensus vs. deadlock in simple cases.
Simplify the output to just consensus_reached (boolean) and summary (string). Remove the detailed dissent tracking until you validate the core logic.
Watch for
- False consensus when one stakeholder is silent or abstains
- Treating non-response as agreement
- Over-summarizing dissent into meaninglessness

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