newsjack 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp.json +9 -0
- package/.newsjack-npm +1 -0
- package/COMMIT +1 -0
- package/LICENSE +21 -0
- package/README.md +133 -0
- package/VERSION +1 -0
- package/bin/newsjack +74 -0
- package/package.json +37 -0
- package/skills/.gitkeep +0 -0
- package/skills/ETHICS.md +265 -0
- package/skills/WHY-NOT-SPAM.md +257 -0
- package/skills/angle-generator/SKILL.md +224 -0
- package/skills/angle-generator/examples.md +517 -0
- package/skills/angle-generator/rubric.md +219 -0
- package/skills/coverage-tracker/SKILL.md +124 -0
- package/skills/coverage-tracker-setup/SKILL.md +84 -0
- package/skills/crisis-holding/SKILL.md +336 -0
- package/skills/crisis-holding/examples.md +302 -0
- package/skills/crisis-holding/rubric.md +218 -0
- package/skills/fact-check/SKILL.md +212 -0
- package/skills/fact-check/examples.md +195 -0
- package/skills/fact-check/rubric.md +228 -0
- package/skills/journalist-fit-check/SKILL.md +199 -0
- package/skills/journalist-fit-check/examples.md +271 -0
- package/skills/journalist-fit-check/rubric.md +251 -0
- package/skills/meanest-editor/SKILL.md +112 -0
- package/skills/meanest-editor/examples.md +331 -0
- package/skills/meanest-editor/rubric.md +275 -0
- package/skills/media-list-manager/SKILL.md +204 -0
- package/skills/media-list-manager/examples.md +88 -0
- package/skills/media-list-manager/rubric.md +67 -0
- package/skills/news-search/SKILL.md +56 -0
- package/skills/newsjack-detector/SKILL.md +286 -0
- package/skills/newsjack-detector/examples.md +118 -0
- package/skills/newsjack-detector/references/engine-cli.md +29 -0
- package/skills/newsjack-detector/references/harness-routing.md +38 -0
- package/skills/newsjack-detector/references/rss-feeds.json +106 -0
- package/skills/newsjack-detector/rubric.md +160 -0
- package/skills/newsjack-monitor-setup/SKILL.md +202 -0
- package/skills/newsjack-monitor-setup/examples.md +106 -0
- package/skills/newsjack-triage/SKILL.md +98 -0
- package/skills/newsworthiness-check/SKILL.md +179 -0
- package/skills/newsworthiness-check/examples.md +232 -0
- package/skills/newsworthiness-check/rubric.md +218 -0
- package/skills/pr-strategist/SKILL.md +304 -0
- package/skills/reactive-comment/SKILL.md +297 -0
- package/skills/reactive-comment/examples.md +284 -0
- package/skills/reactive-comment/rubric.md +280 -0
- package/skills/relevance-coarse-filter/SKILL.md +61 -0
- package/skills/story-origin-check/SKILL.md +160 -0
- package/skills/voice-extractor/SKILL.md +330 -0
- package/skills/voice-extractor/examples.md +227 -0
- package/skills/voice-extractor/rubric.md +251 -0
- package/skills-manifest.json +254 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Crisis Holding Rubric
|
|
2
|
+
|
|
3
|
+
Every crisis-holding output is evaluated against this rubric before it is returned. Hard gates block output. Scored criteria tell the agent whether the draft is usable, needs revision, or should be reduced to a shorter safer statement.
|
|
4
|
+
|
|
5
|
+
Each criterion maps to a section of the source design doc: Intake, Legal counsel gate, Drafting rules, Q&A scaffold, What-not-to-say, Decay, Pushback/refusal patterns, and Sample I/O.
|
|
6
|
+
|
|
7
|
+
## Hard gates
|
|
8
|
+
|
|
9
|
+
Block the output and ask for correction when any of these fail.
|
|
10
|
+
|
|
11
|
+
| Gate | Source section | Fail condition | Required behavior |
|
|
12
|
+
|---|---|---|---|
|
|
13
|
+
| Missing intake | Inputs / Intake | Any required field is missing. | Ask for missing fields one question at a time. Do not draft. |
|
|
14
|
+
| Counsel required | Legal counsel gate | Any auto-fire trigger is present and `legal_status == no_counsel_yet`. | Return the STOP block only, unless `--counsel-review-mode` is set. |
|
|
15
|
+
| Unconfirmed fact | Drafting rules | Statement asserts a fact absent from `known_facts`. | Remove the sentence or ask the user to confirm. |
|
|
16
|
+
| Unknown asserted | Drafting rules | Statement asserts anything from `unknown_or_unverified`. | Remove it from statements; handle it in Q&A as unknown. |
|
|
17
|
+
| Invented commitment | Drafting rules | Statement promises an action, owner, deadline, refund, donation, investigation, notification, or deliverable absent from `actions_taken_so_far` or `actions_committed_to`. | Remove it. |
|
|
18
|
+
| Unconsented name | Inputs / Legal counsel gate | Statement names a person not listed in `people_involved` with explicit consent, except the named current spokesperson. | Remove the name or trigger counsel review. |
|
|
19
|
+
| Placeholder leak | Rubric / checks | Any publishable output contains `{name}`, `[DATE]`, `[Company]`, `<contact>`, or a similar placeholder. | Refuse the variant or ask for the missing fact. |
|
|
20
|
+
| Short-statement slop | Banned phrase list | The short statement contains any banned phrase. | Rewrite before returning. |
|
|
21
|
+
| Landmine still live | Sample 3 / landmine_newsjack | User says the offending post is still up. | Stop and tell the user to pull it before drafting. |
|
|
22
|
+
| No output contract | Output format | JSON or markdown rendering is missing. | Return both, unless the STOP block applies. |
|
|
23
|
+
|
|
24
|
+
## Score
|
|
25
|
+
|
|
26
|
+
Score each criterion 0-2.
|
|
27
|
+
|
|
28
|
+
- **0** - Broken or missing
|
|
29
|
+
- **1** - Present but weak, risky, vague, or incomplete
|
|
30
|
+
- **2** - Solid and usable
|
|
31
|
+
|
|
32
|
+
Total possible: 28 points.
|
|
33
|
+
|
|
34
|
+
| Points | Verdict | Meaning |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| 24-28 | **usable for review** | Tight enough to hand to counsel or the comms lead. Still not legal approval. |
|
|
37
|
+
| 18-23 | **revise before review** | Core structure works, but one or more risk surfaces are loose. |
|
|
38
|
+
| 10-17 | **reduce to short statement** | Too much exposure. Keep only the short statement and Q&A posture. |
|
|
39
|
+
| 0-9 | **do not draft** | Intake, counsel gate, or factual discipline failed. |
|
|
40
|
+
|
|
41
|
+
## Criteria
|
|
42
|
+
|
|
43
|
+
### 1. Intake completeness
|
|
44
|
+
|
|
45
|
+
Source: Inputs / structured prompt.
|
|
46
|
+
|
|
47
|
+
**Score 0:** Required fields are absent or vague enough that the agent has to infer facts.
|
|
48
|
+
**Score 1:** Required fields are present, but `known_facts`, `unknown_or_unverified`, or `actions_taken_so_far` are mixed with aspirations or disputed claims.
|
|
49
|
+
**Score 2:** Required fields are present, facts are separated from unknowns, and actions are concrete.
|
|
50
|
+
|
|
51
|
+
### 2. Legal-counsel gate
|
|
52
|
+
|
|
53
|
+
Source: Legal counsel gate / legal auto-fire keywords.
|
|
54
|
+
|
|
55
|
+
**Score 0:** A trigger is missed, softened, or treated as a normal drafting case.
|
|
56
|
+
**Score 1:** Gate fires, but the trigger is vague or next steps are generic.
|
|
57
|
+
**Score 2:** Gate fires or clears correctly, names the exact trigger and field, and gives the narrow next step.
|
|
58
|
+
|
|
59
|
+
### 3. Factual containment
|
|
60
|
+
|
|
61
|
+
Source: Drafting rules / anti-hallucination doctrine.
|
|
62
|
+
|
|
63
|
+
**Score 0:** Statements include invented facts, unnamed sources, inferred scope, or invented timelines.
|
|
64
|
+
**Score 1:** Mostly grounded, but one sentence overreaches or implies more certainty than the intake supports.
|
|
65
|
+
**Score 2:** Every factual claim maps cleanly to `known_facts`.
|
|
66
|
+
|
|
67
|
+
### 4. Unknown handling
|
|
68
|
+
|
|
69
|
+
Source: Drafting rules / Q&A scaffold.
|
|
70
|
+
|
|
71
|
+
**Score 0:** Unknowns are asserted, denied, or buried.
|
|
72
|
+
**Score 1:** Unknowns are acknowledged, but the language is vague or defensive.
|
|
73
|
+
**Score 2:** Unknowns are stated plainly and routed to Q&A with `decline-and-name-why` or `refer-to-counsel`.
|
|
74
|
+
|
|
75
|
+
### 5. Action and commitment discipline
|
|
76
|
+
|
|
77
|
+
Source: Drafting rules / Pushback pattern "we need to deny this" / "blame third party".
|
|
78
|
+
|
|
79
|
+
**Score 0:** Promises, deadlines, investigations, outside firms, regulator notices, refunds, or discipline are invented.
|
|
80
|
+
**Score 1:** Actions are real, but owner/window language is too loose or uses "soon."
|
|
81
|
+
**Score 2:** Only confirmed actions appear, and commitments preserve the user-provided owner or window.
|
|
82
|
+
|
|
83
|
+
### 6. Short statement fitness
|
|
84
|
+
|
|
85
|
+
Source: Short statement structure.
|
|
86
|
+
|
|
87
|
+
**Score 0:** More than 50 words, contains slop, or tries to litigate the incident.
|
|
88
|
+
**Score 1:** Short enough, but lacks either a specific confirmed fact or a specific confirmed action.
|
|
89
|
+
**Score 2:** 50 words or fewer, plain, defensible, and usable for inbound press.
|
|
90
|
+
|
|
91
|
+
### 7. Medium statement fitness
|
|
92
|
+
|
|
93
|
+
Source: Medium statement structure.
|
|
94
|
+
|
|
95
|
+
**Score 0:** Reads like a press release, values statement, apology essay, or legal memo.
|
|
96
|
+
**Score 1:** Structure is present, but audience priority or unknowns are mishandled.
|
|
97
|
+
**Score 2:** Around 120 words, audience-led, action-focused, and free of brand positioning.
|
|
98
|
+
|
|
99
|
+
### 8. Cautious-legal-pass quality
|
|
100
|
+
|
|
101
|
+
Source: Cautious-legal-pass rules.
|
|
102
|
+
|
|
103
|
+
**Score 0:** Merely duplicates the medium statement or adds meaningless hedges.
|
|
104
|
+
**Score 1:** Softens some assertions, but misses cause, remediation, third-party, or commitment language.
|
|
105
|
+
**Score 2:** Rewrites the medium statement with targeted qualifiers and lists every delta from the medium.
|
|
106
|
+
|
|
107
|
+
### 9. Q&A scaffold usefulness
|
|
108
|
+
|
|
109
|
+
Source: Q&A scaffold.
|
|
110
|
+
|
|
111
|
+
**Score 0:** Provides a generic FAQ or full answers that invent facts.
|
|
112
|
+
**Score 1:** Includes relevant questions, but categories or postures are thin.
|
|
113
|
+
**Score 2:** 10-20 realistic journalist questions, sorted by category, with posture, rationale, and a defensible holding line.
|
|
114
|
+
|
|
115
|
+
### 10. What-not-to-say specificity
|
|
116
|
+
|
|
117
|
+
Source: What-not-to-say list / banned phrase list.
|
|
118
|
+
|
|
119
|
+
**Score 0:** Lists generic advice or misses banned phrases in the draft.
|
|
120
|
+
**Score 1:** Catches obvious phrases, but reasons or rewrites are vague.
|
|
121
|
+
**Score 2:** Flags exact risky phrases, explains why each is risky, and gives a recoverable rewrite when one exists.
|
|
122
|
+
|
|
123
|
+
### 11. Decay discipline
|
|
124
|
+
|
|
125
|
+
Source: Decay.
|
|
126
|
+
|
|
127
|
+
**Score 0:** No `issued_at`, `valid_until`, or refresh trigger.
|
|
128
|
+
**Score 1:** Decay exists but uses the wrong window for urgency, data-security regulation, or landmine newsjacking.
|
|
129
|
+
**Score 2:** Correct window is applied and refresh triggers are concrete.
|
|
130
|
+
|
|
131
|
+
### 12. Landmine-newsjack handling
|
|
132
|
+
|
|
133
|
+
Source: Trigger / landmine recovery / Sample 3.
|
|
134
|
+
|
|
135
|
+
**Score 0:** Mentions product, campaign, donations, values, or a follow-up activation.
|
|
136
|
+
**Score 1:** Removes product copy but still lets the brand reframe the moment.
|
|
137
|
+
**Score 2:** Pull-post-first if live, short contrite language, no product or narrative recovery, 30-minute decay.
|
|
138
|
+
|
|
139
|
+
### 13. Voice and anti-slop
|
|
140
|
+
|
|
141
|
+
Source: Banned in all crisis output / anti-slop doctrine.
|
|
142
|
+
|
|
143
|
+
**Score 0:** Uses templated sympathy, corporate filler, passive distancing, or AI-signature structure.
|
|
144
|
+
**Score 1:** Mostly clean, with one or two phrases that need tightening.
|
|
145
|
+
**Score 2:** Narrow, active, direct, and free of banned phrases and performative positivity.
|
|
146
|
+
|
|
147
|
+
### 14. Output contract
|
|
148
|
+
|
|
149
|
+
Source: Outputs / Output format.
|
|
150
|
+
|
|
151
|
+
**Score 0:** Missing JSON, missing markdown, or returns prose around the artifact.
|
|
152
|
+
**Score 1:** Both formats exist but fields, order, or empty arrays are inconsistent.
|
|
153
|
+
**Score 2:** JSON and markdown match exactly, with word counts, deltas, tables, decay, and refusals.
|
|
154
|
+
|
|
155
|
+
## Banned phrase checks
|
|
156
|
+
|
|
157
|
+
Soft-fail and rewrite any statement containing these. Hard-fail if they appear in the short statement.
|
|
158
|
+
|
|
159
|
+
```text
|
|
160
|
+
out of an abundance of caution
|
|
161
|
+
isolated incident
|
|
162
|
+
our hearts go out
|
|
163
|
+
our thoughts and prayers
|
|
164
|
+
hearts go out
|
|
165
|
+
deeply committed
|
|
166
|
+
deeply troubled
|
|
167
|
+
deeply concerned
|
|
168
|
+
deeply saddened
|
|
169
|
+
we take [X] seriously
|
|
170
|
+
we are committed to transparency
|
|
171
|
+
we are committed to integrity
|
|
172
|
+
we are committed to excellence
|
|
173
|
+
we are committed to our customers
|
|
174
|
+
we are committed to our employees
|
|
175
|
+
swiftly
|
|
176
|
+
promptly
|
|
177
|
+
immediately without a timestamp
|
|
178
|
+
robust
|
|
179
|
+
comprehensive
|
|
180
|
+
industry-leading
|
|
181
|
+
best-in-class
|
|
182
|
+
world-class
|
|
183
|
+
regret any inconvenience
|
|
184
|
+
regret any confusion
|
|
185
|
+
regret any distress
|
|
186
|
+
unfortunate situation
|
|
187
|
+
regrettable circumstances
|
|
188
|
+
rogue employee
|
|
189
|
+
rogue actor
|
|
190
|
+
rogue agent
|
|
191
|
+
fully cooperating with authorities
|
|
192
|
+
external investigation
|
|
193
|
+
external review
|
|
194
|
+
no comment
|
|
195
|
+
this does not reflect our values
|
|
196
|
+
moving forward
|
|
197
|
+
going forward
|
|
198
|
+
It's not just [X], it's [Y]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
## Legal auto-fire keyword checks
|
|
202
|
+
|
|
203
|
+
Substring-match case-insensitively across `incident_summary`, `known_facts`, `unknown_or_unverified`, and `regulatory_exposure`.
|
|
204
|
+
|
|
205
|
+
```text
|
|
206
|
+
death | fatal | killed | died | hospitaliz | serious injury | bodily harm
|
|
207
|
+
harassment | assault | abuse | discriminat
|
|
208
|
+
fraud | theft | embezzl | misappropriat
|
|
209
|
+
SEC | FDA | OSHA | FTC | CPSC | DOJ | EPA | CFPB | EU Commission | regulator
|
|
210
|
+
GDPR | CCPA | HIPAA | DPA | data subject | PII | personally identifiable
|
|
211
|
+
CSAM | child | minor
|
|
212
|
+
ransomware | breach | exfiltrat | leaked
|
|
213
|
+
recall | hazard | defect
|
|
214
|
+
indict | subpoena | warrant | criminal
|
|
215
|
+
immigration | ICE | deport
|
|
216
|
+
weapons | defense | export control | export-control
|
|
217
|
+
class action | lawsuit | suit | litigation
|
|
218
|
+
```
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fact-check
|
|
3
|
+
description: "Extract factual claims from PR copy, verify each claim independently, attach concrete citations, and warn when certainty is low. Use before a pitch, press release, reactive comment, DM, or other journalist-facing draft is trusted or sent."
|
|
4
|
+
when_to_use: "User asks to verify facts, check sources, cite claims, assess whether a draft is safe to send, or another newsjack skill needs a pre-send factual accuracy gate."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Fact Check
|
|
8
|
+
|
|
9
|
+
You are the factual accuracy gate inside newsjack.sh. Your job is narrow:
|
|
10
|
+
extract factual claims, verify them independently, attach citations, and
|
|
11
|
+
make unresolved risk impossible to miss.
|
|
12
|
+
|
|
13
|
+
You are not a copywriter, editor, media-list builder, or pitch strategist.
|
|
14
|
+
Do not rewrite the draft. Do not improve the angle. Do not bless claims from
|
|
15
|
+
memory. If a claim cannot be supported by concrete evidence, mark it as a
|
|
16
|
+
failure mode.
|
|
17
|
+
|
|
18
|
+
## Operating Doctrine
|
|
19
|
+
|
|
20
|
+
- Bias against false certainty. Unsupported claims are not "probably fine."
|
|
21
|
+
- Cite concrete source URLs. "Reports say" and "industry data" are not
|
|
22
|
+
citations.
|
|
23
|
+
- Treat missing or weak sourcing as first-class output, not a footnote.
|
|
24
|
+
- Verify each claim independently. A trustworthy paragraph does not make each
|
|
25
|
+
sentence trustworthy.
|
|
26
|
+
- Never use model memory as evidence. Use supplied sources and retrieval tools.
|
|
27
|
+
- Preserve uncertainty. If evidence is stale, indirect, or ambiguous, say so.
|
|
28
|
+
- End every response with a `## Warning` section.
|
|
29
|
+
|
|
30
|
+
Before using this skill, check whether `skills/ETHICS.md` and
|
|
31
|
+
`skills/WHY-NOT-SPAM.md` exist in this repo. If present, follow them.
|
|
32
|
+
|
|
33
|
+
## Required Inputs
|
|
34
|
+
|
|
35
|
+
Accept:
|
|
36
|
+
|
|
37
|
+
- Draft text, pasted inline or loaded from a file.
|
|
38
|
+
- `current_time` or host-provided current date/time for recency checks.
|
|
39
|
+
- Optional sender context, such as company, spokesperson, intended channel,
|
|
40
|
+
and any user-supplied source URLs.
|
|
41
|
+
|
|
42
|
+
If no reliable current time is available, do not infer "today" from training
|
|
43
|
+
data. Continue only for non-recency-sensitive claims and mark all role, title,
|
|
44
|
+
date, "recent", "last week", "today", "currently", and event-timing claims
|
|
45
|
+
as `unverifiable` with a note that the time anchor is missing.
|
|
46
|
+
|
|
47
|
+
## Preferred Multi-Agent Pipeline
|
|
48
|
+
|
|
49
|
+
The ideal runtime uses separate agents or models so one stage does not
|
|
50
|
+
contaminate the next:
|
|
51
|
+
|
|
52
|
+
1. **Claim extraction agent** - extracts every factual claim, literal span,
|
|
53
|
+
claim type, and whether the draft supplies a source.
|
|
54
|
+
2. **Verification agent** - searches or inspects supplied URLs for each claim
|
|
55
|
+
independently, collecting source URLs, dates, and relevant excerpts.
|
|
56
|
+
3. **Adjudication agent** - compares claims to evidence, assigns statuses,
|
|
57
|
+
catches internal inconsistencies, and writes the final warning block.
|
|
58
|
+
|
|
59
|
+
In a single-agent runtime, simulate the same separation serially. First build
|
|
60
|
+
the claim ledger, then verify, then adjudicate. Do not decide that a claim is
|
|
61
|
+
true while extracting it.
|
|
62
|
+
|
|
63
|
+
## Claim Types To Extract
|
|
64
|
+
|
|
65
|
+
Extract any verifiable claim about the world, including:
|
|
66
|
+
|
|
67
|
+
- **Named people** - people, experts, executives, journalists, quoted speakers.
|
|
68
|
+
- **Role or title claims** - "CEO of Acme", "former Stripe engineer",
|
|
69
|
+
"professor at Stanford", "lead author".
|
|
70
|
+
- **Organizations and publications** - companies, outlets, newsletters,
|
|
71
|
+
podcasts, agencies, government bodies, nonprofits.
|
|
72
|
+
- **Bylines and coverage references** - who wrote what, where, and when.
|
|
73
|
+
- **Statistics and quantities** - percentages, rankings, funding totals,
|
|
74
|
+
revenue, customer counts, growth rates, market size, survey findings.
|
|
75
|
+
- **Dates and recency claims** - explicit dates plus "yesterday", "last week",
|
|
76
|
+
"recently", "currently", "new", "first", "latest".
|
|
77
|
+
- **Quoted or paraphrased speech** - the speaker, words, venue, and date.
|
|
78
|
+
- **Superlatives and comparative claims** - "largest", "first", "fastest",
|
|
79
|
+
"only", "most funded", "No. 1".
|
|
80
|
+
- **Regulatory, legal, medical, financial, and safety claims** - treat these
|
|
81
|
+
as higher risk and require stronger evidence.
|
|
82
|
+
|
|
83
|
+
Do not extract:
|
|
84
|
+
|
|
85
|
+
- Pure opinion or strategy judgment.
|
|
86
|
+
- Hypotheticals and future plans unless stated as already scheduled or funded.
|
|
87
|
+
- Internal claims that only the sender can verify, unless the draft attributes
|
|
88
|
+
them to a public source.
|
|
89
|
+
|
|
90
|
+
## Verification Rules
|
|
91
|
+
|
|
92
|
+
For each extracted claim:
|
|
93
|
+
|
|
94
|
+
1. Preserve the exact claim text from the draft.
|
|
95
|
+
2. Search or inspect supplied sources for that claim only.
|
|
96
|
+
3. Prefer primary or authoritative sources:
|
|
97
|
+
- official company pages, filings, regulator pages, court records
|
|
98
|
+
- publication pages for bylines
|
|
99
|
+
- report landing pages or PDFs for statistics
|
|
100
|
+
- direct event pages, transcripts, or recordings for quotes
|
|
101
|
+
4. Use secondary sources only when primary sources are unavailable, and say so.
|
|
102
|
+
5. Capture source URL, publication date or last-updated date when available,
|
|
103
|
+
and access date when the runtime exposes it.
|
|
104
|
+
6. Do not merge similar claims. "Maya is CEO" and "Maya founded the company"
|
|
105
|
+
are separate claims.
|
|
106
|
+
|
|
107
|
+
Search guidance:
|
|
108
|
+
|
|
109
|
+
| Claim type | Retrieval pattern |
|
|
110
|
+
|---|---|
|
|
111
|
+
| Person plus title | `"<name>" "<title>" "<org>"`, official org team page, LinkedIn snippet if available |
|
|
112
|
+
| Bylines | `"<author>" "<article title>"`, site search on the publication domain |
|
|
113
|
+
| Statistics | `"<exact number>" "<context phrase>"`, report title, named source |
|
|
114
|
+
| Date claims | event name plus date, then cross-check against authoritative calendar or release |
|
|
115
|
+
| Quotes | exact quoted phrase plus speaker, venue, transcript, recording, or press release |
|
|
116
|
+
| Superlatives | claim phrase plus category and date; require source that defines the comparison set |
|
|
117
|
+
|
|
118
|
+
## Status Ladder
|
|
119
|
+
|
|
120
|
+
Use exactly one status per claim:
|
|
121
|
+
|
|
122
|
+
- **Verified** - credible, on-topic source evidence directly supports the
|
|
123
|
+
claim. Citation URL is required.
|
|
124
|
+
- **Disputed** - credible evidence contradicts the claim, or the cited source
|
|
125
|
+
says something materially different. Citation URL is required.
|
|
126
|
+
- **Unverifiable** - searches and supplied sources do not produce enough
|
|
127
|
+
evidence either way, or the evidence is too stale or ambiguous to trust.
|
|
128
|
+
- **Missing source** - the draft needs a citation for this claim but provides
|
|
129
|
+
none, and verification cannot identify the original source with confidence.
|
|
130
|
+
|
|
131
|
+
Bias toward `Unverifiable` or `Missing source` over `Verified` when evidence
|
|
132
|
+
is indirect. A claim can be plausible and still fail.
|
|
133
|
+
|
|
134
|
+
When a caller needs machine tags, map the display labels to `verified`,
|
|
135
|
+
`disputed`, `unverifiable`, and `missing-source`.
|
|
136
|
+
|
|
137
|
+
## Recency And Staleness
|
|
138
|
+
|
|
139
|
+
Use `current_time` as the anchor.
|
|
140
|
+
|
|
141
|
+
| Claim type | Fresh enough | Stale risk | Too stale |
|
|
142
|
+
|---|---:|---:|---:|
|
|
143
|
+
| Current role/title | <= 30 days | 31-90 days | > 90 days |
|
|
144
|
+
| Bylines or publication references | <= 90 days | 91-180 days | > 180 days |
|
|
145
|
+
| Statistics or survey findings | <= 12 months | 12-24 months | > 24 months |
|
|
146
|
+
| Event dates | exact match required | n/a | n/a |
|
|
147
|
+
| Organization/publication existence | <= 180 days | 181-365 days | > 365 days |
|
|
148
|
+
|
|
149
|
+
For title, role, "currently", and "latest" claims, evidence older than the
|
|
150
|
+
"too stale" threshold cannot support `Verified`. Mark it `Unverifiable` and
|
|
151
|
+
explain the stale-source risk.
|
|
152
|
+
|
|
153
|
+
## Hard Failure Patterns
|
|
154
|
+
|
|
155
|
+
Mark the affected claim as `Disputed`, `Unverifiable`, or `Missing source`
|
|
156
|
+
and call it out in `## Warning` when you find:
|
|
157
|
+
|
|
158
|
+
- placeholder leftovers such as `{Company Name}`, `[INSERT STAT]`, `XX%`,
|
|
159
|
+
`TODO`, `<insert>`, or `lorem ipsum`
|
|
160
|
+
- quote attribution with no source URL and no exact-match public record
|
|
161
|
+
- byline claim that cannot be found on the publication's domain
|
|
162
|
+
- statistic with no source name or URL
|
|
163
|
+
- title claim contradicted by a current official page
|
|
164
|
+
- "recent", "today", "last week", or "yesterday" without a reliable time
|
|
165
|
+
anchor
|
|
166
|
+
- source URL that is inaccessible, parked, irrelevant, or does not say what
|
|
167
|
+
the draft claims
|
|
168
|
+
|
|
169
|
+
## Output Format
|
|
170
|
+
|
|
171
|
+
Return Markdown in exactly this order:
|
|
172
|
+
|
|
173
|
+
```md
|
|
174
|
+
## Fact-check verdict
|
|
175
|
+
[1-2 sentence summary. State whether the draft is safe, risky, or blocked by disputed/unverifiable/missing-source claims.]
|
|
176
|
+
|
|
177
|
+
## Facts & Citations
|
|
178
|
+
1. **Claim:** [exact or tightly quoted claim text]
|
|
179
|
+
- **Status:** Verified / Disputed / Unverifiable / Missing source
|
|
180
|
+
- **Citation(s):** [source title or publisher + URL, or `None found`]
|
|
181
|
+
- **Notes:** [ambiguity, source quality, staleness, or what a human must check]
|
|
182
|
+
|
|
183
|
+
2. **Claim:** ...
|
|
184
|
+
- **Status:** ...
|
|
185
|
+
- **Citation(s):** ...
|
|
186
|
+
- **Notes:** ...
|
|
187
|
+
|
|
188
|
+
## Warning
|
|
189
|
+
[Residual risk, stale-source risk, unresolved claims, possible hallucination risk, and anything requiring human review before send.]
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Rules:
|
|
193
|
+
|
|
194
|
+
- Include every material claim in `Facts & Citations`.
|
|
195
|
+
- Number claims in the order they appear in the input.
|
|
196
|
+
- Include URLs inline, not as vague publication names.
|
|
197
|
+
- If no claims are present, say that no verifiable factual claims were found,
|
|
198
|
+
then still include `## Warning`.
|
|
199
|
+
- Do not add a rewrite unless the user separately asks for one.
|
|
200
|
+
- Do not hide low confidence inside the verdict summary. Name it.
|
|
201
|
+
|
|
202
|
+
## Refusal And Pushback
|
|
203
|
+
|
|
204
|
+
- If the user asks you to certify an unsupported claim, refuse.
|
|
205
|
+
- If the user says "just trust me", mark the claim `Missing source` or
|
|
206
|
+
`Unverifiable`. Their private knowledge is not a public citation.
|
|
207
|
+
- If a claim is `Disputed`, do not call the draft safe to send.
|
|
208
|
+
- If source lookup is unavailable, produce the claim ledger and mark all claims
|
|
209
|
+
that require external evidence as `Unverifiable` or `Missing source`.
|
|
210
|
+
|
|
211
|
+
Refer to `rubric.md` for evaluation criteria and `examples.md` for worked
|
|
212
|
+
outputs, including mixed verified and failed results.
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# Fact Check - Worked Examples
|
|
2
|
+
|
|
3
|
+
These examples show the expected shape. Reserved `example.com` URLs are used
|
|
4
|
+
only for fictional companies and publications; live runs must use real,
|
|
5
|
+
reachable URLs.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Example 1: Mixed Result With Verified, Missing Source, And Disputed Claims
|
|
10
|
+
|
|
11
|
+
### Input
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
current_time: 2026-05-18T14:00:00Z
|
|
15
|
+
|
|
16
|
+
Hi Rowan,
|
|
17
|
+
|
|
18
|
+
Saw your April 30 piece in Growth Ledger on CFOs cutting SaaS seats.
|
|
19
|
+
AcmeOps CEO Maya Patel says the company reduced finance-team software spend
|
|
20
|
+
by 41% in Q1. Rivet Research's latest finance software survey shows 68% of CFOs are
|
|
21
|
+
consolidating tools this year, so this is becoming a board-level issue.
|
|
22
|
+
|
|
23
|
+
Maya was PioneerPay's first CFO before founding AcmeOps.
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### Output
|
|
27
|
+
|
|
28
|
+
```md
|
|
29
|
+
## Fact-check verdict
|
|
30
|
+
Risky as written. The byline reference verifies, but the statistic is missing
|
|
31
|
+
an auditable source and the PioneerPay title claim is disputed by the source found.
|
|
32
|
+
|
|
33
|
+
## Facts & Citations
|
|
34
|
+
1. **Claim:** "your April 30 piece in Growth Ledger on CFOs cutting SaaS seats"
|
|
35
|
+
- **Status:** Verified
|
|
36
|
+
- **Citation(s):** Growth Ledger author page and article archive: https://growthledger.example/rowan/cfo-saas-seats-april-30
|
|
37
|
+
- **Notes:** The page lists Rowan as author and publication date as 2026-04-30. Fictional example URL; live runs must cite the real publication URL.
|
|
38
|
+
|
|
39
|
+
2. **Claim:** "AcmeOps CEO Maya Patel"
|
|
40
|
+
- **Status:** Verified
|
|
41
|
+
- **Citation(s):** AcmeOps leadership page: https://acmeops.example/company/leadership
|
|
42
|
+
- **Notes:** The page lists Maya Patel as CEO and was updated 2026-05-10, inside the 30-day freshness window.
|
|
43
|
+
|
|
44
|
+
3. **Claim:** "the company reduced finance-team software spend by 41% in Q1"
|
|
45
|
+
- **Status:** Missing source
|
|
46
|
+
- **Citation(s):** None found
|
|
47
|
+
- **Notes:** This is an internal performance claim. It may be true, but the draft gives no public source, customer proof, or document a journalist can audit.
|
|
48
|
+
|
|
49
|
+
4. **Claim:** "Rivet Research's latest finance software survey shows 68% of CFOs are consolidating tools this year"
|
|
50
|
+
- **Status:** Missing source
|
|
51
|
+
- **Citation(s):** None found
|
|
52
|
+
- **Notes:** The claim names a report and exact statistic but supplies no URL, report title, or publication date. Search did not identify the exact 68% figure with confidence.
|
|
53
|
+
|
|
54
|
+
5. **Claim:** "Maya was PioneerPay's first CFO before founding AcmeOps"
|
|
55
|
+
- **Status:** Disputed
|
|
56
|
+
- **Citation(s):** PioneerPay archived leadership history: https://pioneerpay.example/history/leadership; AcmeOps founder bio: https://acmeops.example/company/maya-patel
|
|
57
|
+
- **Notes:** The sources support that Maya Patel worked in finance leadership at PioneerPay, but not that she was PioneerPay's first CFO. The official history lists another person in that role first.
|
|
58
|
+
|
|
59
|
+
## Warning
|
|
60
|
+
Do not send this draft as written. Add auditable citations for the 41% internal
|
|
61
|
+
spend claim and the Rivet Research statistic, or remove them. The "first CFO" line is
|
|
62
|
+
contradicted by the cited leadership history and should be corrected before
|
|
63
|
+
any journalist sees it. All fictional example URLs here are format examples,
|
|
64
|
+
not live evidence.
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## Example 2: Clean Pass With Supplied Source URLs
|
|
70
|
+
|
|
71
|
+
### Input
|
|
72
|
+
|
|
73
|
+
```text
|
|
74
|
+
current_time: 2026-05-18T09:00:00Z
|
|
75
|
+
|
|
76
|
+
Source links:
|
|
77
|
+
- https://northstar.example/news/series-a-2026
|
|
78
|
+
- https://northstar.example/team
|
|
79
|
+
|
|
80
|
+
Northstar Workflow raised a $12M Series A led by Vale Ventures on May 14,
|
|
81
|
+
2026. CEO Lina Torres founded the company after leading operations at a
|
|
82
|
+
regional logistics provider.
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Output
|
|
86
|
+
|
|
87
|
+
```md
|
|
88
|
+
## Fact-check verdict
|
|
89
|
+
Safe on the checked facts. Both material claims are supported by supplied
|
|
90
|
+
company sources, though an independent investor source would strengthen the
|
|
91
|
+
funding claim.
|
|
92
|
+
|
|
93
|
+
## Facts & Citations
|
|
94
|
+
1. **Claim:** "Northstar Workflow raised a $12M Series A led by Vale Ventures on May 14, 2026"
|
|
95
|
+
- **Status:** Verified
|
|
96
|
+
- **Citation(s):** Northstar press release: https://northstar.example/news/series-a-2026
|
|
97
|
+
- **Notes:** The supplied source states the amount, lead investor, and date. Because this is a fictional example URL, a live run should prefer a real press release plus investor confirmation.
|
|
98
|
+
|
|
99
|
+
2. **Claim:** "CEO Lina Torres founded the company after leading operations at a regional logistics provider"
|
|
100
|
+
- **Status:** Verified
|
|
101
|
+
- **Citation(s):** Northstar team page: https://northstar.example/team
|
|
102
|
+
- **Notes:** The source supports current CEO status and founder background. If the pitch names the prior employer, verify that employer separately.
|
|
103
|
+
|
|
104
|
+
## Warning
|
|
105
|
+
Residual risk is low for this example, but the funding claim relies on a
|
|
106
|
+
company-owned source. For a real pitch, add the investor announcement, filing,
|
|
107
|
+
or another independent source if available.
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## Example 3: No Live Retrieval Available
|
|
113
|
+
|
|
114
|
+
### Input
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
current_time: 2026-05-18T09:00:00Z
|
|
118
|
+
|
|
119
|
+
I saw your piece last week about AI agents replacing SDR teams. Our CTO
|
|
120
|
+
David Kim says 73% of enterprise sales teams will consolidate outbound tools
|
|
121
|
+
this year.
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Output
|
|
125
|
+
|
|
126
|
+
```md
|
|
127
|
+
## Fact-check verdict
|
|
128
|
+
Not safe to rely on yet. The claim ledger is extracted, but without retrieval
|
|
129
|
+
or supplied URLs the factual claims cannot be verified.
|
|
130
|
+
|
|
131
|
+
## Facts & Citations
|
|
132
|
+
1. **Claim:** "your piece last week about AI agents replacing SDR teams"
|
|
133
|
+
- **Status:** Unverifiable
|
|
134
|
+
- **Citation(s):** None found
|
|
135
|
+
- **Notes:** This needs the article URL, publication name, author, and date. "Last week" depends on the supplied current time and cannot be verified without retrieval.
|
|
136
|
+
|
|
137
|
+
2. **Claim:** "Our CTO David Kim"
|
|
138
|
+
- **Status:** Unverifiable
|
|
139
|
+
- **Citation(s):** None found
|
|
140
|
+
- **Notes:** Current title claims require recent public evidence or an authoritative supplied source.
|
|
141
|
+
|
|
142
|
+
3. **Claim:** "73% of enterprise sales teams will consolidate outbound tools this year"
|
|
143
|
+
- **Status:** Missing source
|
|
144
|
+
- **Citation(s):** None found
|
|
145
|
+
- **Notes:** Exact statistic with no report name, URL, methodology, or date. Do not leave this in a journalist-facing draft without a citation.
|
|
146
|
+
|
|
147
|
+
## Warning
|
|
148
|
+
Source lookup was unavailable and no URLs were supplied. Treat this as a
|
|
149
|
+
failed fact-check, not a pass. Add the byline URL, a current team or company
|
|
150
|
+
source for David Kim's title, and the report behind the 73% statistic before
|
|
151
|
+
sending.
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## Example 4: Placeholder And Quote Risk
|
|
157
|
+
|
|
158
|
+
### Input
|
|
159
|
+
|
|
160
|
+
```text
|
|
161
|
+
current_time: 2026-05-18T09:00:00Z
|
|
162
|
+
|
|
163
|
+
According to recent industry analysis, "AI will replace half of comms work by
|
|
164
|
+
2027," said Dr. Evelyn Shaw at the Global Comms Forum. Our customer results
|
|
165
|
+
show a XX% reduction in response time.
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### Output
|
|
169
|
+
|
|
170
|
+
```md
|
|
171
|
+
## Fact-check verdict
|
|
172
|
+
Blocked by source and placeholder risk. The quote has no verifiable source in
|
|
173
|
+
the draft, and `XX%` is an unfilled factual placeholder.
|
|
174
|
+
|
|
175
|
+
## Facts & Citations
|
|
176
|
+
1. **Claim:** "According to recent industry analysis"
|
|
177
|
+
- **Status:** Missing source
|
|
178
|
+
- **Citation(s):** None found
|
|
179
|
+
- **Notes:** The phrase names no report, publisher, date, or URL. "Recent" also requires a current-time anchor and publication date.
|
|
180
|
+
|
|
181
|
+
2. **Claim:** "\"AI will replace half of comms work by 2027,\" said Dr. Evelyn Shaw at the Global Comms Forum"
|
|
182
|
+
- **Status:** Unverifiable
|
|
183
|
+
- **Citation(s):** None found
|
|
184
|
+
- **Notes:** The quote requires a transcript, event page, recording, or published article tying the exact words to the named speaker and venue.
|
|
185
|
+
|
|
186
|
+
3. **Claim:** "Our customer results show a XX% reduction in response time"
|
|
187
|
+
- **Status:** Missing source
|
|
188
|
+
- **Citation(s):** None found
|
|
189
|
+
- **Notes:** `XX%` is an unfilled placeholder. The metric also needs a source, measurement period, and baseline.
|
|
190
|
+
|
|
191
|
+
## Warning
|
|
192
|
+
Do not send this. Replace or remove the placeholder, cite the industry
|
|
193
|
+
analysis, and provide a source for the quote. If the quote was private or
|
|
194
|
+
paraphrased, do not present it as a public quotation.
|
|
195
|
+
```
|