This prompt is for verification engineers and pipeline builders who need to prevent corporate press releases, government PR, and paid content from being treated as independent evidence. Automated fact-checking systems often ingest content from news aggregators, RSS feeds, and web scrapes where press releases are syndicated alongside original reporting. Without explicit classification, a verification pipeline can cite a company's own announcement as corroborating evidence for its claims. This prompt produces a structured independence classification with re-reporting chain analysis, original source identification, and adversarial disguise detection. Use it as a gate before evidence matching: if a source is classified as a press release, route it for human review or downgrade its evidence weight to zero for independent corroboration.
Prompt
Press Release vs Independent Reporting Distinction Prompt

When to Use This Prompt
A practical guide for verification engineers on when to deploy the press release vs. independent reporting distinction prompt as a gating mechanism in automated fact-checking pipelines.
The ideal user is a pipeline operator or verification system architect who controls the ingestion and evidence-weighting stages of a fact-checking workflow. You should have access to the full text of the source article, its URL, and any available syndication metadata. The prompt works best when it can analyze the content's structure, attribution patterns, and disclosure language. It is designed to catch not only obvious press releases with company boilerplate and contact information but also more subtle cases where PR content has been lightly rewritten by a wire service or where a government agency's announcement is being passed off as independent journalism. The adversarial disguise detection capability specifically looks for cases where paid or promotional content mimics the style and format of editorial reporting.
Do not use this prompt for general credibility scoring, bias assessment, or domain authority evaluation. Those are separate tasks covered by sibling playbooks in the Source Authority and Provenance Assessment group. This prompt is specifically scoped to the binary question of independence: is this content an original, independently reported piece of journalism, or is it a form of controlled messaging from an interested party? If you need to assess whether a source is authoritative for a specific claim domain, use the Domain Authority Assessment Prompt. If you need to detect funding bias or conflicts of interest, use the Conflict of Interest and Funding Bias Detection Prompt. Using this prompt for broader credibility tasks will produce noisy results and miss the specific failure modes it is designed to catch.
Use Case Fit
Where the Press Release vs Independent Reporting Distinction Prompt works and where it introduces risk.
Good Fit: Automated Evidence Weighting
Use when: your verification pipeline automatically scores source credibility before evidence matching. Why: PR and independent reporting carry vastly different evidentiary weight, and conflating them produces false confidence. Guardrail: Route PR-classified sources to a corroboration-required workflow instead of treating them as standalone evidence.
Good Fit: Re-Reporting Chain Analysis
Use when: you need to trace a claim through multiple republishing layers to find the original source. Why: PR often spawns news articles that appear independent but merely restate the release. Guardrail: Flag any article where the primary attributed source is a press release, and require provenance chain reconstruction before accepting claims.
Bad Fit: Breaking News Triage
Avoid when: latency requirements demand sub-second classification of live news feeds. Why: Distinguishing PR-disguised-as-journalism requires careful linguistic and structural analysis that adds latency. Guardrail: Use a fast source-type classifier for initial triage, and apply this deeper distinction prompt only to sources flagged as ambiguous or high-risk.
Bad Fit: Single-Source Verification
Avoid when: your system only has one source and must produce a binary true/false verdict. Why: This prompt classifies independence, not claim truth. A PR source may still contain accurate facts. Guardrail: Never use independence classification alone to reject a claim. Combine with evidence matching and corroboration checks before concluding.
Required Inputs
Must have: full article text or sufficient excerpt to assess attribution patterns, sourcing language, and byline structure. Nice to have: publication metadata, author affiliation history, and any linked or referenced sources. Guardrail: If the input is only a headline or snippet, abstain from classification and request more context rather than guessing.
Operational Risk: Adversarial Disguise
What to watch: organizations deliberately formatting PR to mimic independent journalism, including fake bylines, invented quotes, and pseudo-investigative structure. Guardrail: Combine this prompt with conflict-of-interest and funding-bias detection. Escalate any source where independence classification is borderline and the claim is high-impact.
Copy-Ready Prompt Template
A reusable prompt for classifying whether a source is a press release, independent reporting, or a hybrid, with re-reporting chain analysis.
This prompt template is designed to be copied directly into your system prompt or user message template. It instructs the model to act as a media provenance analyst, distinguishing between original independent journalism, corporate or government public relations material, and adversarial cases where PR is disguised as reporting. The output is a structured classification with a confidence score and a trace of the re-reporting chain, enabling verification pipelines to weight evidence appropriately.
textYou are a media provenance analyst. Your task is to classify a source document as a press release, independent reporting, or a hybrid, and to trace its re-reporting chain. ## INPUT [SOURCE_TEXT] [SOURCE_METADATA] ## OUTPUT_SCHEMA Return a single JSON object with the following fields: - "classification": "press_release" | "independent_reporting" | "hybrid" | "unable_to_determine" - "confidence": 0.0-1.0 - "indicators": ["list", "of", "specific", "textual", "or", "metadata", "indicators"] - "re_reporting_chain": [ { "outlet": "string", "type": "original_reporting" | "press_release" | "syndication" | "aggregation" | "unknown", "evidence": "string explaining the basis for this step" } ] - "adversarial_indicators": ["list of signs PR is disguised as journalism, if any"] - "rationale": "A concise summary of the reasoning behind the classification." ## CONSTRAINTS - Base your analysis strictly on the provided [SOURCE_TEXT] and [SOURCE_METADATA]. Do not use external knowledge about the outlet unless it is present in the metadata. - A press release is defined as content originating from an organization about itself or its activities, typically with promotional intent and lacking independent editorial scrutiny. - Independent reporting is defined as content produced by a journalistic entity with editorial independence, featuring original fact-gathering, multiple sources, and a clear separation of fact from opinion. - A hybrid source contains elements of both, such as a press release that has been lightly edited and republished by a news outlet without original reporting. - Flag any adversarial indicators, such as the use of journalistic stylistic conventions (byline, dateline, quotes) to mask promotional content, or the omission of the originating organization's name. - If you cannot determine the classification from the provided information, set the classification to "unable_to_determine" and explain what information is missing. ## RISK_LEVEL [HIGH] - Incorrectly classifying a press release as independent reporting can lead to circular evidence and false corroboration in automated fact-checking pipelines. Always require human review for "hybrid" and "unable_to_determine" classifications before using the source as evidence.
To adapt this template, replace the [SOURCE_TEXT] and [SOURCE_METADATA] placeholders with the full body of the document and any available metadata (such as the URL, publication date, author, and outlet name). For high-throughput pipelines, consider adding a pre-filtering step to extract the byline and any disclosure statements (e.g., 'Sponsored Content', 'Press Release') before invoking this prompt, as these are strong signals. The [OUTPUT_SCHEMA] is designed for direct parsing; validate the JSON structure and enum values in your application layer before routing the result. For adversarial cases, log the adversarial_indicators field for periodic review to improve your detection patterns.
Prompt Variables
Required and optional inputs for the Press Release vs Independent Reporting Distinction Prompt. Each placeholder must be populated before the prompt is sent to the model. Validation notes describe how to check that the input is fit for purpose.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[DOCUMENT_TEXT] | Full text of the article or content to classify | SAN FRANCISCO, Oct 15, 2025 /PRNewswire/ -- Acme Corp today announced record quarterly revenue of $4.2B, driven by strong demand for its AI platform. | Must be non-empty string. Minimum 50 characters to avoid insufficient-context failures. Strip binary artifacts and encoding errors before passing. |
[DOCUMENT_URL] | Source URL for provenance metadata extraction | Optional but strongly recommended. If null, set to empty string. Validate URL format with standard URL parser. Domain will be extracted for source-type heuristics. | |
[PUBLICATION_DATE] | ISO 8601 date of publication or last update | 2025-10-15 | Optional. If null, set to empty string. Must parse as valid ISO 8601 date. Used for recency checks but not required for classification. |
[AUTHOR_OR_ORGANIZATION] | Named author, wire service, or publishing organization | Acme Corp Media Relations | Optional. If null, set to empty string. Used to detect self-attribution patterns. Corporate PR departments often list the company itself as author. |
[DOMAIN_HINT] | Pre-extracted domain from URL for bypassing URL parsing failures | prnewswire.com | Optional. If [DOCUMENT_URL] is provided, extract domain programmatically and pass here as redundancy. If null, set to empty string. Used for known PR wire service matching. |
[OUTPUT_SCHEMA] | JSON schema the model must conform to in its response | {"type": "object", "properties": {"classification": {"type": "string", "enum": ["press_release", "independent_reporting", "hybrid", "uncertain"]}, "confidence": {"type": "number", "minimum": 0, "maximum": 1}, "indicators": {"type": "array", "items": {"type": "string"}}, "re_reporting_chain": {"type": "array", "items": {"type": "object", "properties": {"outlet": {"type": "string"}, "adds_original_reporting": {"type": "boolean"}}}}}} | Required. Must be valid JSON Schema. Enforce at application layer before sending. Model output must be validated against this schema post-response. |
[CONSTRAINTS] | Behavioral rules and edge-case handling instructions | If the article contains both original reporting and PR-derived content, classify as hybrid. If the source is a known PR wire service, classify as press_release unless independent analysis is clearly added. Do not classify opinion pieces as independent_reporting unless they contain original fact-gathering. | Required. Must be non-empty string. These constraints are appended to the system prompt. Review for conflicts with base instructions before deployment. |
Implementation Harness Notes
How to wire the Press Release vs Independent Reporting Distinction Prompt into a production verification pipeline with validation, retries, and human review gates.
This prompt is designed as a classification and analysis step within a larger source authority assessment pipeline. It should be invoked after source ingestion and metadata extraction, but before evidence matching or claim verification. The model receives the full text of a source document plus available provenance metadata (URL, author, publisher, funding disclosures) and returns a structured independence classification with a re-reporting chain analysis. The output is not a final verdict on source credibility—it is one signal that feeds into downstream source weighting, evidence sufficiency scoring, and human review routing decisions.
Integration pattern: Call this prompt as a single-turn classification task with a strict JSON output contract. Use a model with strong instruction-following and structured output support (GPT-4o, Claude 3.5 Sonnet, or equivalent). Set temperature=0 to minimize classification drift. Wrap the call in a validation layer that checks: (1) the independence_classification field matches one of the allowed enum values (independent_reporting, press_release, sponsored_content, government_release, disguised_pr, syndicated_release, unable_to_determine), (2) the re_reporting_chain array contains at least one entry when classification is not independent_reporting, and (3) the confidence_score is a float between 0.0 and 1.0. If validation fails, retry once with the validation errors appended to the prompt as [CONSTRAINTS] feedback. If the second attempt also fails, route to a human review queue with the raw model output and validation failure reasons attached.
Adversarial case handling: The disguised_pr classification is the highest-risk output. When the model returns this label, do not auto-accept it. Instead, flag the source for mandatory human review and attach the model's indicators_of_disguised_pr array as the review context. This is the failure mode where PR content is deliberately formatted to mimic independent journalism—missing it can poison downstream verification. In production, consider running a second-pass confirmation prompt with different phrasing on all disguised_pr classifications before surfacing to reviewers. Logging: Capture the full prompt, model response, validation result, retry count, and final disposition for every call. This audit trail is essential for debugging classification drift, calibrating confidence thresholds, and defending source-weighting decisions to compliance stakeholders.
Model choice and latency budget: This prompt is not latency-sensitive in most pipeline architectures—it runs during source ingestion, not during user-facing query time. Prefer accuracy over speed. If processing high-volume news feeds, batch sources and run this prompt asynchronously. For real-time verification use cases, consider caching classifications by source domain and publisher to avoid redundant calls. Tool use and RAG: This prompt does not require external tool calls or retrieval in its base form—the model classifies based on the provided document text and metadata. However, for the re-reporting chain analysis, you may optionally provide retrieved context about known PR wire services, syndication networks, and publisher ownership structures to improve accuracy on edge cases. If you add retrieval, ground the model's chain analysis in the retrieved evidence and require it to cite specific retrieval results in the re_reporting_chain entries.
Next steps after classification: Route independent_reporting sources to standard evidence matching. Route press_release, government_release, and syndicated_release sources with a source-type flag that downstream verifiers can use to adjust evidence weight (these are not automatically discarded—government releases may be authoritative for policy claims, for example). Route sponsored_content and disguised_pr to a restricted evidence pool or exclude them from verification entirely, depending on your risk tolerance. Always log the classification decision alongside the source record so that verification reports can explain why a source was weighted or excluded.
Expected Output Contract
Strict output schema for the Press Release vs Independent Reporting Distinction Prompt. Use this contract to validate model responses before they enter downstream verification pipelines. Every field must be parseable and checkable.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
source_independence_classification | enum: independent | press_release | hybrid | disguised_pr | cannot_determine | Must match one of the five enum values exactly. No free-text alternatives allowed. | |
independence_confidence | number (0.0-1.0) | Must be a float between 0 and 1 inclusive. If classification is cannot_determine, confidence must be ≤ 0.5. | |
re_reporting_chain | array of objects | Each object must contain outlet_name (string), outlet_type (enum), and relationship_to_original (enum). Array must not be empty unless classification is cannot_determine. | |
re_reporting_chain[].outlet_name | string | Non-empty string. Must match an entity name extracted from the source content or metadata. | |
re_reporting_chain[].outlet_type | enum: wire_service | news_agency | independent_outlet | corporate_blog | government_portal | aggregator | unknown | Must match one of the seven enum values. Use unknown only when outlet type cannot be determined from available evidence. | |
re_reporting_chain[].relationship_to_original | enum: originator | re_reporter_with_analysis | re_reporter_verbatim | syndicator | translator | unknown | Must match one of the six enum values. re_reporter_verbatim indicates no independent reporting added. | |
original_source_identified | boolean | Must be true if an originating entity was found, false otherwise. If true, original_source_name must be populated. | |
original_source_name | string | null | Required when original_source_identified is true. Must be null when original_source_identified is false. Non-null values must be non-empty strings. | |
original_source_type | enum: corporation | government_agency | ngo | political_campaign | research_institution | individual | news_outlet | unknown | null | Must be null when original_source_identified is false. Must be a valid enum value when original_source_identified is true. | |
disguised_pr_indicators | array of strings | Required when classification is disguised_pr. Each string must describe a specific indicator found in the content. Empty array allowed for other classifications. | |
independent_reporting_indicators | array of strings | Required when classification is independent. Each string must describe a specific indicator of independent reporting. Empty array allowed for other classifications. | |
evidence_summary | string | Non-empty string between 50 and 500 characters. Must reference specific content elements that support the classification. Must not contain unresolved template tokens. | |
limitations_and_uncertainty | string | Non-empty string. Must explicitly state what could not be determined and why. Required even for high-confidence classifications. |
Common Failure Modes
Production failures that surface when distinguishing press releases from independent reporting, and how to prevent them before they corrupt your evidence pipeline.
Industry-Funded Research Misclassified as Independent
What to watch: The model treats a corporate-funded study published on a .edu domain as independent academic work. The funding disclosure is buried in a footnote or omitted entirely from the prompt context. Guardrail: Require explicit funding source extraction before classification. If no funding statement is found, flag the source as 'unverifiable independence' and route for human review rather than defaulting to independent.
Wire Service Content Treated as Original Reporting
What to watch: The model classifies a local news article as independently reported when it is actually a verbatim republished wire service piece (AP, Reuters, AFP). The byline or syndication tag is missed. Guardrail: Add a pre-check step that extracts syndication markers, bylines, and republishing notices. If the content matches known wire text, downgrade the independence score and trace to the original source before using as evidence.
Government Press Releases Pass as Independent Journalism
What to watch: Official government announcements published on .gov domains are classified as independent reporting because the domain signals authority. The model conflates 'official source' with 'independently verified source.' Guardrail: Separate authority assessment from independence assessment. A government press release is authoritative about what the government said, but not independent verification of the underlying claims. Use two distinct scoring dimensions.
Sponsored Content and Native Advertising Misclassification
What to watch: 'Sponsored by,' 'Partner Content,' or 'Brand Voice' labels are subtle or placed outside the extracted text. The model classifies paid promotional content as editorial reporting. Guardrail: Include explicit detection rules for sponsorship labels, advertiser disclaimers, and native advertising markers in the prompt. If the content section lacks clear editorial labeling, flag it and request the full page context including headers and footers.
Re-Reporting Chain Collapse
What to watch: A news article cites another outlet's reporting, which itself cited a press release. The model traces only one hop and classifies the final article as having independent sourcing. The original PR origin is lost. Guardrail: Require multi-hop provenance tracing in the prompt. If the chain terminates at a press release, corporate blog, or official statement, classify the entire chain as 'derived from primary source' rather than independently verified, regardless of how many intermediaries exist.
Opinion and Editorial Sections Treated as News Reporting
What to watch: An op-ed, editorial, or analyst column is classified as independent reporting because it appears on a legitimate news domain. The model misses section headers like 'Opinion' or 'Commentary.' Guardrail: Add content-type classification before independence scoring. Detect opinion markers, first-person advocacy language, and editorial section labels. Route opinion content to a separate evidence-weighting path that treats it as interpretation, not factual reporting.
Evaluation Rubric
Use this rubric to test the Press Release vs Independent Reporting Distinction Prompt before deployment. Each criterion targets a known failure mode in source independence classification.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
PR Wire Content Detection | Output labels content from PR Newswire, Business Wire, or GlobeNewswire as 'press_release' with confidence >= 0.9 | Model classifies syndicated PR as 'independent_reporting' or 'news_article' | Run 10 known PR wire URLs through the prompt; require 10/10 correct classification |
Disguised PR Identification | Output correctly flags 'sponsored content', 'brand post', or 'partner content' as 'press_release' even when labeled as 'news' on the page | Model defers to on-page labeling without analyzing funding, authorship, or editorial disclosure | Use 5 adversarial examples where PR mimics news layout; require 5/5 correct with re-reporting chain analysis present |
Re-Reporting Chain Analysis | Output includes a non-empty [REPORTING_CHAIN] array tracing the claim back to original source with attribution gaps flagged | Output omits [REPORTING_CHAIN], returns empty array, or fails to flag broken attribution links | Parse output JSON; assert [REPORTING_CHAIN] length > 0 and at least one gap flag when source is secondary |
Government Press Release Detection | Output classifies official .gov, agency, or ministry announcements as 'press_release' with source type 'government' | Model treats government statements as independent reporting due to official domain or authority signals | Test with 5 government press release URLs; require 5/5 'press_release' classification with correct source_type |
Independent Reporting Verification | Output classifies original investigative journalism with named reporters, editorial oversight, and no PR origination as 'independent_reporting' | Model over-flagging legitimate journalism as PR due to quote inclusion or corporate topic coverage | Test with 5 known independent news articles; require 5/5 'independent_reporting' with confidence >= 0.8 |
Confidence Calibration Check | Output confidence scores correlate with evidence strength: high confidence requires explicit disclosure detection or clear chain break | Model assigns high confidence (>0.9) to ambiguous cases with insufficient evidence signals | Review 20 outputs; flag any confidence >0.85 without corresponding evidence markers in [EVIDENCE_MARKERS] |
Abstention Trigger Test | Output returns classification 'uncertain' with confidence < 0.6 when source lacks clear PR or independent signals | Model forces binary classification on ambiguous content without abstention option | Test with 5 deliberately ambiguous sources; require 'uncertain' classification in at least 4/5 cases |
Citation Format Compliance | Output includes [SOURCE_URL], [PUBLICATION_DATE], and [AUTHOR_ATTRIBUTION] fields with null only when genuinely unavailable | Output omits required fields, uses placeholder values, or returns 'N/A' strings instead of null | Schema-validate 20 outputs; assert all required fields present with valid types or explicit null |
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 hand-labeled dataset of 20-30 press releases and independent articles. Run the prompt without strict schema enforcement to observe classification patterns. Focus on getting the independence classification and re-reporting chain right before adding output contracts.
Use the prompt as-is with [SOURCE_TEXT] and [SOURCE_METADATA] placeholders. Manually review every output for the first 50 runs.
Watch for
- PR wire content classified as independent because it uses journalistic formatting
- Industry trade publications misclassified as independent when they reprint vendor announcements
- Missing re-reporting chain analysis on ambiguous sources
- Over-reliance on byline presence as an independence signal

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