This prompt is designed for compliance engineers and operations leads who need to annotate the strength of evidence attached to review items before a human reviewer sees them. The goal is to produce a structured assessment of each source's reliability, identify gaps in the evidence chain, and flag items where the supporting material is too weak to support a confident decision. Use this prompt when you are building a human review queue and need to pre-process evidence so reviewers can quickly assess source reliability without reading every document from scratch.
Prompt
Evidence Strength Annotation Prompt for Review Items

When to Use This Prompt
Defines the ideal pre-review pipeline stage, user, and conditions for deploying the Evidence Strength Annotation Prompt.
This prompt belongs in a pre-review pipeline stage, after evidence has been collected and attached to a review item but before the item is routed to a human reviewer. It is not a replacement for human judgment on evidence weight; it is a triage aid that surfaces reliability concerns early. The ideal input is a review item with a clear decision question and a set of attached sources. The output should be a structured annotation per source, including a reliability rating, a justification grounded in the source material, and a list of identified evidence gaps. Do not use this prompt when the evidence is already highly structured and machine-verifiable, or when the review decision is purely procedural and does not require source credibility assessment.
Before deploying, define what 'weak evidence' means in your domain. For a financial audit, a verbal confirmation without a paper trail might be weak. For a policy violation review, a single anonymous report might be insufficient. Codify these rules in the [CONSTRAINTS] placeholder so the model applies consistent standards. Pair this prompt with an evaluation step that checks whether the model correctly identified a known-weak source in a golden dataset, and whether it missed any gaps that a human auditor later found. If the prompt will run on high-stakes items, route outputs where the model flags 'insufficient evidence' for mandatory human review before any downstream action is taken.
Use Case Fit
Where the Evidence Strength Annotation Prompt works, where it fails, and the operational conditions required for safe deployment.
Good Fit: Multi-Source Review Queues
Use when: Review items contain claims backed by multiple sources of varying reliability (official docs, user reports, logs). Guardrail: The prompt excels at comparative annotation, making it ideal for compliance and security triage where source quality directly impacts decision speed.
Bad Fit: Single-Source or No-Evidence Items
Avoid when: The review item contains only one source or the source is the claim itself (e.g., a user's unverified statement). Guardrail: Without comparative context, the model may hallucinate strength justifications. Route single-source items to a simpler 'needs verification' queue instead.
Required Inputs: Source Metadata
Risk: The prompt fails silently if sources lack type, date, or author metadata. Guardrail: Enforce a strict input schema that rejects items missing source_type, source_date, or author_role fields before the prompt runs. Return a structured error instead of guessing.
Operational Risk: Annotation Drift
Risk: Over time, the model may start labeling all sources as 'Medium' strength to avoid errors, eroding the queue's usefulness. Guardrail: Implement a weekly eval that checks the distribution of strength labels. Trigger a human review if 'High' or 'Low' labels drop below 10% of total volume.
Operational Risk: Slow Reviewer Adoption
Risk: Reviewers ignore the annotations if they are too verbose or lack actionable gaps. Guardrail: The output must include a specific 'Evidence Gaps' field with concrete missing information, not just a strength label. A/B test reviewer decision time with and without the gap summary.
Bad Fit: Real-Time Blocking Decisions
Avoid when: The annotation is used to automatically block an action (e.g., blocking a transaction) without human review. Guardrail: This prompt is for triage and prioritization, not autonomous gating. A 'Low' evidence strength flag should route the item for human review, not trigger an automated denial.
Copy-Ready Prompt Template
A reusable prompt template for annotating review items with evidence strength labels, source reliability assessments, and gap identification.
This prompt template is designed to be copied directly into your application or testing environment. It instructs the model to examine each piece of evidence associated with a review item, assign a strength label, flag reliability concerns, and identify gaps where evidence is missing or insufficient. Replace every square-bracket placeholder with your actual data before sending the prompt to the model. The template assumes you have already assembled the review item content, its supporting evidence, and any domain-specific annotation rules.
codeYou are an evidence quality annotator for a human review queue. Your job is to examine each piece of evidence attached to a review item and produce a structured annotation that helps a human reviewer quickly assess source reliability and evidence completeness. ## INPUT Review Item: [REVIEW_ITEM_TEXT] Evidence List: [EVIDENCE_LIST] Annotation Rules: [ANNOTATION_RULES] ## OUTPUT SCHEMA Return a JSON object with the following structure: { "item_id": "[ITEM_ID]", "annotations": [ { "evidence_id": "string", "strength_label": "strong" | "moderate" | "weak" | "insufficient", "reliability_flags": ["string"], "gap_notes": "string or null", "rationale": "string" } ], "overall_assessment": { "strongest_evidence_id": "string or null", "critical_gaps": ["string"], "reviewer_guidance": "string" } } ## CONSTRAINTS - Assign `strength_label` based on source credibility, directness of evidence, and corroboration. - Use `reliability_flags` to surface concerns such as hearsay, outdated source, conflicting statements, anonymous source, or single-source dependency. - Populate `gap_notes` when evidence is missing, incomplete, or requires additional verification. Use null if no gaps are identified. - The `rationale` field must explain why the strength label was assigned in one to two sentences. - `critical_gaps` in the overall assessment should list only gaps that would prevent a reviewer from making a confident decision. - Do not invent evidence. If the evidence list is empty, mark all annotations as `insufficient` and explain in `reviewer_guidance`. - If [RISK_LEVEL] is `high`, flag any single-source or uncorroborated evidence as `weak` regardless of apparent credibility. ## EXAMPLES [FEW_SHOT_EXAMPLES] ## OUTPUT Return only the JSON object. No additional commentary.
Adaptation guidance: Replace [REVIEW_ITEM_TEXT] with the full content of the item under review. [EVIDENCE_LIST] should contain each evidence record with its identifier, source description, date, and content. [ANNOTATION_RULES] should encode your organization's specific criteria for strength labels, such as regulatory standards, internal policy thresholds, or domain-specific reliability heuristics. [RISK_LEVEL] controls whether the prompt applies stricter evidence requirements for high-risk review contexts. [FEW_SHOT_EXAMPLES] should include two to four annotated examples that demonstrate correct label assignment, especially for borderline cases where moderate versus weak distinction matters. Test this prompt with at least ten review items where you already know the expected annotations before deploying to production. If your evidence list is large, consider batching or pre-filtering to keep the prompt within context limits while preserving all evidence that could affect the annotation.
Prompt Variables
Required inputs for the Evidence Strength Annotation Prompt. Each placeholder must be populated before the prompt is sent to the model. Validation notes describe how to programmatically verify the input quality.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[REVIEW_ITEM_TEXT] | The full text of the review item that contains claims requiring evidence strength annotation. | The vendor asserts 99.999% uptime based on their SOC 2 report, but the report only covers a 3-month period. | Check string length > 20 characters. Reject empty or whitespace-only input. Log null input as a missing data event. |
[SOURCE_LIST] | A structured list of sources cited or referenced in the review item. Each source must have an ID and the extracted text used as evidence. | [{"source_id": "src_01", "source_text": "SOC 2 report covering Jan-Mar 2024..."}] | Parse as JSON array. Validate each object has non-empty source_id and source_text fields. Reject if array is empty when REVIEW_ITEM_TEXT contains citations. |
[EVIDENCE_CLAIM_PAIRS] | Pre-extracted pairs mapping specific claims from the review item to the source passages that support or contradict them. | [{"claim": "99.999% uptime", "source_id": "src_01", "relationship": "supporting"}] | Parse as JSON array. Validate each object has claim, source_id, and relationship fields. Relationship must be one of supporting, contradicting, or mentioning. Reject if array is empty. |
[ANNOTATION_TAXONOMY] | The controlled vocabulary of evidence strength labels the model is allowed to use, with definitions. | ["strong", "moderate", "weak", "insufficient", "contradictory"] | Validate as a non-empty array of strings. Each label must be unique. Reject if taxonomy contains undefined or ambiguous terms without definitions. |
[OUTPUT_SCHEMA] | The exact JSON schema the model must use to return annotations. Defines the structure for per-source strength labels and gap identification. | {"type": "object", "properties": {"annotations": {"type": "array"...}}} | Validate as a valid JSON Schema object. Check for required fields: annotations array, gaps array. Reject if schema allows additionalProperties without explicit intent. |
[CONFIDENCE_THRESHOLD] | The minimum confidence score (0.0-1.0) the model must have to auto-assign a label. Scores below this trigger an abstention flag. | 0.75 | Validate as a float between 0.0 and 1.0. Reject values outside range. Log thresholds below 0.5 as potentially risky for high-stakes annotation. |
[MAX_GAPS_TO_REPORT] | The maximum number of missing evidence gaps the model should identify before truncating the list to keep the output focused. | 5 | Validate as a positive integer. Reject values > 20 to prevent overly verbose outputs. Default to 5 if not provided. |
Implementation Harness Notes
How to wire the Evidence Strength Annotation prompt into a review queue application with validation, retries, and human oversight.
The Evidence Strength Annotation prompt is designed to be called as a pre-processing step before a review item reaches a human reviewer. In a typical implementation, a review queue service receives a new item, extracts the source list and any associated evidence snippets, and calls the LLM with this prompt to annotate each source's strength. The output is a structured JSON payload that gets attached to the review item as metadata, allowing the reviewer interface to render strength badges, sort sources by reliability, and highlight gaps before the human spends time on the item.
Wire this prompt into an asynchronous pipeline, not a synchronous user-facing request. After the review item is created, enqueue an annotation job. The job fetches the item's sources, hydrates the [SOURCES] placeholder with an array of objects containing source_id, source_type, and evidence_snippet, and populates [DOMAIN] with the review domain (e.g., 'financial_transaction', 'clinical_note', 'security_alert'). On success, parse the JSON output and validate it against a strict schema: each source must have a strength_label from the allowed enum (STRONG, MODERATE, WEAK, INSUFFICIENT), a rationale string, and a gaps array. Reject any output where a source from the input is missing or an unknown source appears. If validation fails, retry once with the validation error injected into [CONSTRAINTS] as a repair instruction. If the retry also fails, flag the item for manual annotation and log the raw output for debugging.
For high-stakes domains like compliance or clinical review, never surface unvalidated annotations directly to reviewers. Implement a confidence gate: if the model's output includes a WEAK or INSUFFICIENT label, the reviewer UI should prominently flag that source and may require the reviewer to confirm or override the annotation before closing the item. Log every annotation event—input sources, model output, validation result, and any human override—to an audit table. This creates a feedback loop for evaluating annotation consistency over time. Use the eval checks described in the playbook (annotation consistency, missed weak-evidence flags) as periodic batch jobs that sample annotated items and compare model labels against human reviewer overrides, surfacing drift or systematic errors before they affect downstream decisions.
Expected Output Contract
Defines the required fields, types, and validation rules for the evidence strength annotation output. Use this contract to parse, validate, and store annotations before they enter a human review queue.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
source_id | string | Must match a source identifier from the input [REVIEW_ITEM]. Non-empty and present in the source list. | |
source_excerpt | string | Direct quote or close paraphrase from the source. Must be verifiable against the original [REVIEW_ITEM] text. Length between 10 and 500 characters. | |
evidence_strength | enum: STRONG | WEAK | HEARSAY | UNVERIFIABLE | Must be one of the four allowed enum values. STRONG requires a direct, attributable statement. HEARSAY requires an indirect attribution marker. | |
strength_rationale | string | A single sentence explaining why the strength label was assigned. Must reference a specific property of the source (e.g., direct quote, anonymous tip, conflicting report). | |
reliability_gaps | array of strings | If present, each string must describe a specific missing element: anonymous source, conflicting data, outdated timestamp, or single-source claim. Empty array allowed if evidence_strength is STRONG. | |
requires_corroboration | boolean | Must be true if evidence_strength is WEAK or HEARSAY. Must be false if evidence_strength is STRONG. UNVERIFIABLE can be either, but defaults to true. | |
reviewer_action | enum: ACCEPT_AS_IS | FLAG_FOR_REVIEW | ESCALATE | ACCEPT_AS_IS only allowed when evidence_strength is STRONG and requires_corroboration is false. ESCALATE required when evidence_strength is UNVERIFIABLE. | |
annotation_confidence | number between 0.0 and 1.0 | Must be a float. If below 0.7, the entire annotation object must be routed to a human reviewer regardless of reviewer_action. Parse as float and check threshold. |
Common Failure Modes
Evidence strength annotation fails in predictable ways. These cards cover the most common failure modes when annotating source reliability for review items and how to guard against them before they reach a human reviewer.
Overconfidence on Single-Source Claims
What to watch: The model assigns a high strength label to a claim supported by only one source, especially when that source is self-referential or unverifiable. Guardrail: Require at least two independent corroborating sources before allowing a HIGH strength label. Add a SINGLE_SOURCE flag that forces the annotation to MEDIUM or lower unless the source type is a primary official record.
Source Type Misclassification
What to watch: The model confuses source categories—treating a press release as an independent audit, or a forum post as official documentation. This inflates evidence strength scores. Guardrail: Include a source-type taxonomy in the prompt with clear definitions and examples. Add a validation step that checks whether the assigned strength label is consistent with the source type before the annotation is finalized.
Missing Weak-Evidence Flags on Inferred Claims
What to watch: The model treats inferred or extrapolated claims as directly stated evidence, skipping the WEAK or INDIRECT label. This is common when the source implies but does not state a fact. Guardrail: Add an explicit instruction to distinguish between DIRECTLY_STATED and INFERRED evidence. Require a separate annotation field for directness, and flag any claim where the model cannot quote the exact supporting passage.
Annotation Drift Across Long Documents
What to watch: Consistency degrades on long review items with many sources. Early sources get careful annotation; later sources receive rushed or copied labels. Guardrail: Chunk the review item into source-level units and annotate each independently. Use a final consistency pass that compares labels across all sources and flags outliers where similar source types received different strength ratings.
Temporal Relevance Ignored
What to watch: The model assigns high strength to a source that was authoritative at the time of publication but is now outdated, without flagging staleness. Guardrail: Include a SOURCE_DATE field in the annotation schema and require a TEMPORAL_RELEVANCE check. If the source is older than a configurable threshold relative to the claim's context, cap the strength label at MEDIUM and surface a staleness warning to the reviewer.
Gap Reporting Omission
What to watch: The model annotates what evidence exists but fails to explicitly list what evidence is missing—creating a false sense of completeness for the reviewer. Guardrail: Require a mandatory EVIDENCE_GAPS field in the output schema. If the model cannot populate it with at least one gap, force a re-check. Use an eval that penalizes annotations where a human reviewer later identifies an unstated gap.
Evaluation Rubric
Criteria for evaluating the quality of evidence strength annotations before shipping the prompt to production. Each row defines a pass standard, a failure signal, and a test method.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Annotation Completeness | Every source in [REVIEW_ITEM] receives exactly one strength label from the allowed enum. | A source is missing an annotation or has multiple conflicting labels. | Parse output JSON; assert len(annotations) == len(input_sources). |
Enum Adherence | All | A label like 'medium' or 'unknown' appears when not in the allowed set. | Validate output against a JSON Schema with an enum constraint on |
Gap Identification | For every source labeled 'weak' or 'insufficient', a | A 'weak' source has | Assert that for all annotations where strength_label is in [WEAK_LABELS], len(gap_description) > 10. |
Citation Grounding | Every | A gap description says 'source is weak' without stating what is missing. | Spot-check 10 random 'weak' annotations; a human reviewer confirms >90% cite a specific missing element. |
Consistency Across Similar Sources | Two sources with identical metadata and content receive the same strength label. | A peer-reviewed journal article is labeled 'strong' in one run and 'weak' in another with no change in input. | Run the prompt 3 times on a fixed golden set with identical sources; measure label agreement rate (target >95%). |
Overconfidence Avoidance | No source with a single data point, anonymous author, or unverifiable claim is labeled 'strong'. | A tweet from an unverified account or a self-published blog is annotated as 'strong'. | Curate 5 adversarial examples with known weak signals; assert none are labeled 'strong'. |
Structured Output Validity | The output is valid JSON that parses without errors and matches the [OUTPUT_SCHEMA] exactly. | The model returns a JSON string with a trailing comma, a missing bracket, or an extra key. | Run |
Low Confidence Handling | If the model cannot determine a label, it uses the 'uncertain' label and sets | A source with completely unintelligible content is labeled 'strong' with high confidence. | Include a source of random characters in the test set; assert the output label is 'uncertain' and confidence < 0.7. |
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 single model call. Replace [EVIDENCE_SOURCES] with a flat list of source strings and [REVIEW_ITEM] with the claim or decision under review. Use a simple JSON schema with source, strength_label, and gaps fields. Skip the multi-pass validation and just check that the model returns valid JSON.
codeFor each source in [EVIDENCE_SOURCES], assign a strength label (STRONG, MODERATE, WEAK, INSUFFICIENT) based on how well it supports or contradicts [REVIEW_ITEM]. Return JSON with an array of annotations.
Watch for
- Model inventing sources not in your list
- Inconsistent label usage across similar sources
- Missing
gapsfield when evidence is weak

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