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.
Files changed (54) hide show
  1. package/.mcp.json +9 -0
  2. package/.newsjack-npm +1 -0
  3. package/COMMIT +1 -0
  4. package/LICENSE +21 -0
  5. package/README.md +133 -0
  6. package/VERSION +1 -0
  7. package/bin/newsjack +74 -0
  8. package/package.json +37 -0
  9. package/skills/.gitkeep +0 -0
  10. package/skills/ETHICS.md +265 -0
  11. package/skills/WHY-NOT-SPAM.md +257 -0
  12. package/skills/angle-generator/SKILL.md +224 -0
  13. package/skills/angle-generator/examples.md +517 -0
  14. package/skills/angle-generator/rubric.md +219 -0
  15. package/skills/coverage-tracker/SKILL.md +124 -0
  16. package/skills/coverage-tracker-setup/SKILL.md +84 -0
  17. package/skills/crisis-holding/SKILL.md +336 -0
  18. package/skills/crisis-holding/examples.md +302 -0
  19. package/skills/crisis-holding/rubric.md +218 -0
  20. package/skills/fact-check/SKILL.md +212 -0
  21. package/skills/fact-check/examples.md +195 -0
  22. package/skills/fact-check/rubric.md +228 -0
  23. package/skills/journalist-fit-check/SKILL.md +199 -0
  24. package/skills/journalist-fit-check/examples.md +271 -0
  25. package/skills/journalist-fit-check/rubric.md +251 -0
  26. package/skills/meanest-editor/SKILL.md +112 -0
  27. package/skills/meanest-editor/examples.md +331 -0
  28. package/skills/meanest-editor/rubric.md +275 -0
  29. package/skills/media-list-manager/SKILL.md +204 -0
  30. package/skills/media-list-manager/examples.md +88 -0
  31. package/skills/media-list-manager/rubric.md +67 -0
  32. package/skills/news-search/SKILL.md +56 -0
  33. package/skills/newsjack-detector/SKILL.md +286 -0
  34. package/skills/newsjack-detector/examples.md +118 -0
  35. package/skills/newsjack-detector/references/engine-cli.md +29 -0
  36. package/skills/newsjack-detector/references/harness-routing.md +38 -0
  37. package/skills/newsjack-detector/references/rss-feeds.json +106 -0
  38. package/skills/newsjack-detector/rubric.md +160 -0
  39. package/skills/newsjack-monitor-setup/SKILL.md +202 -0
  40. package/skills/newsjack-monitor-setup/examples.md +106 -0
  41. package/skills/newsjack-triage/SKILL.md +98 -0
  42. package/skills/newsworthiness-check/SKILL.md +179 -0
  43. package/skills/newsworthiness-check/examples.md +232 -0
  44. package/skills/newsworthiness-check/rubric.md +218 -0
  45. package/skills/pr-strategist/SKILL.md +304 -0
  46. package/skills/reactive-comment/SKILL.md +297 -0
  47. package/skills/reactive-comment/examples.md +284 -0
  48. package/skills/reactive-comment/rubric.md +280 -0
  49. package/skills/relevance-coarse-filter/SKILL.md +61 -0
  50. package/skills/story-origin-check/SKILL.md +160 -0
  51. package/skills/voice-extractor/SKILL.md +330 -0
  52. package/skills/voice-extractor/examples.md +227 -0
  53. package/skills/voice-extractor/rubric.md +251 -0
  54. 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
+ ```