Today I'm releasing the Campaigning Wiki
campaigning.wiki — a practical knowledge base for campaigning craft. Strategy, organizing, tactics, digital, training, research, plus 650 worked case studies. English now, German/French/Spanish soon, CC BY-SA, built to be used the same day you look it up.
It’s a practical knowledge base for campaigning craft — advocacy, electoral work, community organizing, nonviolent action.
English now; German, French and Spanish are staged in the repository and will go live once they pass the same source gate as everything else. Seven areas: strategy and theory · community organizing · digital campaigning and comms · nonviolent action and tactics · training and facilitation · research and civic space · and case studies. About 1,430 published pages: 650 worked campaigns, 360 source pages, 230 method articles, a 100-entry glossary, and short profiles of the people behind the methods.
Here’s the idea behind it.
The gap
Campaigning knowledge exists — but it’s scattered. It sits in PDFs nobody finds. In one language, when you need it in another. In an academic paper, when what you actually need is a checklist for tomorrow morning.
So I built one place where a campaigner can look something up and use it the same day. Power mapping. Theory of change. Door-knocking. Distributed organizing. Petition strategy. Escalation planning. Written to be used, not just read.

The front door. Everything is reachable from here — by pillar, by role, or straight into the casebook.
How it’s built
The pattern is stolen from Andrej Karpathy’s nanoGPT. Three folders: raw material in one (scraped sources, PDFs, transcripts), distilled articles in another, the website as the artifact on top. The writing happened in waves — several models running in parallel, each on its own non-overlapping slice of the corpus, overnight, followed by a single pass that checks everything.
The rest of the stack is deliberately boring. Markdown files with frontmatter, in git. Quartz v5 renders a static site from them. One Docker container, Caddy in front, four small Python services alongside it. Deployed with git push. If all four services die tomorrow, every single page still loads.
Static first matters here, not as a tech preference. A wiki that goes dark the moment its database hiccups isn’t a reference work — it’s a SaaS. I wanted something campaigners could cite in a strategy doc, link in a Slack, print for a training, and trust to still be there next year.
The part everyone wants to talk about
Yes, AI was used heavily. That’s the cheap part now. An LLM will write you 1,400 pages before lunch. The real question is which of them are allowed to appear at all.
So there’s a gate between the text and the website. A script that checks every page before it ships: valid frontmatter? Not a draft, not a stub? Does every load-bearing claim carry a [source: slug] marker — and does that slug resolve to a real source page, with real source text behind it in the raw material? Do all internal links resolve?
No? Then the page isn’t deleted. It’s held back, with a reason, and simply doesn’t appear. What goes live is listed in a single text file the build generates.

What the gate leaves behind: the source named, whether it’s primary or secondary, its licence terms, which script last touched the page, and when a human last checked it.
This sounds like bookkeeping. It’s also the only reason I’m publishing the thing at all. Without that gate I’d have built a very large, very confident generator of plausible-sounding nonsense. With it, 98 per cent of the published content pages are tied to sources — and a campaigner can quote a number from a page and hand it to a journalist with a real source link behind it.
The same logic runs the ask function. Ask the wiki something and it answers only from the passages it retrieved, with a link to the page. If it finds nothing, it says so rather than inventing an answer. An assistant that admits it doesn’t know something beats one that always has an answer.
The shape of the access
Six “by role” hubs — Tactician · Strategist · Manager · Comms · Coalition · Generalist — because nobody reads a wiki the same way twice. The first time you reach for power mapping, it’s for tomorrow’s strategy session. The second time, it’s because a volunteer asked what a “lever” is and you need a 30-second answer. Same page, different door.

The same library, entered through the mode you’re actually in. If you need to act this week, you start here — not in the theory.
Eight guided learning paths cover the same ground for people who’d rather walk a route than browse: start your first campaign, plan a blockade, crisis communications, fundraising for beginners, nonviolent action 101. If you’re new, walk the path. If you’re not, jump straight to the page.
Now the honest part
This is a minimum viable product. Some pages are thin. Some are missing. Some link out where they should go deeper. And the coverage is not yet as broad as it needs to be — across regions, across traditions, across the political spectrum.
An experienced NGO hand looked at an early version and told me it was very analytical and abstract — fine for people who think that way, but the best campaigners he knows work on instinct. He’s right. That gap isn’t fixed by another source gate; it’s fixed by practitioners putting in what they actually do on a Sunday night when the campaign starts on Monday.
That’s exactly why I’m publishing now instead of in a year.
How to put something in
Every page carries a feedback link in the footer, and articles that have cleared the gate end with a bigger prompt: “Missing something? Suggest an improvement.” It’s the shortest path from “this is wrong” to “this is fixed”.
The form takes a topic so your note lands in the right place:
- Add a source — you know the handbook, the study, the toolkit I missed. There’s a dedicated URL field for exactly this, and it’s the most valuable thing you can send me.
- Copyright issue — the wiki paraphrases and cites rather than reproducing, and every source carries a licence field. If I got one wrong, tell me and I’ll fix it.
- Content feedback — something is inaccurate, out of date, or missing the point of the tactic.
- UI/UX — something is broken or confusing.
- Other — whatever doesn’t fit the boxes.

Everything submitted lands in a triage queue rather than an inbox I forget about. You don’t need an account and you don’t need to know how git works — a name, an email and the comment is all it asks for.
The point
A wiki isn’t a publication. It’s a shared practice.
So: go in. Read it. Find what’s wrong. Tell me what’s missing. Add what you know. If you’ve run a campaign, you know something I don’t. Put it in.
The content is CC BY-SA — take it, quote it, make it better.
campaigning.wiki — see you in there.
This post was created with partial use of AI tools (including for fact-checking) such as Gemini, Perplexity and Manus. All content has been carefully reviewed, revised and is my own responsibility.