This prompt is designed for research, intelligence, and legal teams who synthesize findings across multiple documents and need a verifiable chain of custody for every claim. The job-to-be-done is post-generation auditing: after a model produces a synthesized output from several source documents, this prompt maps each factual assertion back to its originating document, identifies claims with no source match, and produces an attribution matrix. The ideal user is an analyst, editor, or product manager responsible for the accuracy of AI-generated briefs, reports, or digests before they reach decision-makers or external audiences.
Prompt
Source-Attribution Audit Prompt for Multi-Document Synthesis

When to Use This Prompt
Understand the job this prompt performs, the ideal user, required inputs, and when it should not be used.
The prompt requires three concrete inputs to function: a synthesized output text, a set of source documents with unique identifiers, and a defined attribution schema. Without all three, the audit will be incomplete. The source documents must be provided in full or as chunked passages with stable IDs—this prompt does not retrieve sources itself. It assumes the synthesis was already generated by another system or human. The output is an attribution matrix where each claim receives a status of grounded, partially-grounded, or unsupported, along with the specific source ID and quoted evidence for grounded claims. This is not a fact-checking prompt against external truth; it only verifies whether a claim can be traced to the provided source set.
Do not use this prompt when the source documents are unavailable, when the synthesis is purely interpretive opinion rather than factual assertion, or when the output format is unstructured narrative without discrete claim boundaries. It is also inappropriate for real-time chat applications where latency constraints prevent a full audit pass. For high-stakes domains such as legal filings, clinical summaries, or financial disclosures, the attribution matrix this prompt produces must still undergo human review before publication—the prompt identifies grounding gaps but does not guarantee the underlying sources are themselves accurate. If you need to verify source authenticity or detect fabricated citations within the sources themselves, pair this prompt with the RAG Citation Audit Prompt for Fabricated Sources from the same content group.
Use Case Fit
Where this prompt works and where it does not. Use these cards to decide if the Source-Attribution Audit Prompt is the right tool for your multi-document synthesis workflow.
Good Fit: Multi-Source Research Synthesis
Use when: your team synthesizes findings from 5+ documents and needs to trace every claim back to its origin for internal review or publication. Guardrail: provide a complete, deduplicated source set with stable identifiers before running the audit.
Bad Fit: Single-Document Summarization
Avoid when: you are summarizing a single document with no cross-referencing requirement. The attribution matrix overhead adds latency and token cost without benefit. Guardrail: use a simpler citation prompt or inline reference format instead.
Required Inputs
What you must provide: the synthesized output text, a complete source manifest with unique IDs and full text per source, and an output schema for the attribution matrix. Guardrail: missing or truncated source text causes false negatives—validate source completeness before running the audit.
Operational Risk: False Attribution
What to watch: the model may incorrectly map a claim to a source that contains similar but not identical information, creating false confidence. Guardrail: require quoted evidence from the source for each attribution match, and flag partial matches for human review.
Operational Risk: Missed Fabrications
What to watch: claims the model invented but phrased to sound like they came from a source may pass the audit if the prompt is too permissive. Guardrail: include explicit instructions to flag any claim without a verbatim or near-verbatim source match as UNSUPPORTED, and set a low tolerance for paraphrased attribution.
Scale Limit: Source Count Ceiling
What to watch: attribution quality degrades as source count exceeds the model's effective context window, especially with long documents. Guardrail: chunk large source sets into batches of 10-15 documents, run parallel audits, and merge attribution matrices in application code rather than relying on a single pass.
Copy-Ready Prompt Template
A reusable prompt template with square-bracket placeholders for auditing synthesized output against multiple source documents.
The following prompt is designed to be dropped into a production pipeline after a multi-document synthesis step. It forces the model to map every claim in a synthesized output back to its originating source document, identify claims with no source match, and produce a structured attribution matrix. The template uses square-bracket placeholders that your application must populate before sending the request. Do not use this prompt for real-time chat where latency is critical—the audit step adds a full inference pass and is best suited for asynchronous or batch validation workflows.
textYou are a source-attribution auditor. Your task is to analyze a synthesized output against a set of provided source documents and produce an attribution matrix. ## INPUT ### Synthesized Output [SYNTHESIZED_OUTPUT] ### Source Documents [SOURCE_DOCUMENTS] ### Attribution Threshold [ATTRIBUTION_THRESHOLD] ## INSTRUCTIONS 1. Extract every discrete factual claim from the Synthesized Output. A claim is a single verifiable assertion about the world, not an opinion or stylistic choice. 2. For each claim, search the Source Documents for supporting evidence. A claim is "attributed" if at least one source document contains information that directly supports the claim. A claim is "partially attributed" if some but not all elements of the claim are supported. A claim is "unattributed" if no source document supports it. 3. For attributed and partially attributed claims, cite the specific source document ID and the relevant excerpt that supports the claim. 4. For unattributed claims, mark them for human review and note whether the claim appears plausible but unsourced, or contradictory to source material. 5. Do not invent sources. If a claim cannot be matched to a provided source document, it must be marked unattributed. ## OUTPUT SCHEMA Return a JSON object with the following structure: { "attribution_matrix": [ { "claim_id": "string", "claim_text": "string", "attribution_status": "attributed | partially_attributed | unattributed", "source_document_id": "string | null", "source_excerpt": "string | null", "attribution_confidence": "high | medium | low", "review_required": true | false, "review_reason": "string | null" } ], "summary": { "total_claims": "number", "attributed_claims": "number", "partially_attributed_claims": "number", "unattributed_claims": "number", "claims_requiring_review": "number" } } ## CONSTRAINTS - Do not modify the Synthesized Output. Only audit it. - If a source document is ambiguous, mark the claim as partially attributed and explain the ambiguity in review_reason. - If the Synthesized Output contains no factual claims, return an empty attribution_matrix with summary totals set to zero. - If fewer than [ATTRIBUTION_THRESHOLD] percent of claims are attributed, set review_required to true for the entire output and include a top-level warning.
To adapt this template, replace [SYNTHESIZED_OUTPUT] with the full text of the model-generated synthesis your system produced. [SOURCE_DOCUMENTS] should be a structured list of source objects, each with a unique ID and the full text of the source—this is critical because the model needs both the ID for citation and the text for evidence matching. [ATTRIBUTION_THRESHOLD] is a number between 0 and 100 representing the minimum acceptable attribution percentage before the entire output is flagged for review. For high-risk domains like legal, medical, or financial reporting, set this threshold to 90 or above and always route unattributed claims to a human review queue. For lower-risk internal briefings, a threshold of 70 may be acceptable with automated logging of unattributed claims. If your source documents are large, consider chunking them and including chunk IDs in the source document list to improve citation precision. Always validate the output JSON against the schema before passing it downstream—malformed attribution matrices are a common failure mode when the model encounters ambiguous claims or very long source lists.
Prompt Variables
Required inputs for the Source-Attribution Audit Prompt. Every variable must be populated before the prompt is assembled. Missing or malformed inputs are the most common cause of false negatives in attribution mapping.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[SYNTHESIZED_OUTPUT] | The multi-document synthesis text that the model produced in a prior step. This is the target being audited for source attribution. | The Q3 revenue increase was driven by the new enterprise pricing tier launched in June. | Must be non-empty string. If the synthesis is truncated, flag for incomplete audit. Validate length does not exceed model context window minus prompt overhead. |
[SOURCE_DOCUMENTS] | Array of source documents with identifiers, each containing the full text that was available during synthesis. Every claim will be matched against this set. | [{"doc_id": "DOC-001", "title": "Q3 Earnings Call Transcript", "text": "..."}, {"doc_id": "DOC-002", "title": "Product Launch Press Release", "text": "..."}] | Must be valid JSON array. Each object requires doc_id, title, and text fields. Empty array is allowed but will result in all claims flagged as unsupported. Validate doc_id uniqueness before prompt assembly. |
[CLAIM_GRANULARITY] | Controls whether the audit splits the synthesis into sentence-level claims, clause-level claims, or paragraph-level claims. Finer granularity increases audit precision but raises token cost. | sentence | Must be one of: sentence, clause, paragraph. Default to sentence if not specified. Clause-level requires the synthesis to have well-formed grammatical structure; paragraph-level is appropriate for narrative summaries with low fact density. |
[CONFIDENCE_THRESHOLD] | Minimum similarity confidence score (0.0 to 1.0) required to consider a claim grounded in a source. Claims below this threshold are flagged for human review. | 0.7 | Must be a float between 0.0 and 1.0. Lower values increase false positives in attribution. Higher values increase false negatives. 0.7 is a reasonable default for general-purpose audit; raise to 0.85 for regulated domains. |
[OUTPUT_FORMAT] | Specifies the structure of the attribution matrix: json returns a machine-readable array, markdown_table returns a human-readable table, both returns both formats. | json | Must be one of: json, markdown_table, both. Use json for downstream processing pipelines. Use markdown_table for human review queues. both is useful when the audit result must be both logged and displayed. |
[INCLUDE_EVIDENCE_SNIPPETS] | Boolean flag controlling whether the output includes quoted evidence text from the source document for each grounded claim. Increases output size but enables faster human verification. | Must be true or false. Set to false for automated pipelines where output size is constrained. Set to true when the audit output will be reviewed by humans who need to verify grounding without reopening source documents. | |
[UNMATCHED_CLAIM_ACTION] | Directs the prompt on how to handle claims with no source match: flag_only marks them for review, remove strips them from a cleaned output, both returns both the audit matrix and a cleaned synthesis. | flag_only | Must be one of: flag_only, remove, both. remove and both require the prompt to produce a second output field containing the cleaned synthesis. flag_only is sufficient for audit-only workflows where removal happens in a separate repair step. |
Implementation Harness Notes
How to wire the Source-Attribution Audit Prompt into a production application with validation, retries, and human review gates.
The Source-Attribution Audit Prompt is designed to operate as a post-generation validation step in a multi-document synthesis pipeline. It should be invoked after a primary synthesis model produces a draft output, but before that output reaches an end user or downstream database. The harness receives the synthesized text and the full set of source documents as inputs, then returns an attribution matrix mapping each claim to its originating source or flagging it as unsupported. This is not a real-time, user-facing prompt; it is a batch or near-batch audit step that runs with higher latency tolerance and stricter correctness requirements.
Wire this prompt into your application as a dedicated audit service with a clear API contract. The service accepts a JSON payload containing synthesized_output (the text to audit) and source_documents (an array of objects with document_id and content fields). The prompt returns a structured JSON response with a claims array, where each claim includes claim_text, source_document_id (or null), supporting_quote (or null), and attribution_status (one of grounded, partially_grounded, or unsupported). Implement a JSON schema validator on the response before processing it further. If validation fails, retry once with the same inputs and a stronger constraint instruction appended to the prompt. If the second attempt fails, log the failure and escalate for human review rather than silently dropping the audit. For high-stakes domains like legal, clinical, or financial synthesis, always route outputs with any unsupported claims to a human review queue before publication.
Model choice matters for this workflow. Use a model with strong instruction-following and long-context handling, such as Claude 3.5 Sonnet or GPT-4o, because the prompt requires careful cross-referencing between the synthesis and multiple source documents. Avoid small or fast models that may hallucinate attribution mappings. Set temperature=0 to maximize deterministic behavior, and ensure your context window can accommodate the full synthesis plus all source documents. If the combined input exceeds the context limit, chunk the synthesis by section or paragraph and run the audit in parallel batches, then merge the results. Log every audit run with a unique audit_id, the model version, the input hash, and the count of grounded versus unsupported claims. This log becomes your audit trail for compliance and debugging. Finally, build a monitoring dashboard that tracks the unsupported claim rate over time—an increasing rate signals either source retrieval degradation or synthesis model drift that requires investigation.
Common Failure Modes
When running source-attribution audits across multiple documents, these failures surface first. Each card explains the failure, why it happens, and the guardrail to install before it reaches users or databases.
Silent Claim-Source Mismatch
What to watch: The model maps a claim to a source that exists but does not actually support the claim. The attribution looks valid on the surface, but the quoted passage contradicts or is unrelated to the claim. This is the most dangerous failure because it passes basic existence checks. Guardrail: Require the prompt to output a verbatim quoted passage from the source alongside each claim mapping. Add a secondary verification step that compares the claim against the quoted passage, not just the source ID.
Orphaned Claims with No Source Match
What to watch: The model generates claims that cannot be mapped to any provided source document. When the prompt is too permissive, the model may still output these claims with a null or invented source ID rather than flagging them for removal. Guardrail: Add an explicit output field attribution_status with allowed values grounded, partially_grounded, unsupported. Require unsupported claims to be listed in a separate section with a recommendation for human review, not silently dropped or assigned a fake source.
Source Document Confusion Across Similar Passages
What to watch: When multiple source documents contain similar language or overlapping facts, the model attributes a claim to the wrong document. This is common in multi-document synthesis where sources share terminology, authors, or data sources. Guardrail: Include a unique document ID and a short distinguishing context snippet in the prompt for each source. Instruct the model to use the document ID, not just the title or author, when building the attribution matrix. Add a post-check that verifies the attributed document actually contains the quoted passage.
Partial Attribution with Missing Granularity
What to watch: The model correctly identifies a source document but fails to specify the section, paragraph, or line where the evidence lives. This produces attributions that are technically correct but not auditable at scale. Guardrail: Require the output schema to include a source_location field with section heading, paragraph number, or line range. If the source format does not support granular location, require the model to output the most specific locator available and flag when granularity is limited.
Confidence Inflation on Weak Matches
What to watch: The model assigns high confidence to attributions where the semantic match between claim and source is weak, partial, or dependent on inference. This creates a false sense of auditability and can lead teams to skip human review on low-quality mappings. Guardrail: Add a match_strength field with a constrained scale such as exact, strong, weak, inferred. Instruct the model to use weak or inferred when the source implies but does not state the claim. Route weak and inferred matches to human review before acceptance.
Cross-Document Claim Merging Without Traceability
What to watch: The model synthesizes a single claim from evidence spread across multiple documents but attributes it to only one source or creates a composite citation that cannot be verified. This breaks traceability because no single document contains the full claim. Guardrail: Require the prompt to decompose multi-source claims into sub-claims, each attributed to a single source. If a claim genuinely requires multiple sources, output each source with its specific contribution, not a merged attribution. Flag composite claims for human synthesis review.
Evaluation Rubric
Use this rubric to test the Source-Attribution Audit Prompt before shipping. Each criterion targets a specific failure mode in multi-document synthesis. Run these checks against a golden dataset of 10-20 synthesized outputs with known source mappings.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Claim Coverage | Every sentence in the synthesis appears as a row in the attribution matrix | Sentences present in synthesis but missing from matrix rows | Count sentences in synthesis vs. rows in matrix; flag if count differs by >0 |
Source Mapping Accuracy | At least 95% of mapped claims point to the correct source document ID | Claim mapped to [DOC_3] when evidence exists only in [DOC_1] | Spot-check 20 random mapped claims against source documents manually |
Unsupported Claim Detection | All claims with no source match are correctly labeled as UNSUPPORTED | A claim with no evidence is incorrectly mapped to a document or left blank | Audit 10 known-unsupported claims from test set; require 100% UNSUPPORTED label rate |
Citation Granularity | Each claim row references a specific section or paragraph ID, not just document ID | Multiple claims mapped only to document-level ID without section or paragraph locator | Parse [LOCATION] field; fail if >10% of rows contain only document ID |
Fabricated Source Flagging | Zero fabricated document IDs appear in the attribution matrix | Matrix references [DOC_7] when only 6 documents were provided in [SOURCE_SET] | Validate all document IDs in matrix against [SOURCE_SET] manifest; fail on any mismatch |
Confidence Score Calibration | HIGH confidence claims are correct >90% of the time; LOW confidence claims are correct <50% of the time | HIGH confidence assigned to a claim that is factually contradicted by source | Bin claims by confidence level; calculate precision per bin against ground-truth labels |
Matrix Schema Compliance | Output matches [OUTPUT_SCHEMA] exactly: all required fields present, no extra fields | Missing [EVIDENCE_QUOTE] field or extra hallucinated field like [PRIORITY] appears | Validate output against JSON Schema; fail on any schema violation |
Human Review Escalation | Claims flagged for review meet the escalation criteria defined in [REVIEW_TRIGGERS] | A claim with contradictory sources is not flagged for review, or a fully grounded claim is flagged unnecessarily | Check 15 review-flagged claims against [REVIEW_TRIGGERS] rules; require >90% correct flagging decisions |
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 small set of 2-3 source documents. Use a lightweight output schema—a simple JSON array of claim objects with claim_text, source_document_id, and match_status fields. Skip the full attribution matrix and focus on getting the model to correctly pair claims with sources.
Add this instruction to the base prompt:
codeFor each claim, return ONLY: {"claim": "...", "source": "doc_id or null", "status": "grounded|unmatched|partial"}
Watch for
- The model inventing source document IDs that don't exist in your input set
- Claims being marked as "grounded" when the source only partially supports them
- Missing claims—the model may skip ambiguous statements instead of flagging them as unmatched
- Overly permissive matching where vague semantic similarity is treated as grounding

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