Structured Evidence for High-Stakes Reporting
Turn messy source material into audit-ready investigative artifacts.
InvestigativeJournalist.jl is a Julia toolkit for managing the end-to-end investigative reporting workflow. It provides high-integrity structures for ingesting diverse sources, extracting verifiable claims, and building a corroboration matrix that minimizes editorial and legal risk.
-
Multi-Source Ingestion: Ingest documents, web snapshots, and interview notes with automatic hashing and deduplication.
-
Claim Extraction: Extract discrete claims and link them to entities (people, orgs, places).
-
Corroboration Matrix: Quantify confidence levels across claims and multiple supporting sources.
-
Auditable Provenance: Every claim in your final draft traces back to a cryptographically hashed source document.
-
Timeline & Network Analysis: Visualize actors and events to detect gaps or contradictions in narratives.
using InvestigativeJournalist
# Ingest a source document
doc = ingest_source("docs/leaked_contract.pdf")
# Extract claims and link to entities
claims = extract_claims(doc)
link_entities!(claims)
# Build a corroboration matrix
matrix = corroborate(claims, all_docs())
# Generate a publication-ready evidence pack
pack = generate_publication_pack(story_draft)-
Data:
DataFrames.jl,Arrow.jl,JSON3.jl -
Persistence:
SQLite.jlorDuckDB.jl -
Text Analysis:
TextAnalysis.jl -
Visualization:
Makie.jl
-
Source Protection: Support for encrypted fields and redacted exports for sensitive whistleblowers.
-
Audit Trail: Immutable logs for every change in confidence scores or claim text.
-
Zero-Unreferenced Policy: Final publication packages prevent inclusion of any claim without a verified evidence link.
Palimpsest-MPL-1.0 License - see LICENSE for details.