Showcase: Running a Community Campaign

A neighbourhood tenants’ association needs to fight a rent increase. They have five volunteers, no budget, and no technical skills. Here is how the base vault template turns their AI assistant into a campaign co-organiser.


The setup (15 minutes)

  1. Download the template from GitHub
  2. Open the folder in Obsidian
  3. Open any AI assistant (Claude, ChatGPT, or Gemini) and paste the contents of AGENTS.md as context

That’s it. The assistant now knows:

  • The folder structure and what goes where
  • How to create content from templates
  • How to publish pages to a website
  • The rules for tone, style, and formatting

What the campaign looks like inside the vault

campaign-vault/
├── _private/
│   ├── 00_Strategy/
│   │   ├── mission.md          "Stop the 18% rent increase"
│   │   └── positioning.md      Target audience, key messages
│   ├── 01_Projects/
│   │   └── rent-campaign/
│   │       ├── brief.md        Timeline, goals, tactics
│   │       ├── legal-notes.md  Research on tenant rights
│   │       └── contacts.md     Allies, journalists, officials
│   └── 02_Notes/
│       └── meeting-2026-03.md  Notes from last organising meeting
│
└── public/
    ├── index.md                Campaign landing page
    ├── articles/
    │   ├── know-your-rights.md     "What the law says about rent increases"
    │   └── how-to-respond.md       "Template letter to your landlord"
    └── updates/
        └── petition-launched.md    "500 signatures in the first week"

Private files stay private. Public files become a website. The AI assistant respects this boundary automatically.


Five tasks the AI handles

1. Draft the campaign page

You say: “I want to create our main campaign page explaining the rent increase and what people can do.”

The assistant:

  • Routes to the page template (_ai/templates/page.md)
  • Asks for the key facts one at a time (how much? which buildings? when?)
  • Drafts the page following the style guide
  • Places it in public/index.md

2. Write an explainer article

You say: “Write an article explaining tenant rights around rent increases in Switzerland.”

The assistant:

  • Routes to the publish playbook (_ai/playbooks/publish.md)
  • Starts from the article template
  • Asks what legal points to cover
  • Produces a 600-800 word article in plain language
  • Places it in public/articles/know-your-rights.md

3. Turn meeting notes into actions

You say: “Here are my rough notes from last night’s meeting. Turn them into a structured recap.”

The assistant:

  • Asks you to paste or point to the notes
  • Extracts decisions, action items, and owners
  • Saves to _private/02_Notes/meeting-2026-03.md
  • Never publishes private notes

4. Publish an update

You say: “We hit 500 petition signatures. Write a short update for the site.”

The assistant:

  • Drafts a concise update
  • Follows the style guide (direct, no jargon, respects people’s time)
  • Places it in public/updates/petition-launched.md
  • Walks you through the git commit and push

5. Deploy the site

You say: “Deploy.”

The assistant:

  • Routes to the deploy playbook (_ai/playbooks/deploy.md)
  • Runs the Quartz build
  • Pushes to GitHub, triggering automatic deployment
  • Confirms the site is live

What you don’t need

  • No coding. Every interaction is a conversation.
  • No prompt engineering. The playbooks handle that. You describe what you want in plain language.
  • No web design. Quartz generates a clean, readable site from your markdown files.
  • No CMS login. Your content lives in files you control, not on someone else’s platform.
  • No specific AI tool. Claude, ChatGPT, Gemini, Cursor — the template works with all of them.

How to implement this

Prerequisites

  • Obsidian (free) — to edit the vault
  • A GitHub account (free) — to host the repo and deploy the site
  • Any AI assistant — Claude, ChatGPT, Gemini, or a local model

Step by step

1. Download the template

Clone or download the base vault from GitHub:

git clone https://github.com/damianlaird/template my-campaign
cd my-campaign

2. Make it yours

Edit these files:

  • AGENTS.md — update the “About” section with your organisation’s name and purpose
  • public/index.md — replace the placeholder with your landing page
  • public/llms.txt — update with your site’s description
  • public/robots.txt — update the sitemap URL

3. Install Quartz (for the website)

git clone https://github.com/jackyzha0/quartz.git _quartz
cd _quartz && npm install

Update _quartz/quartz.config.ts:

  • pageTitle — your campaign or organisation name
  • baseUrl — your domain
  • Theme colours if you want

4. Preview locally

cd _quartz
npx quartz build --serve --directory ../public

Open http://localhost:8080 to see your site.

5. Start working

Open the vault folder in Obsidian. Open your AI assistant. Tell it what you need. It reads AGENTS.md and follows the playbooks.

6. Deploy (when ready)

Push to GitHub. If you have hosting configured with GitHub Actions, the site deploys automatically. See _ai/playbooks/deploy.md for the full setup.


Adapt it

The base vault is a starting point. Customise it for your context:

  • Add playbooks — write new step-by-step procedures in _ai/playbooks/ for your specific workflows (petition drives, letter-writing campaigns, press releases)
  • Add templates — create content starters in _ai/templates/ for recurring formats (updates, calls to action, event notices)
  • Adjust the style guide — edit _ai/style/style_guide.md to match your voice
  • Add prompts — save reusable LLM prompts in _ai/prompts/ for tasks you repeat often

The AI assistant picks up your changes automatically. Add a new playbook, and next time you describe that task, it knows what to do.