You downloaded 100 PDFs. A course pack, maybe a textbook set, a stack of research papers, a decade of archived reports. You swore you’d read them. You swore you’d organize them. Instead they’re sitting in a folder named Downloads (1), unsearchable, un-cross-referenceable, and quietly accumulating until the day you upgrade your laptop and forget to copy them over.
Here’s the thing about that pile: the knowledge is in there. The connections between documents are in there. The answers to the questions you actually have — “which of these covers topic X”, “do these two contradict each other”, “where did I read that” — are technically present. They’re just locked inside 100 separate, opaque, flat files.
This article is about getting them out. With one open-source tool, an afternoon, and an LLM API key, you can turn that pile into a structured, navigable, searchable wiki that lives on your own machine.
What Synthadoc Is
Synthadoc is an open-source LLM knowledge compilation engine. Its job is to take raw documents — PDFs, Word files, spreadsheets, PPTs, web pages, plain text, even AI session transcripts — and synthesize them into a persistent, structured wiki. The output is plain Markdown, cross-referenced with [[wikilinks]], with every claim carrying an inline citation back to the source line.
The key word is compilation. Most LLM knowledge tools are RAG (retrieval-augmented generation) systems: they fetch relevant chunks at query time and synthesize an answer on the fly. Synthadoc inverts this. It compiles knowledge at ingest time — when you feed it documents, the LLM reads them, extracts the knowledge, structures it into wiki pages, links related concepts, and flags contradictions between sources. What you’re left with is a human-readable artifact you can open in any editor, browse without any tool running, back up with git, and edit by hand.
It’s self-managed and self-improved: a built-in linter audits the wiki over time, surfacing orphan pages, stale content, broken citations, and unresolved contradictions. You don’t babysit it. You feed it, and it maintains itself.
How It Works
The pipeline is three stages:
- Ingest. Synthadoc reads your documents, pulls text and structure out of each one, and runs them through an LLM. PDFs get per-page resolution so citations point to specific pages, not just “somewhere in this 400-page book.”
- Compile. The LLM extracts the knowledge from each source and writes it into structured Markdown wiki pages. As pages are generated, cross-references between them get built automatically — concepts that appear in multiple documents get linked, and a weighted knowledge graph forms in the background.
- Lint. An adversarial second pass reviews the compiled pages: it flags overstated claims, surfaces contradictions between sources, marks orphans (pages nobody links to), and broken citations. Every page carries a lifecycle status — draft, active, contradicted, stale, or archived — so you always know what’s solid and what needs a second look.
The result is a living wiki, not a pile of summaries. Pages reference each other. Contradictions don’t blend silently; they get flagged with a status: contradicted marker and queued for resolution. And every claim has a citation like ^[file:chapter3.pdf:L120-L135] so you can verify anything against the original.
Step-by-Step: From Folder of PDFs to Wiki
- Clone the repo.
git clone https://github.com/axoviq-ai/synthadoc cd synthadoc - Install dependencies. It’s a Python project. Create a venv and install:
python -m venv .venv source .venv/bin/activate pip install -e . - Configure your LLM provider. Synthadoc supports free-tier Gemini and Groq, paid Anthropic/OpenAI/DeepSeek, and local models via Ollama — no API key needed if you already have a CLI subscription like Claude Code or Opencode. Set the provider in your config file.
- Point it at your PDFs. Make a wiki directory, drop your
Downloads (1)folder path into the ingest command, and run:synthadoc ingest --source ./my-pdfs --wiki ./my-wiki - Wait, then open the wiki. The LLM works through each document, writes pages, and builds links. When it finishes, you get a folder of Markdown files — open it in Obsidian (there’s a plugin), the bundled web UI, or any text editor. The wiki is the folder. No cloud, no database, no server required to read it.
The AHA Moment
Here’s where it clicks. You’ve got 100 PDFs compiled into a wiki. You search for a concept — say, “gradient descent” — and instead of getting a list of PDFs that might contain the phrase, you get a structured page that synthesizes what all your sources say about it, with inline citations pointing to the exact page and line in each original document. Click a citation, and Synthadoc’s Source Viewer jumps you to the PDF page it came from.
Better: the page links out to related concepts — “backpropagation”, “learning rate”, “vanishing gradients” — each of which is its own compiled page drawing from overlapping but distinct subsets of your corpus. You’re no longer reading 100 documents. You’re navigating one connected knowledge graph assembled from them, and every node is traceable back to its sources.
The first time you ask “do any of these contradict each other?” and the wiki hands you a flagged page with both claims side by side, source-cited, ready for you to adjudicate — that’s the moment you understand why this isn’t just RAG with extra steps.
Why Local-First Matters
Synthadoc binds to localhost. Your documents never leave your machine — only the snippets the LLM needs get sent to whatever provider you chose, and you can run the whole thing on a local Ollama model with zero network egress if you want. The wiki itself is plain Markdown with YAML frontmatter: no proprietary format, no database, no cloud account, no vendor lock-in. Back it up with git. Sync it with any cloud drive. Open it in ten years when Synthadoc itself is long gone, and the files still read fine.
That matters for course materials under copyright, internal company docs, research data under embargo, or just the basic principle that your knowledge base should outlive the tool that built it.
Conclusion
The 100-PDF problem isn’t really a reading problem. It’s an organization problem — and it’s the kind of problem LLMs are uniquely good at solving, provided the tool compiles knowledge into something durable instead of synthesizing it on the fly and forgetting. Synthadoc does the former. You feed it documents, it hands you back a wiki, and that wiki keeps getting better as you add to it.
If you’ve got a folder of PDFs you’ve been meaning to “get to,” this is the getting-to. Clone the repo, point it at the folder, and let the LLM do the boring part — the extraction, the linking, the cross-referencing — so you can do the interesting part: reading a wiki that actually answers your questions, with citations you can trust.
