Skip to content

Repository files navigation

Watchdog

Document intelligence for journalists — drop records in, find connections.

PyPI CI

Watchdog is a command-line tool for journalists who accumulate large sets of public records — court filings, corporate records, freedom-of-information responses, land registries and so on. You drop documents into a folder, Watchdog reads every page, pulls out every person, company, address and relationship it finds, and builds them into a linked investigation vault you can search and question in plain English. Every extracted fact cites the document and page it came from.

The vault lives in Obsidian, a free note-taking app, as ordinary files on your computer. The information-extraction work is carried by an LLM (be that Claude, ChatGPT, Gemini, DeepSeek, etc.). The questions run in Claude Code, Anthropic's AI assistant for the terminal.

Public records only

Watchdog is careful with your files. The originals never leave your computer, and all document conversion runs locally. But the extracted text of each document is sent to a cloud AI model for analysis, and there is no way to take that back. So Watchdog is only for documents that are public, or presumptively public.

Never use it with confidential source communications, leaked or unpublished material, private correspondence, or anything that could identify a source. If you are unsure whether a document is safe to process, do not process it.

What it does

  • Reads almost anything. PDFs (scanned or not), Word documents, spreadsheets, images, web pages, audio and video. Scanned documents are OCR'd automatically; a 500-page PDF is no problem.
  • Extracts entities, not just text. People, companies, addresses, relationships and dates become linked notes, with a page-level citation on every fact.
  • Builds a timeline. Date-bound events from every document are assembled into one chronological view of the investigation.
  • Surfaces what you might miss. Shared addresses, overlapping directors, an entity that keeps turning up, a new document that contradicts an old one. Contradictions are flagged — they are often stories in themselves.
  • Applies specialist knowledge. Built-in guides for dozens of document types teach it what an experienced investigative journalist looks for in corporate filings, court records, land registries and more.
  • Leaves you in charge. The vault is plain files you own and annotate. Facts the AI inferred rather than read are marked as such, and everything links back to the source page for verification.

How it works

A few steps, all run from your terminal:

drop files into _INCOMING/
        ↓
watchdog          reads, OCRs and converts each document, sends the extracted
                  text to the AI model to pull out entities, facts and timeline
                  events, then writes everything to the vault and produces a
                  briefing — one command, confirming before each step
        ↓
your vault        linked notes in Obsidian; ask questions in Claude Code

After Watchdog has processed the documents you've given it, you read the briefing, explore the vault in Obsidian, and ask questions inside Claude Code — /watchdog-query Who are the directors of Shell Co Ltd? — with every answer cited back to a page.

For a closer look at what happens to a single document — the OCR pipeline, the information extraction process, the final summarization step — see this illustrated walkthrough.

What you need

  • macOS, Linux or Windows
  • Obsidian — free
  • Claude Code — free to install, and required for asking questions of your vault
  • Claude access — a Claude.ai Pro or Max subscription, or an Anthropic API key, since Claude Code needs one either way. The ingest pipeline can be pointed at a different provider instead — OpenAI, Gemini, DeepSeek, or a local model — see Configuration; asking questions of the vault always runs on Claude
  • Python 3.10+, plus a few free system tools the install guide covers

A Claude Pro subscription (US$20/month) is enough for most journalism work.

Watchdog benchmarks its own model and effort defaults against real court and financial filings rather than picking one on reputation alone — see Benchmarks for the full results. The current top recommendation for extraction is OpenAI's GPT-5.6 Luna, at roughly $1 per 1,000 pages; Claude stays the zero-setup default. See the install guide for how to set it up.

Installation

pipx install watchdog-intel
watchdog setup

Prefer uv? Use uv tool install watchdog-intel instead of the first line.

Never used a terminal? The install guide walks through every step, starting from how to open one.

Quick start

watchdog new "Shell Company Investigation"
cd ~/Investigations/shell-company-investigation

# drop documents into _INCOMING/, then:
watchdog
watchdog obsidian

For a full first-investigation walkthrough, see Getting started.

Documentation

Guide What it covers
Install Getting Watchdog set up, written for first-time terminal users
Methodology What actually happens to your documents, and why, in plain English
Getting started Your first investigation, start to finish
Investigating Day-to-day work: questions, search, leads, web research
Commands The complete command reference
Configuration Every setting, model choices, controlling cost
Benchmarks How model/effort defaults are measured, and what to expect in time and cost
The vault What Watchdog builds on disk and how to read it
Domain skills The built-in document-type expertise
Troubleshooting When something goes wrong

A note on AI and mistakes

Watchdog uses AI to read documents, and AI makes mistakes — it can misread a name or draw a wrong inference. Every fact it records links to the source document and page, and facts it inferred rather than read are marked (inferred) — leads to verify, not findings. Treat the vault as a structured first read, not a finished product, and follow the link before you publish anything.

Contributing

Three areas where help is most welcome:

  • Domain skills — if you know a document type deeply, the extraction guides are plain markdown, no code required. Start from the template.
  • Pipeline fixes — bug reports with a sample document (redacted if needed) are especially useful.
  • Documentation — corrections, clarifications and translations, particularly to the install guide.

To run from source:

git clone https://github.com/tomcardoso/watchdog
cd watchdog
pipx install --editable . --force
watchdog setup

Please open an issue before starting significant work.

Acknowledgements

The vault structure and session-context approach were partly inspired by claude-obsidian by Daniel Agrici. Search is built on fastembed by Qdrant; the passage-window approach, +/- queries and show-the-source principle are borrowed from Semantra by Dylan Freedman. Embedding the raw corpus separately from the knowledge graph was partly informed by obsidian-smart-connections by Brian Petro, and the structured vault index for entity lookup by obsidian-claude-code. The ASCII dogs shown by watchdog new and watchdog about were drawn by Felix Lee and Sarah Kearsley.

License

MIT — see LICENSE.

About

Document intelligence for journalists

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages