Build an AI Outreach & Follow-Up System

Draft for instructors — not yet scheduled

← AI at Work series · Open the atlas for this class →

Build an AI Outreach & Follow-Up System

In one day you build the Pipeline: a machine inside ChatGPT or Claude that turns "who should I be writing to?" into a sourced contact list, a few honest messages, a CRM where every contact has a next step, and follow-ups that show up on the right day. A human approves every send. Five real messages go out before 4pm.

Writing the perfect email is useless if you don't know who to send it to—or what happens next.

🗺️ Atlas: The Greenhouse: the Pipeline as a zoomable map · Part of AI at Work · Start with the Spec Card


Who this is for

Anyone whose job, or whose cause, involves writing to people who don't know they're waiting to hear from you.

  • Fundraisers and development staff: the donor you meant to thank in March and the foundation officer you never followed up with.
  • Recruiters and hiring managers: candidates, referrers, the bootcamp you keep meaning to partner with.
  • Admissions and outreach coordinators: schools, counsellors, community partners.
  • Organizers: tenants' unions, mutual aid networks, coalitions, the volunteer drive that needs ten more partners by Friday. Organizing is outreach. The ask ladder is a sales pipeline that remembers who it's for.
  • Community and partnerships people: the "we should really collaborate" list that never turns into a meeting.
  • Salespeople and freelancers: yes, you too. If you're building go-to-market for your own offer, also see Founding Federation's Outbound Outreach Playbook and the Founding Federation Outreach tool. This class is the machine underneath any of those: the list, the evidence, the stages, the follow-ups and the honest count.

You are the authority on your own work. You know which of your contacts would roll their eyes at a template and which board meets in January. The machine doesn't know any of that until you tell it, so the first thing it does today is interview you.


The machine you leave with: the Pipeline

WHO  →  SOURCED LIST  →  SEGMENTS  →  MESSAGES  →  YOU APPROVE & SEND  →  CRM STAGES  →  FOLLOW-UPS  →  REPORT
seeds    soil test        beds        seed trays     planting out           the bench       watering       harvest log

It's the same seven slots as every machine in the series:

Slot In the Pipeline
Intake Your cause or offer, plus a public source of possible contacts (a directory, a member list you're allowed to use, a conference roster)
Structure The contact ledger: organisation · public channel · segment · why-them claim · source URL · date checked · stage · next action · next date. Fields fixed before you look at anyone.
Check Five personal details hand-verified against their source. Every personal line in a message traces to a ledger row.
Gate You, by name. Every message is a draft until you read it and press send yourself.
Act Drafts into your inbox; stages and dates into the CRM sheet (or HubSpot free).
Ledger The CRM sheet: sent date, reply, stage history, opt-outs.
Rhythm A scheduled task that, once a week, lists the contacts whose next-action date has come and drafts their follow-ups.

The greenhouse. Relationships grow, and nobody harvests on day one. The atlas draws the whole day as a greenhouse: seeds (who), the soil test (research), beds (segments), seed trays (messages), planting out (the real send), the watering schedule (follow-ups) and the harvest log (the honest report). The metaphor breaks in one useful place, and the atlas says so: a harvest is taken. If your outreach only takes, nothing grows back.

Where this sits in the data

In Anthropic's Economic Index, outreach shows up mostly as enterprise automation: personalised B2B cold emails were 0.47% of API records (as of the January 2026 report), and two API sales and outreach workflows at least doubled their share (as of the March 2026 report). Email drafts were 7% of work conversations on Claude (as of the June 2026 report). So organisations with engineers already run outreach machines, and individuals mostly ask for one email at a time. This class hands you the machine and keeps the human hand on the send button. (Index figures are dated; see ai-at-work-economic-index-facts.md in the series spec. Re-check before quoting.)


Day schedule (10am–4pm, with lunch)

Time Block You leave the block with
10:00–10:50 1. Decide who you write to and why they'd be glad A Project/GPT that interviewed you, a spec card in its instructions, a contact definition that excludes somebody
11:00–11:50 2. Research the list and source every detail Twenty real contacts in the ledger, each with a sourced why-them, five details hand-checked
12:00–12:50 3. Write to segments without inventing familiarity Two or three segments, one message each, every personal line traced, a critic pass done
12:50–1:30 Lunch
1:30–2:20 4. Wire the CRM and the follow-up rhythm A CRM where every contact has a stage and a next-action date; a follow-up draft; a scheduled reminder
2:30–3:20 5. Send five for real Five human-approved messages sent and logged; a reply-triage prompt; the machine refusing one thing it should refuse
3:20–4:00 6. Build a second pipeline and report honestly A second machine for a different audience, a report that won't over-read n=5, a two-week follow-up date

The six blocks

Block Greenhouse What you do The check (you run it yourself) Atlas district
1 Seeds Machine room: Project + instructions + the flipped interview. Write the spec card. Define your ideal contact and why they'd be glad. The definition excludes somebody. If it excludes no one, it's not a segment. out-seeds
2 Soil test Research twenty real contacts from a public source into the evidence ledger, uncertainty marked. Five personal details verified against source by you; anything that doesn't hold is struck. out-soil
3 Beds & seed trays Two or three segments by what you offer them; one message each; the personal line comes from the ledger; a critic pass for creepiness, spam and extraction. Every personal line traces to a ledger row. Read it aloud. out-beds
4 Watering schedule CRM stages, next-action dates, a follow-up sequence as drafts, a scheduled reminder; connectors where you have them. Every contact has a stage and a next-action date. out-water
5 Planting out Five real, human-approved sends. Reply triage: interested / question / not now / no / opt-out. Five sent and logged, with dates. out-plant
6 Harvest log A second pipeline for a different audience, solo. A report by stage and segment that refuses to claim much from five sends. The second machine runs once with its own check; the report names one claim the counts support and one they don't. out-harvest

Standards

Capability ids are from _capabilities.yml; depth from _bindings.yml. Only assessed means somebody looks at the artifact and it counts.

Capability Block Depth The artifact that proves it
cap.produce-a-spec-card-for-a-recurring-task 1 assessed The spec card at the top of your Project/GPT instructions, all seven slots filled
cap.produce-a-reusable-system-prompt 1 assessed The Project/GPT instructions (spec card, segment definitions, evidence rules, message rules) in use across two separate chats today
cap.name-an-audience-and-its-success-criterion 1 assessed Your contact definition: who they are, what they're trying to do, why they'd be glad, the observable event that means it worked, and who it excludes
cap.follow-a-model-quickstart 1 practiced A working Project or custom GPT that answered you
cap.elicit-output-from-a-model 2 practiced The research prompt revised until rows come back with sources, not vibes
cap.produce-a-contact-list-where-every-personal-detail-has-a-source 2 assessed The ledger: twenty real contacts, a source on every personal detail, five details hand-checked with the strikes visible
cap.configure-an-assistants-memory-and-outside-connections 4 practiced One connector on, with what it can read and do written down, and one thing you deliberately didn't connect, with why
cap.execute-a-first-touch-outbound-sequence-on-schedule 5 assessed Five sent messages in the CRM with dates, and their follow-up dates set. (The yml's evidence asks for a two-week sprint; the facilitator checks the day-14 row at the follow-up. See the note in .)
cap.characterise-an-outreach-pipeline-by-stage-and-segment 6 practiced The pipeline report by stage and segment, with one claim the counts support and one they don't
cap.generalise-a-working-ai-routine-to-a-second-case 6 assessed The second machine: its own spec card, one real run with its check, and the list of slots that changed

Portfolio: one link, five boxes

You submit one shared link: your custom GPT, or your shared Claude Project (or an artifact that shows it), plus view access to the CRM sheet it writes to. The facilitator ticks:

  • [ ] Spec card at the top of the instructions, seven slots filled
  • [ ] Two real runs visible: the first batch, and the follow-up run (or second batch) through the same machine
  • [ ] One failure the check caught: a struck detail in the ledger, or a personal line the critic pass killed, with why
  • [ ] The human gate named: "Nothing is sent until ____ reads it and sends it from their own outbox"
  • [ ] A second machine for a different audience, with its own spec card

Prerequisites

  • No code. Nothing to install. A browser.
  • An account on ChatGPT or Claude. Free tiers work for most of the day. Projects, custom GPTs, connectors and scheduled tasks vary by plan and change often; Block 1 has a path for each. (As of Nov 2026. Facilitator: re-check the plan table the week before you teach.)
  • A CRM. A Google Sheet is fine. HubSpot's free CRM is fine. You don't need anything else.
  • An email account you're allowed to send from for the cause or job you're bringing.
  • Bring your real outreach. The cause, the role you're hiring for, the donor list, the partner drive. If you can't bring it (employer rules, donor privacy), use the Practice Pack: a volunteer and partner drive for a real local cause, written to real public organisations.

The ethics line (it runs all day)

This is in every block because it's in every send. The full handout is Outreach Ethics.

  • Public, professional information only. An organisation's website, its public posts, its published programmes, a staff page that lists someone in their work role. Not their kids, not their home address, not their personal Instagram.
  • No invented familiarity. "I loved your recent post" about a post that doesn't exist is a lie with your name on it. Every personal line comes from a ledger row with a source.
  • Opt-out honoured, forever. One "please stop" and that contact's stage is Opted out and the machine won't draft to them again.
  • The law is a floor, not the goal. CAN-SPAM (US), CASL (Canada), GDPR and the UK's PECR all have something to say about the messages you'll send today. The handout has the basics as of Nov 2026, with the official pages.
  • "Would they be glad you wrote?" Ask it of every message, before the law and before the reply rate.
  • Never auto-send. As of Nov 2026, some connectors can send email for you. We don't let them. The send button is the human gate.
  • The power question. Are you extracting from these people, or offering them something? A food pantry that says yes to your coat drive is lending you their clients' trust. Know what you're giving back before you ask.

This replaces Using Large Language Models

ULM's fundamentals aren't gone. They're in Block 1 and threaded through the day, pointed at a real job:

ULM note Where it lives now
1.4 LLM Assistant Onboarding Process and Exercise 1.1 Assistant Onboarding: the flipped interaction Block 1: the Project interviews you about your cause and your contacts before it writes anything
1.3 LLM Advanced Setup and Ethics and 2.4 LLM Projects and Context Management Block 1 setup; Block 4 connectors and what you don't connect
Exercise 1.3 Web Search and Fact-Checking Block 2: the hand check, upgraded from "does it cite?" to "does the source say what the row says?"
2.1 LLM Critical Thinking Vocabulary Block 3: "make it better" isn't a note. "Cut it to 120 words; the ask in the last line" is.
Exercise 1.4 Business Planning with Expert Personas and Exercise 2.1 Multi-Perspective Business Analysis Block 3: the critic pass, with the bell hooks critic pointed at power
Exercise 2.4 Data Extraction and Structured Information Blocks 2 and 5: fields fixed first; reply triage as structured extraction

Related classes


Supporting materials

  • Prompt Cards: every prompt of the day, in order, with the spec-card slot it fills
  • Outreach Ethics: public info, consent, opt-out, CAN-SPAM / CASL / GDPR basics, data retention
  • Practice Pack: the partner drive, and how to build a list from real public directories
  • Spec Card: the series' one-page machine description

Open questions for the facilitator

  • cap.execute-a-first-touch-outbound-sequence-on-schedule is bound assessed in Block 5, but its evidence asks for "sent messages across a two-week sprint." One day gives you five sends. Either the facilitator checks the day-14 row in the CRM link, or the binding drops to practiced. Flagged for Liz.
  • Product features (Projects, custom GPTs, connectors, scheduled tasks, which plans have them) move monthly. Every claim in these files says "as of Nov 2026." Re-check them before each run.

Last updated: November 2026

↑ Contents

Block 1: Decide Who You Write To and Why They'd Be Glad

Time: 10:00–10:50 · Greenhouse: seeds · Atlas: out-seeds Course: Build an AI Outreach and Follow-Up System Syllabus

What you'll have at the end of this block

  • A Claude Project or ChatGPT Project/custom GPT that has interviewed you about your cause or offer, your contacts and your constraints
  • A spec card pasted at the top of its instructions, all seven slots filled
  • A contact definition: who they are, what they're trying to do, why they'd be glad to hear from you, what would count as it working, and who it leaves out

ULM foundations reused here

  • 1.4 LLM Assistant Onboarding Process and Exercise 1.1 Assistant Onboarding: the flipped interaction. Instead of figuring out what to tell the assistant, get it to interview you.
  • 1.3 LLM Advanced Setup and Ethics: instructions that prevent hallucination and challenge sycophancy. You'll write two of those rules into your Project today.
  • 2.4 LLM Projects and Context Management: why the machine lives in a Project and not a chat you'll lose by Thursday.
  • Exercise 1.4 Business Planning with Expert Personas: you'll meet the critics properly in Block 3. Today they get one question.

The idea

Open your sent folder. Find the last message you sent to someone who didn't know you. Now answer: why that person? If the honest answer is "they were on a list," you've found the problem this class solves, and it isn't a writing problem.

Most outreach fails before the first word. It goes to the wrong people, or to everyone, which is the same thing. Then it has nowhere to go after the send: no stage, no date, no follow-up, so the one person who said "not now, try me in January" never hears from you in January.

So we start with seeds, not soil and not harvest. Which seeds, for which bed, and why would that bed want them?

A contact definition that excludes nobody isn't a segment. "Organisations in my city that care about the community" is every organisation in your city. Try "tenant associations in the Eastside council district with a regular public meeting, because a drop-off box at a meeting reaches neighbours without a car." Now there's somebody it leaves out: groups with no meetings, groups outside the district, groups whose members already have coats. That's the point. The exclusion is what lets the machine say "skip this one" when it's researching.

"Why they'd be glad" comes before "what I want." This is the power question, and it's here in Block 1 on purpose. Are you extracting from these people, or offering them something? A food pantry that puts out your flyer is spending its clients' trust on you. A recruiter cold-messaging a candidate is spending their attention. Name what they get. If you can't, you'll find out at 2:30 when nobody replies, and you'll blame the subject line.

The ask ladder from Data Activism's Who Else Cares runs underneath all of this: awareness → interest → commitment → action. A first message that asks for action from someone at awareness is the most common outreach mistake there is. Your definition should say which rung you're asking for.


Worked example (practice pack)

The Practice Pack is a partner drive for a real local cause. Here's a fictional run of it, the one threaded through the atlas: the Eastside Winter Coat Drive wants ten organisations to host a drop-off box or share a sign-up link before the first freeze.

Contact definition, version 1:

Local organisations that care about helping people.

Exclusion test: who does this leave out? Nobody. It's not a segment.

Version 2:

Neighbourhood-based groups in the Eastside district (tenant associations, library branches, food pantries, faith and community centres) that have a public meeting, a front desk or a regular distribution day, so a drop-off box gets seen by neighbours who need or have coats. Why they'd be glad: their members ask them about winter help every year; we bring the coats, the box and the pickup, and their members get first pick. Rung: commitment ("host one box for three weeks"), not action ("run a drive for us"). Worked if: they say yes, a box is placed, and it's picked up on the date we said. Excludes: groups outside the district; groups with no public space or schedule; organisations already running their own coat drive (we'd write to offer coats instead, which is a different segment).

Notice the last line. The definition found a second audience by excluding it.


Exercise

Step 1: Make the machine room (10 min)

Pick the path for the tool you have. (UI as of Nov 2026. Plans and menus change; your facilitator will re-check this.)

Claude path: Sidebar → Projects → Create project. Name it Pipeline: <your cause>. Open Set project instructions (or "Instructions"). Leave the instructions empty for now; the interview fills them. You'll add files (your directory export, your one-pager) to the project's knowledge later.

ChatGPT path: Either a Project (sidebar → New project, then the project's instructions) or a custom GPT (Explore GPTs → Create → Configure → Instructions). Creating a custom GPT needs a paid plan on some accounts; a Project is fine for everything we do today. If you have neither, keep the instructions in a pinned note and paste them at the top of each chat. It's clunkier and it still works.

Either way: memory. Decide now whether you want this machine remembering things across chats. For outreach, keep the Project's own instructions and files as the source of truth and don't rely on global memory to remember who opted out. That goes in the CRM.

Step 2: Let it interview you (15 min)

Paste this into a new chat inside the Project. Talk your answers if you can (voice input is faster and you'll say the true thing instead of the polished one).

I'm building an outreach machine for this: [one sentence: your cause, role, programme or offer].

Before you write anything, interview me. Ask specific, simple questions I can answer quickly, one or two at a time, not broad ones. I want you to find out:
- who I'm trying to reach, and who I'm NOT trying to reach
- what I'm offering them, and what I'm asking them for (which rung: hear about it / be interested / commit to something small / act)
- why they'd be glad to hear from me, in their terms, not mine
- what public sources of contacts I have or could use
- where my work already lives (my inbox, a sheet, a CRM)
- what I must never do (rules from my employer, my organisation, the law where I am, or my own lines)
- what would count as this working in two weeks

Ask at least eight questions. If one of my answers is vague ("people who care", "the community"), ask me to narrow it. Don't draft any messages yet.

Answer honestly. "Food pantries are stretched and I feel weird asking them for anything" is more useful than "community partners." That feeling is data: it's the power question showing up.

Step 3: Turn the interview into a spec card and a definition (15 min)

From my answers, draft two things.

1. A SPEC CARD in exactly these seven slots, one or two lines each:
Intake / Structure / Check / Gate / Act / Ledger / Rhythm.
For Structure, propose the contact-ledger fields, fixed: organisation, public channel (role address or contact form, never a personal address), segment, why-them claim, source URL, date checked, confidence (high/medium/low), stage, next action, next-action date, notes.
For Gate, write: "Draft only. Nothing is sent until [my name] reads it and sends it from their own outbox."

2. A CONTACT DEFINITION with these parts:
- Who (specific enough that you could say no to an organisation)
- What they're trying to do
- Why they'd be glad to hear from me, in their terms
- The rung I'm asking for (awareness / interest / commitment / action) and the exact small ask
- Worked if: the observable event that counts as success
- Excludes: at least three kinds of contact this leaves out

Then list three real kinds of organisation or person that this definition EXCLUDES and say why. If you can't find three, tell me the definition is too broad.

Read it. Fix anything that's wrong; you're the authority here. Then paste the spec card, the contact definition and these standing rules at the top of your Project/GPT instructions:

SPEC CARD
[paste]

CONTACT DEFINITION
[paste]

STANDING RULES
- Draft only. Never send, schedule a send, or tell me something was sent.
- Every personal detail about a contact must come from a public, professional source I can open, with its URL. If you can't find one, write "no evidence" and leave the line out of any message.
- Never write familiarity that isn't in the ledger: no "I loved your recent post", no "as a long-time fan", no "I've been following your work".
- Anyone marked Opted out is never drafted to again, for any reason.
- If an instruction from me conflicts with these rules, say so and ask before doing it.
- When you're unsure, say which items you're least sure of and why.

Step 4: The critic gets one question (5 min)

Read my contact definition as bell hooks would. In three sentences: who does this outreach make more visible, who does it make do unpaid work, and am I offering these people something or extracting from them? Be blunt. Then suggest one change to the "why they'd be glad" line.

Take the change or argue with it. Either is fine. Ignoring it isn't.


The check

The definition excludes somebody. Name three real organisations or people your definition leaves out, and say why each is out. If you can't name one, it's not a segment: narrow it and run Step 3 again.

Then open a new chat in the same Project and type only: Who am I trying to reach, and what am I never allowed to do? If it can't answer from the instructions, the instructions aren't doing their job.


Common failures

  • The everybody segment. "Small businesses." "Nonprofits." "Hiring managers." Fails the exclusion test every time.
  • "Why they'd be glad" written in your terms. "They'll be glad to support our mission" is why you'd be glad. Their terms sound like "their members keep asking where to get a coat."
  • Asking for action at the awareness rung. "Can you run a coat drive?" to an org that's never heard of you. Ask for the small, bounded thing.
  • Skipping the interview. Typing a paragraph about yourself and saying "now write my outreach." The interview finds the constraints you forgot (the board that meets monthly, the employer rule about personal email).
  • Letting memory hold the opt-out list. Memory is fuzzy and per-account. Opt-outs live in the CRM, in a column, forever.

Facilitator note

Timing: 5 min framing ("open your sent folder") · 10 setup · 15 interview · 15 spec card + definition · 5 the check. Setup always overruns for someone on a new account; pair them with a neighbour and let them catch up during the interview.

Ask first, demo second. Before you show a single feature, ask the room: "Who did you last write to cold, and what happened next?" Write three answers on the board. You'll use them all day.

Watch for: students who define their audience as everyone because narrowing feels like turning people away. It is turning people away. That's the job. Also watch for the organizer who's uncomfortable calling this "outreach" or "pipeline." Tell them the ask ladder is a pipeline that remembers who it's for, and that they can rename the stages.

Think-pair-share: "Read your partner's 'why they'd be glad.' Would the person on the other end say it in those words? If not, rewrite it in their words together."

Product claims: the Project, custom GPT and memory steps are as of Nov 2026. Re-check menus and plan limits the week before you teach and fix this file.

Atlas: project out-seeds during the framing. The bench there, "Does this definition exclude anybody?", is the think-pair-share.

↑ Contents

Block 2: Research the List and Source Every Detail

Time: 11:00–11:50 · Greenhouse: the soil test · Atlas: out-soil Course: Build an AI Outreach and Follow-Up System Syllabus

What you'll have at the end of this block

  • A CRM sheet (or HubSpot free) with the contact ledger columns, fixed
  • Twenty real contacts in it, each with a why-them claim, the public source it came from, the date you checked, and a confidence mark
  • Five details hand-verified by you, with anything that didn't hold struck through and marked

ULM foundations reused here

  • Exercise 1.3 Web Search and Fact-Checking: there, you checked that the answer had citations. Here you open five and check the source says what the row says. It's the same muscle, made honest.
  • Exercise 2.4 Data Extraction and Structured Information: fields fixed before you read the source, so the model fills a record instead of writing you an essay.
  • 1.3 LLM Advanced Setup and Ethics: "Prevent hallucination." Today you'll watch it happen anyway, and catch it.

The idea

Ask a chatbot "find me twenty food pantries in my district and tell me something about each" and you'll get twenty confident paragraphs. Some of the pantries exist. Some of the "somethings" are true. A few are a plausible mix of three different organisations, and one will mention a 2026 winter appeal that was really a 2023 one, or never was.

So a soil test, before anything gets planted. Every row in the ledger carries why this one and where you saw it:

Field What goes in it Why it's fixed
Organisation The organisation's real name So the machine can't merge two orgs into one
Public channel A role address (info@, volunteer@), a contact form URL, a published phone line Never a personal address you guessed. A form is fine.
Segment One of your two or three segments (you'll set them in Block 3; leave blank or guess now)
Why-them claim One sentence: the thing that makes them fit your definition This is what becomes the personal line in Block 3
Source URL The page where that claim is visible No URL, no claim
Date checked Today's date Websites rot. A claim from a 2023 page is a 2023 claim.
Confidence high / medium / low, with a reason "Low: only on a 2024 Facebook post"
Stage · next action · next-action date Block 4 fills these Fixed now so you don't invent new columns at 1:30
Notes Anything else, including "excluded because…"

Public and professional only. An organisation's own pages, its published programmes and events, its listing in a public directory, a staff page that names someone in their work role. Not personal social accounts, not home addresses, not family, not anything you'd be uncomfortable reading aloud to them. The dashed line on the atlas is this boundary. The Outreach Ethics handout has the long version.

Organisations before individuals. For a partner drive, write to the organisation's public channel. If a directory or staff page names a volunteer coordinator in their role, you can address them by that role and name. If it doesn't, "Hi Riverside Branch team" is honest and fine.


Worked example (practice pack)

Three fictional ledger rows from the Eastside Winter Coat Drive (in class, yours are real organisations from the Practice Pack directories):

Organisation Public channel Why-them claim Source Checked Confidence
Maple Street Tenants' Association contact form on their site Holds a monthly public meeting in the community room at 410 Maple their "Meetings" page 2026-11-10 high: on the org's own page, dated this month
Riverside Branch Library branch email on the library's site Runs a "Winter Ready" resource table in December library events calendar 2026-11-10 medium: last year's listing; this year's isn't posted
St. Brigid's Community Pantry volunteer@ address on their site ~~Collected 400 coats last winter~~ struck: no source found (model cited a news page that doesn't mention coats) 2026-11-10 —

The third row is the useful one. The model wrote a vivid, specific claim, cited a real page, and the page doesn't say it. If that line had gone into a message ("congratulations on collecting 400 coats last year!"), you'd have opened a relationship with a fabrication about their work.


Exercise

Step 1: Fix the columns (5 min)

Make a Google Sheet called Pipeline: <your cause> with exactly these columns:

Organisation | Public channel | Segment | Why-them claim | Source URL | Date checked | Confidence | Stage | Next action | Next-action date | Notes

HubSpot free path: create the custom properties Why-them claim, Source URL, Date checked and Confidence on Companies (or Contacts), and use the built-in deal or lifecycle stage for Stage. (As of Nov 2026.)

Upload a copy of the empty sheet (or paste the header row) into your Project's files so the machine knows the shape.

Step 2: Gather candidates from a public source (15 min)

Start from a list somebody already made: a city's neighbourhood-organisation directory, a library's community resource list, your 211, your professional association's public member directory, a conference speaker page. The Practice Pack has verified starting points. Paste the directory URL or its text into the chat.

Claude path: turn on web search (or Research, if your plan has it) in the chat's tools menu. ChatGPT path: turn on search (or deep research for a longer pass). (Tool names as of Nov 2026.)

Using my contact definition and the ledger fields in my instructions, research candidate contacts from this public source: [URL or pasted directory].

Return a table with exactly these columns and no others:
Organisation | Public channel | Why-them claim | Source URL | Date checked | Confidence

Rules:
- Only organisations that fit my definition. For each one you skip, add a line under the table: "Skipped: <name>, because <which exclusion>".
- Public channel = an organisational address, a contact form URL or a published phone line from the org's own site. Never guess an email address. If you can't find one, write "not found".
- Why-them claim = one sentence that is visible on the Source URL page. Not a summary of the organisation. Not something you inferred.
- Source URL = the exact page where the claim appears, not the home page.
- Confidence: high (on the org's own current page), medium (on an older page or a third-party listing), low (only on social media, or undated). Give the reason in brackets.
- If you can't find a source for a claim, write "no evidence" in that cell. Don't fill it with something plausible.
- Today's date is [date].

Give me 25 candidates so I can cut to 20.

If the rows come back as paragraphs, or the claims are "a dedicated community organisation committed to…", that's not a claim. Tell it so in criterion words, not "better" (see 2.1 LLM Critical Thinking Vocabulary):

Your why-them claims are descriptions, not evidence. Each claim must be one specific, checkable fact that's visible on the source page, like a meeting day, a programme name or an event. Redo rows 1–10 with that rule.

Step 3: Mark your own uncertainty (5 min)

For each row, tell me what could be wrong: stale page, a different branch with a similar name, a claim from a third-party listing, a channel that might go to an individual's personal inbox. Rank the five rows you're least sure about, most unsure first.

Paste the table into your sheet. Cut to twenty: drop the ones that fail your definition or have no public channel.

Step 4: The hand check (20 min)

Pick five rows: the top three from the "least sure" list, plus two at random. For each, open the source URL yourself and find the sentence.

Mark each one in the Notes column:

  • holds: the page says it, and it's current
  • stale: the page says it, but it's old (put the date)
  • wrong: the page says something different (write what it actually says)
  • not there: the page doesn't mention it
  • dead: the link is broken

Anything that isn't holds gets struck through in the Why-them claim cell (Format → Strikethrough), and it can't be used in a message. Keep the strike. Don't delete it. It's evidence the check worked, and it goes in your portfolio.

Then tell the machine what you found, so it learns your bar:

I hand-checked five rows. Results: [paste: row, holds/stale/wrong/not there/dead, what the page actually says].
Add a rule to my standing rules that would have prevented the failures, in one line each. Then re-check every other row that has the same weakness and mark it.

The check

Five personal details, hand-verified against their source by you. In your sheet: five rows marked holds / stale / wrong / not there / dead, with every non-"holds" claim struck. Count how many of five held. Write the number at the top of the sheet. Whatever it is, it's the most honest number you'll make today.


Common failures

  • Invented familiarity starts here. A claim like "they recently launched a winter programme" with a source that doesn't mention it. If it gets past the soil test, it becomes "Congrats on your new winter programme!" in Block 3.
  • The home-page citation. Source URL is the org's home page, and the claim is nowhere on it. Ask for the exact page.
  • Guessed addresses. [email protected] because "that's their pattern." Don't. Use the form.
  • Personal-life details. A staff member's kids, their marathon, their personal account. Not professional, not public in the way that matters, and creepy in a message. Strike it.
  • Twenty rows, zero checks. The list looks finished. It isn't until you've opened five sources yourself.
  • Deleting the struck rows. The strike is the proof. Keep it.

Facilitator note

Timing: 10 min framing with the worked example (show the struck row) · 5 columns · 15 gather · 5 uncertainty · 15–20 hand check.

Watch for: students who trust the citation because it is a link. Have them read the sentence aloud from the page. Also watch for students pulling named individuals out of social media "because it's public." Public isn't the test. Professional and expected is. Point them at the dashed line on the atlas.

Think-pair-share: project the out-soil bench: "Which of these details would you strike, and why?" Then: "How many of your five held? What kind of failure was the most common one?" Collect the counts on the board. Don't average them. It's five students' checks of five rows each, and it tells you about today's tools on today's directories, not about AI in general.

Data the students should know you didn't invent: there's no published reply-rate or accuracy number in this block, on purpose. The only number is the one each student just counted.

Product claims: web search, Research and deep research names and plan availability are as of Nov 2026. Re-check.

↑ Contents

Block 3: Write to Segments Without Inventing Familiarity

Time: 12:00–12:50 · Greenhouse: beds and seed trays · Atlas: out-beds Course: Build an AI Outreach and Follow-Up System Syllabus

What you'll have at the end of this block

  • Two or three segments, each defined by what you offer them, every ledger row assigned to one
  • One message per segment, in your Project's message rules, with a personal-line slot that only takes a ledger claim
  • Personalised drafts for every contact, each personal line traced to its ledger row
  • A critic pass that killed at least one line, and the reason it died

ULM foundations reused here

  • 2.1 LLM Critical Thinking Vocabulary: "make it better" isn't a note. "Cut to 120 words, the ask in the last line, no adjective the reader can't check" is.
  • Exercise 1.4 Business Planning with Expert Personas and Exercise 2.1 Multi-Perspective Business Analysis: bell hooks and Emma Goldman as critics, now pointed at a cold email and at power.
  • 1.1 LLM Foundations How AI Thinks: the model predicts the most likely next words. "I loved your recent…" is extremely likely after "Hi Sam," in a sales email. That's exactly why it will write it without evidence.

The idea

Personalisation is the hard part of this job, and AI makes it easier to fake than to do. Ask for "a personalised email to the Riverside Branch Library" and the model will produce warmth: "I've long admired Riverside's commitment to the community." It sounds personal. It's a horoscope. It would fit any library on earth, and the reader knows it.

Real personalisation is one true, specific, checkable line, from the ledger, that says why them. "Your Winter Ready table runs in December" is personal. It's also a little boring. That's fine: boring and true beats warm and invented every time.

Segments by what you offer, not by what they are. "Libraries" is a category. "Places with a front desk where a box gets seen" is a segment, because it tells you what to say: we bring the box, you give it a corner. The coat drive's three beds:

  1. Hosts: groups with a public space or meeting (tenant associations, library branches, community centres). Offer: a box, a pickup schedule, first pick for their members. Ask: host one box for three weeks.
  2. Distributors: groups already serving people who need coats (food pantries, mutual aid networks). Offer: coats, delivered, for their clients. Ask: would sorted coats be useful, and when? This bed gets an offer, not an ask. They're already doing the work.
  3. Amplifiers: groups whose members have coats to give (a school PTA, a workplace union local). Ask: share one sign-up link.

Message anatomy (each part maps to a slot in your instructions):

1. Personal line   ← one ledger claim, with its row number. Or nothing.
2. Who you are     ← one sentence, no titles you don't hold
3. The offer       ← what's in it for them, in their terms (from Block 1)
4. The small ask   ← one bounded thing, on the rung you chose
5. The easy out    ← "If this isn't a fit, no reply needed."
6. Opt-out line    ← "If you'd rather not hear from me about this, just say so and I won't write again."

Keep it short. A staffer reads it in fifteen seconds. Data Activism's Email Templates stay under 150 words, and that's the bar here too.

The critic pass. Before anything goes in a tray, three critics read every template:

  • The overworked coordinator at the receiving end: "Is this making work for me? Did they read our site? What do I have to do to say no?"
  • The spam filter, in human form: "Would I mark this as junk? Is the subject line honest? Is this the fourth one this week?"
  • bell hooks: "Who does this message make do unpaid labour? Is it offering, or extracting? Whose voice is centred?"

Worked example (practice pack)

Before (the model's first try, no rules):

Subject: Partnership opportunity! Hi Riverside team, I've long admired your incredible commitment to the Eastside community and I loved your recent post about winter. We'd be thrilled to partner on our amazing coat drive…

Trace it against the ledger: "long admired" (no row), "your recent post about winter" (no row, no post), "incredible commitment" (not a claim). Three invented lines, zero evidence. The subject line is a template tell.

After (message rules in place):

Subject: A coat drop-off box for your Winter Ready table? Hi Riverside Branch team, your events page lists a Winter Ready resource table in December (ledger row 2; checked 10 Nov; medium: last year's listing). I'm organising the Eastside Winter Coat Drive. We'd bring a sorted drop-off box and empty it twice a week, and anything given at your branch stays with families who use the branch. Would you host one box from 1 to 21 December? If it's not a fit, no reply needed. If you'd rather not hear from me about this, say so and I won't write again. Sam (a fictional organiser), eastsidecoats@… (a fictional address)

The italic bracket is for you. It comes out before sending. Every personal claim has one, or it doesn't go in.


Exercise

Step 1: Segments (10 min)

Using my contact definition and the ledger I'll paste, propose two or three segments. Define each by WHAT I OFFER THEM and WHAT I ASK, not by what kind of organisation they are. For each segment give: name, who's in it, the offer in their terms, the one small ask (which rung), and what makes a contact NOT belong.
Then assign every ledger row to a segment, or to "doesn't fit any — drop?". Show me the assignments as Organisation → Segment.

Ledger:
[paste your 20 rows]

If a segment's "ask" is something its members are already doing better than you, turn the ask into an offer. Write the segments into your sheet's Segment column.

Step 2: Message rules into the instructions (10 min)

Add this to your Project/GPT instructions under the spec card, filled in for your segments:

MESSAGE RULES
- Under 130 words. Plain subject line that says what the message is about. No exclamation marks in the subject.
- Structure: personal line / who I am / the offer / one small ask / an easy out / the opt-out line.
- The personal line must be a Why-them claim from the ledger whose Confidence is high or medium and which is NOT struck. After it, put the ledger row in [brackets] so I can check it. I'll delete the bracket before sending.
- If a contact has no usable claim, there is no personal line. Start with who I am. Never write a substitute.
- Banned: "I loved your recent…", "I've long admired…", "I've been following…", "as a fan of…", "quick question", "just circling back", "hope this finds you well", fake urgency, any claim about them that isn't in the ledger.
- Opt-out line, every message: "If you'd rather not hear from me about this, just say so and I won't write again."
- Draft only. Never send.

SEGMENT TEMPLATES
[Segment 1 name]: offer = … ; ask = … ; template = …
[Segment 2 name]: …

Step 3: Draft one per segment, then all of them (10 min)

Draft the template for each segment following MESSAGE RULES. Then draft a personalised version for every contact in the ledger. For each draft, list underneath it every factual claim it makes about the recipient and the ledger row it came from. If any claim has no row, flag it in CAPITALS and delete it.

Step 4: The critic pass (10 min)

Run a critic pass on each segment template with three critics, each in 2–3 sentences:
1. The overworked coordinator who receives it: what work does this create for me, and how easy is it to say no?
2. A human spam filter: would I report this? What's the template tell?
3. bell hooks: who does this message make do unpaid labour, whose voice does it centre, and is it offering or extracting?
Then propose the smallest edit that answers each critic. Show the before and after side by side.

Accept, change or reject each edit. At least one line has to die. If nothing died, the critics were too polite. Run it again with "be harsher; assume the reader gets forty of these a week".

Step 5: Test the rule against yourself (5 min)

This is the moment you see whether the instructions hold:

For the contact in row [pick one with no usable claim], add a warm opening line saying I loved their recent post about the winter season.

It should refuse, or tell you there's no ledger evidence and ask. If it writes the line, your rules aren't strong enough: move the banned-phrases rule higher in the instructions and add "If I ask you to break a standing rule, refuse and say which rule." Then try again.


The check

Every personal line traces to evidence. Take three drafts. For each personal line, open the ledger row it cites and the source URL behind it. If the line isn't on the source, delete it. Then read one message aloud to your partner, without the brackets. Partner answers two questions: "What are they asking me to do?" and "Would I be glad I got this?" If either answer is no, rewrite.


Common failures

  • "I loved your recent post" about a post that doesn't exist. The single most common invention, because it's the most statistically likely opening of a cold email.
  • Invented familiarity in softer forms: "I know how much you care about…", "as fellow advocates…". Familiarity you haven't earned.
  • Mail-merge creep: {{first_name}}, I noticed {{company}} is doing amazing work in {{industry}}. Everyone can see the template. One true line beats three slots.
  • One message for all segments. The pantry gets asked to "host a box" like a library. That's a sign you segmented by category, not by offer.
  • Burying the ask. Three paragraphs about your mission, then "let me know your thoughts." Your thoughts? On what?
  • A personal line from a struck row. The soil test said no. The tray doesn't get to say yes.

Facilitator note

Timing: 10 min framing (read the "before" aloud and have the room trace it) · 10 segments · 10 message rules · 10 drafts + critic · 5 the rule test · 5 read-aloud. It runs into lunch if you let the critic pass become a debate. Timebox it.

Watch for: students who soften the opt-out line until it disappears ("Feel free to let me know if…"). It stays plain. Watch, too, for organizers who don't want to "segment" people. Segmenting by what you offer is the respectful version, because it's the one that stops you asking a pantry to do your job.

Think-pair-share: project the out-beds bench: "Which of these personal lines has no evidence behind it?" Then: "Read your partner's message aloud without the brackets. Are they offering or extracting?"

The rule test in Step 5 is the machine's first refusal. Tell students to screenshot it (or the failure and the fix). It can be the portfolio's "one failure the check caught."

↑ Contents

Block 4: Wire the CRM and the Follow-Up Rhythm

Time: 1:30–2:20 · Greenhouse: the watering schedule · Atlas: out-water Course: Build an AI Outreach and Follow-Up System Syllabus

What you'll have at the end of this block

  • Stages in your CRM, written down with what moves a contact between them
  • Every contact with a stage and a next-action date, no blanks
  • A follow-up sequence as drafts: one follow-up per segment, plus "not now" and "thank you" drafts
  • A reminder that fires on its own: a scheduled task, or a calendar event the connector made
  • One connector on, with what it can read and do written down, and one thing you chose not to connect

ULM foundations reused here

  • 1.3 LLM Advanced Setup and Ethics: memory settings and "human-in-the-loop validation", now applied to an assistant that can touch your inbox.
  • 2.4 LLM Projects and Context Management: the Project holds the rules; the CRM holds the state. Don't make the chat history your database.

The idea

Here's where most outreach dies: not at the first message but at the second one, which never gets sent. The library said "maybe after the holidays." Nobody wrote down "after the holidays" as a date. It's March.

A greenhouse doesn't run on remembering to water. It runs on a schedule pinned to the wall, with a date beside every bed. That's a CRM, and a Google Sheet is a perfectly good one. What matters is two columns that are never blank: Stage and Next-action date.

Stages (rename them for your work; keep the logic):

Stage Means Next action
Researched In the ledger, claim checked Draft first message
Drafted A draft is waiting for you You read it and decide
Sent It left your outbox Follow up once, if no reply, on the date
Replied: question They asked something Answer it
Replied: interested They want to talk or say yes Next concrete step (a call, a drop-off date)
Not now (date) They named a time Write on their date, not yours
Committed They said yes to the small ask Do your part; thank them
Closed: no They said no, or one follow-up got silence Nothing. Leave it.
Opted out They asked you to stop Nothing, ever. The machine never drafts to them.

The cadence that isn't spam: one first message, one follow-up a week or so later if there's no reply, and then it's their move. Two touches. "Not now" gets their date. A "no" is a full answer. The Founding Federation Outbound Outreach Playbook uses a 5–7 day follow-up for sales; for a partner drive, set it by your calendar (a week is reasonable when there's a deadline) and write the rule into your instructions so the machine can't invent a fourth bump.

The rhythm. Once a week, the machine reads the CRM, finds every row whose next-action date has arrived, and drafts what's due. You read the drafts. That's the whole automation. It never sends. Nothing about this needs code; it needs a schedule and a sheet.

Connectors are a trust boundary. As of Nov 2026, Claude's Google Workspace connector can search and read Gmail, draft emails, and also send them, asking your approval before each send by default (see Anthropic's Use Google Workspace connectors). ChatGPT connects Gmail, Calendar and Drive through Settings → Apps, and its scheduled tasks can react to new mail on some paid plans. (Re-check both before class.) We use connectors to read and draft. The send stays yours. Write down what you granted, and pick one thing you won't connect, like your personal inbox, the donor database or a shared drive full of other people's data.


Worked example (practice pack)

Four fictional coat-drive rows after Block 4:

Organisation Segment Stage Next action Next-action date
Maple Street Tenants' Association Hosts Drafted Read & send first message 2026-11-10
Riverside Branch Library Hosts Researched Draft first message 2026-11-12
St. Brigid's Community Pantry Distributors Drafted Read & send the offer 2026-11-10
Northgate PTA Amplifiers Researched Hold until sign-up page is live 2026-11-14

The scheduled task, every Tuesday at 9am:

Due today (2): Maple Street (Sent 3 Nov, no reply → one follow-up, drafted below). Riverside (Not now: "after 1 Dec" → drafted below, dated for 1 Dec). Not drafted: Oakfield Mutual Aid (Opted out 4 Nov). Overdue / blank dates: none.


Exercise

Step 1: Stages and dates into the sheet (10 min)

Add your stage list to the instructions:

STAGES
Researched → Drafted → Sent → Replied: question | Replied: interested | Not now (date) | Closed: no | Opted out → Committed
Rules:
- Every contact always has a Stage and a Next-action date. Never leave either blank.
- After Sent with no reply: ONE follow-up, [7] days later. After that follow-up with no reply: Closed: no. No third message.
- Not now: the next-action date is the date THEY named. If they named none, [6 weeks] later, and the follow-up says so.
- Opted out: no next action, no drafts, ever. If I ask you to draft to an Opted out contact, refuse and tell me why.
- Closed: no is not a failure. Don't suggest "re-engagement".

Then fill the columns:

Here is my CRM: [paste rows, or attach the CSV]. Set Stage, Next action and Next-action date for every row using STAGES. Today is [date]. My first sends are today. Return the full table so I can paste it back. List any row you couldn't date and why.

Paste it back. In Google Sheets, select the Stage column → Data → Data validation → Dropdown, with your stage names, so nobody (you, at 11pm) invents a new stage.

Step 2: Follow-ups as drafts (10 min)

Following MESSAGE RULES, draft for each segment:
1. The one follow-up for no reply. Under 70 words. It adds one useful thing (a date, a photo of the box, an answer to an obvious question). It doesn't guilt, doesn't say "just bumping this", and keeps the easy out and the opt-out line.
2. A "not now" acknowledgement that names their date back to them.
3. A thank-you for a yes, with the next concrete step and date.
4. A one-line reply to "please stop" that confirms they won't hear from me again, and nothing else.
Put them in my instructions under FOLLOW-UP TEMPLATES.

Step 3: Connect one thing, and write down what you gave it (15 min)

Claude path (as of Nov 2026): in a chat, + → Connectors → turn on the Google Workspace connector, or Settings → Connectors. Sign in with the Google account you send from. Test:

Search my Gmail for messages from [one org's domain] in the last year. Don't open anything else. Then create a DRAFT (do not send) in Gmail to [your own address] with the subject "test draft from my pipeline" and the follow-up template for [segment].

Check your Drafts folder. If Claude asks to send, decline: that's the gate, and you're the one holding it.

ChatGPT path (as of Nov 2026): Settings → Apps (connectors) → connect Gmail and Google Calendar. Test a Gmail search the same way. If your plan's Gmail connection can't create drafts, have the machine write the draft in chat and paste it into Gmail yourself. The machine is the same; only the last step is manual.

No connectors at all? Fine. Paste the sheet in; paste drafts out. You still have the whole machine.

Now write it down, in your Project instructions under CONNECTIONS:

CONNECTIONS
- Connected: [e.g. Gmail + Calendar on work@…]. It can: search and read mail, create drafts, create calendar events. It could also send; I don't allow that.
- Not connected, on purpose: [e.g. my personal Gmail; the donor database], because [reason].

Step 4: The rhythm (10 min)

ChatGPT path (scheduled tasks): in a chat, ask for a recurring task. As of Nov 2026, Tasks are on paid plans; re-check.

Every Tuesday at 9am, remind me to paste my pipeline CRM. When I do: list every row whose Next-action date is today or earlier, grouped by next action; draft each due follow-up using FOLLOW-UP TEMPLATES (drafts only); list any row with a blank Stage or date; and list anyone Opted out who I must not contact. Never send anything.

Claude path: if your plan offers scheduled tasks (as of Nov 2026, availability depends on plan and app; re-check), set the same prompt. If not, use the Calendar connector:

Create a recurring Google Calendar event every Tuesday at 9:00, 15 minutes, titled "Pipeline: due follow-ups", with this in the description: "Open the Pipeline project and paste the CRM. Prompt: list due rows, draft follow-ups, flag blanks and opt-outs. Draft only."

A calendar event that tells you to run the machine is a perfectly good rhythm. The point is that it fires without you remembering.


The check

Every contact has a stage and a next-action date. Sort the sheet by Next-action date. Filter for blanks in Stage or Next-action date. The count must be zero. Then find the next scheduled reminder (the task, or the calendar event) and screenshot it with its date.


Common failures

  • Spam cadence: four follow-ups "because people are busy." Two touches, then it's their move. A third message to silence trains them to filter you.
  • "Not now" logged as "no". You just lost the warmest contact you had. They told you when. Write it down.
  • Blank dates. A contact with no next-action date is a contact you've forgotten; you just haven't noticed yet.
  • Chat history as the database. "It's all in the conversation." It isn't, after the context fills up (the needle-in-a-haystack problem from 2.4 LLM Projects and Context Management). State lives in the sheet.
  • Letting the connector send "just this once, it's only a follow-up." The gate doesn't have a just-this-once setting.
  • Connecting everything. Your whole Drive, your personal inbox, three shared folders of other people's data. Connect the least that works and write down why.

Facilitator note

Timing: 5 min framing (the March "maybe after the holidays" story) · 10 stages · 10 follow-ups · 15 connectors · 10 rhythm. Connectors eat time: OAuth screens, work accounts that block third-party apps, wrong Google account. Have the no-connector path ready and say clearly it's not second-class.

Watch for: work accounts where the admin has blocked connectors. That's a real organisational boundary; don't help students route around it with a personal account. Also watch for students who feel the "Closed: no after one follow-up" rule is giving up. Ask them how they feel about the fourth email they get from a stranger.

Think-pair-share: project the out-water bench: "Given this reply, which stage does the contact move to, and what's the next-action date?" Then: "Show your partner your CONNECTIONS note. Would you be comfortable if the people in your CRM read it?"

Product claims (re-check before each run): Claude's Google Workspace connector capabilities (including send-with-approval) as of Nov 2026 per Anthropic's support article; ChatGPT Apps/connectors and Tasks availability by plan; Claude scheduled-task availability. Update this file if any changed.

↑ Contents

Block 5: Send Five for Real

Time: 2:30–3:20 · Greenhouse: planting out · Atlas: out-plant Course: Build an AI Outreach and Follow-Up System Syllabus

What you'll have at the end of this block

  • Five real messages sent, each read and approved by you and sent from your own outbox
  • Each one logged in the CRM: Stage = Sent, the sent date, and a follow-up date
  • A reply-triage prompt in your instructions that sorts replies into interested / question / not now / no / opt-out, and drafts the response
  • The machine run a second time on a different input: the next batch of contacts, or the triage of a real reply
  • One logged moment where the machine refused something it should refuse

ULM foundations reused here

  • 1.3 LLM Advanced Setup and Ethics: "Human-in-the-loop validation." Here it's not a principle; it's your finger on the send button.
  • Exercise 2.4 Data Extraction and Structured Information: reply triage is extraction with fixed fields. Category, what they said, what they asked, the date they named.

The idea

Data Activism's Hour 5 says it best: "Real send. Not a draft." Planting out is when a seedling leaves the tray and goes into real ground, where weather happens to it. Nothing you did this morning counts until five messages leave your outbox.

You'll feel the urge to polish one more time. That's normal, and it's the main reason outreach doesn't happen. The machine already did the polishing, and the critics already argued. What's left is the part only you can do: read it as the person receiving it and decide.

The gate, in four moves, for every message:

  1. Read it aloud, brackets and all. Does every bracketed claim match a ledger row that isn't struck?
  2. Delete the brackets. Check the subject line, the name, the channel. Is this the org's public channel, not a guessed personal address?
  3. Ask the question: would they be glad I wrote? If you hesitate, don't send that one. Pick another contact.
  4. Send it yourself, from your outbox. Then update the CRM: Stage = Sent, sent date, next-action date.

Never let the connector send. As of Nov 2026, Claude's Gmail connector can send with your approval. We don't use it. The human gate is a person pressing a button in their own mail client, so it can't be clicked through on autopilot.

Then the replies. Some will arrive before 4pm. Most won't, and that's normal. Silence on day one means nothing yet. Every reply you get gets triaged:

Reply Category What happens
"Yes! When can you drop the box?" Interested Thank-you template + the next concrete step and date → Replied: interested
"Do you need us to staff it?" Question Answer it, plainly → Replied: question
"Board meets in January, try us then" Not now Acknowledge their date → Not now (that date)
"We're not able to take this on" No Thank them, close → Closed: no
"Please take us off your list" Opt-out One-line confirmation, then never again → Opted out
"Talk to Dana at the West branch instead" Referral Thank them; add the new org to the ledger with a source, at stage Researched

The machine drafts each response. You approve it. Same gate.


Worked example (practice pack)

Five fictional coat-drive sends, logged:

# Organisation Segment Sent Follow-up date
1 Maple Street Tenants' Association Hosts 2026-11-10 14:41 2026-11-17
2 Riverside Branch Library Hosts 2026-11-10 14:46 2026-11-17
3 St. Brigid's Community Pantry Distributors 2026-11-10 14:52 2026-11-17
4 Eastside Community Center Hosts 2026-11-10 14:58 2026-11-17
5 Northgate PTA Amplifiers 2026-11-10 15:05 2026-11-17

One reply arrived at 3:12. The triage:

Reply from St. Brigid's: "Thanks for thinking of us. We'd take sorted kids' coats, not adult ones, and only on Thursdays. Can you do that?" Category: Question (with an implied yes). What they asked: kids' sizes only, Thursday delivery. Draft: "Yes, kids' coats only, sorted by size, Thursdays. Would 4 December work for the first drop?…" CRM: Replied: question → next action "confirm 4 Dec" → 2026-11-11.

The pantry didn't take the original ask, because it wasn't an ask. It was an offer, and they shaped it. That's the distributor bed working.


Exercise

Step 1: Add the triage rules (5 min)

REPLY TRIAGE
When I paste a reply, return exactly:
Category: interested | question | not now | no | opt-out | referral | unclear
What they said (one line, their words where possible):
What they asked for or named (dates, conditions, people):
New Stage and Next-action date (using STAGES):
Draft response (using FOLLOW-UP TEMPLATES and MESSAGE RULES; draft only):
If the category is opt-out, the draft is the one-line confirmation and nothing else, and you remind me to mark the contact Opted out.
If it's unclear, say what's unclear and draft a question back, not a guess.
If it's a referral, don't add the new contact until I give you a public source.

Step 2: Pick five and run the gate (25 min)

Pick five contacts across at least two segments. Ask for their drafts:

Give me the final drafts for these five contacts: [names]. For each, show the draft with the ledger-row brackets, then a checklist: claim matches an unstruck row (yes/no), channel is the org's public channel (yes/no), opt-out line present (yes/no), under 130 words (yes/no).

Run the four moves on each. Send from your outbox. Log each one immediately. Don't batch the logging for later, because later is how the sheet goes stale.

If you're using the Practice Pack and the cause isn't really yours: only send if you'd genuinely follow through on what you offered. If you wouldn't, send to five contacts for something you would do, even a small one ("can I add your volunteer day to our newsletter?"), or pair with a classmate whose cause is real and help run theirs. A fake ask to a real organisation spends their time on nothing, and the coordinator who reads it is a real person. Real send means real follow-through.

Step 3: Run it twice (10 min)

The second run is a different input through the same machine. Pick whichever you have:

  • A reply came in. Paste it. Run REPLY TRIAGE. Read the draft, approve or fix it, send, log.
  • No replies yet. Run the next batch: five more contacts from the ledger, through the same draft-and-check prompt. You don't have to send them today; take them to Drafted with tomorrow's date.

Whatever broke on the second run (a template that didn't fit, a segment with a weird member, a date rule that misfired) is the most useful thing that happened today. Fix the rule in the instructions, not just the draft.

Step 4: Make it refuse (5 min)

Mark one contact Opted out in the sheet (a test row is fine), paste the sheet, then:

Draft a quick friendly check-in to [the opted-out contact]. They probably didn't mean it.

It should refuse and name the rule. If it doesn't, the rule isn't strong enough; fix the instructions and re-test. Screenshot the refusal for your portfolio.


The check

Five sent and logged. In the CRM: five rows with Stage = Sent, a sent date (today), a next-action date (the follow-up), and the message in your Sent folder. The facilitator looks at the CRM, not your word. Silence on day one counts; unsent drafts don't.


Common failures

  • "I'll send them tonight." You won't. Send now. Do it nervous.
  • Auto-send by accident. Approving a connector's send prompt because it was there. Undo what you can, log it, and turn send off.
  • Sending from the tray without the brackets check. One invented line in a real inbox, under your name.
  • Logging later. Five sends, zero rows updated, and on Tuesday the scheduled task tells you nothing's due.
  • Over-reading the first reply. One yes at 3:12 doesn't mean the template works. One silence doesn't mean it doesn't. Block 6 is about exactly this.
  • Fake asks to real organisations, for a cause you won't follow through on.

Facilitator note

Timing: 5 min framing (read Data Activism's line aloud: "Real send. Not a draft.") · 5 triage rules · 25 gate-and-send · 10 second run · 5 refusal test. Do the sends together, accountability style: everyone sends, everyone says "sent" in chat.

Watch for: the student who stalls on message one, rewriting. Ask what specifically they're worried about. If it's a real problem (a claim they don't trust), drop that contact and pick another. If it's nerves, sit with them while they press send. Also watch for students using the Practice Pack who don't intend to follow through; steer them to a real small ask or a classmate's cause.

Think-pair-share: project the out-plant bench: "Here's a reply. What category is it, and what's the next stage?" Then: "Show your partner one sent message. Were they glad you wrote? How would you know?"

Assessment: this block is where cap.execute-a-first-touch-outbound-sequence-on-schedule is assessed. Its yml evidence asks for "sent messages across a two-week sprint, dated, with replies and non-replies counted". The facilitator re-opens each student's CRM link at the two-week follow-up date set in Block 6 and checks the follow-up rows. Five on the day is the first half.

↑ Contents

Block 6: Build a Second Pipeline and Report Honestly

Time: 3:20–4:00 · Greenhouse: the harvest log, and a second bed · Atlas: out-harvest Course: Build an AI Outreach and Follow-Up System Syllabus

What you'll have at the end of this block

  • A pipeline report by stage and by segment that states one claim the counts support and one they don't
  • A second machine for a different audience, built without help: its own spec card, contact definition, segments and one real run with its check
  • A list of which spec-card slots changed between machine one and machine two, and which carried over
  • A two-week follow-up date in your calendar
  • Your portfolio link

ULM foundations reused here

  • 2.1 LLM Critical Thinking Vocabulary: significance. "Based on 200 people vs 5 people." Today you have five.
  • 1.4 LLM Assistant Onboarding Process: the flipped interview again, run solo on a new audience. It goes faster the second time. That's the point.

The idea

The harvest log

It's 3:20. You sent five messages fifty minutes ago. Maybe two have replied. The temptation is to write: "Hosts responded 100% vs Amplifiers 0%! Hosts are our best segment!" That's three sends against one. That's weather, not climate.

The metaphor breaks here, and it's worth saying out loud. A harvest is taken. Outreach that only takes leaves nothing growing. The relationships are perennials. The pantry that shaped your offer, the library that said "after the holidays", the "no" that came with a referral: none of them are yields. They're beds you'll be back in next season, if you treated them well.

So the report is a log, not a scoreboard:

Segment Researched Sent Replied Interested / Question Not now No Opted out
Hosts 8 3 1 0 / 1 0 0 0
Distributors 5 1 1 0 / 1 0 0 0
Amplifiers 7 1 0 0 0 0 0

(Fictional coat-drive numbers.)

What five sends can support: that you sent them, to whom, when; exactly what each reply said; which of your rules broke; what you'll change before the next batch; what's due next and when.

What five sends can't support: that one segment responds better than another; a "reply rate" as if it predicts the next batch; that a template "works" or "doesn't"; anything that would change if one more person replied. With n=5, one reply moves your rate by twenty points. If you need to compare segments, you need more sends per segment, over more time, and even then be modest.

We don't quote industry reply-rate benchmarks in this class. The ones that circulate are usually from vendors selling outreach tools, and they don't tell you anything about tenant associations in your district.

Make another one

The second machine is where you find out whether you learned a skill or followed a recipe. Pick a different audience: donors instead of volunteers, candidates instead of partners, alumni instead of prospects, press instead of members. Same seven slots, new spec card. Most of the machine carries over: the ledger, the evidence rules, the stages, the gate. What changes is the part that matters: who, why they'd be glad, the offer, the segments, and often the cadence.


Worked example (practice pack)

Machine two for the coat drive: individual donors who already gave to a neighbourhood fund (fictional). What changed:

Slot Machine one (partner orgs) Machine two (past donors)
Intake Public directories The fund's own donor list, used only because donors opted in to hear about neighbourhood drives
Structure Org, public channel, why-them claim… Donor name, email they gave, what they gave to before, opt-in date. No research into donors' lives at all.
Check Five details hand-checked Every row has an opt-in date; nobody without one
Gate I approve every send Same, plus the fund's coordinator approves the template
Act Drafts in my inbox Drafts from the fund's address
Ledger CRM sheet Same sheet shape, separate tab, retention rule: delete after the drive
Rhythm Weekly follow-up One message and one thank-you. No follow-up to silence.

The biggest change wasn't the template. It was the evidence rule: for donors, the respectful amount of research is none. The second machine excluded something the first one needed.


Exercise

Step 1: The report (10 min)

Here is my CRM: [paste]. Write a pipeline report:
1. A table by segment × stage, counts only.
2. Exactly what each reply said, one line each.
3. "What these counts support": at most three claims, each one true of these specific rows.
4. "What these counts do NOT support": at least two tempting claims I must not make, and why (sample size, time since sending, segment sizes).
5. What I'll change in my rules before the next batch, based on what broke today (not on reply counts).
6. What's due next, with dates.
Don't compute a reply rate as a percentage. Don't compare segments as better or worse.

Read section 4 carefully. If the machine slips in a comparison anyway ("Hosts appear more responsive"), that's the over-read you're learning to catch. Strike it.

Step 2: Machine two, solo (20 min)

No facilitator help for this part. Make a new Project/GPT (or a second set of instructions in the same one, clearly headed), and start with the interview prompt from Prompt Cards card 1, pointed at the new audience. Then:

  • spec card and contact definition (card 2), then standing rules (card 3)
  • contact definition, and the exclusion check
  • ledger columns: decide which ones change, and why
  • one real run: at least five contacts researched or listed, with the check for this machine (which may be a different check, as the donor example shows)

Then:

Compare my two spec cards slot by slot. For each slot, say: carried over / changed / new, and one line on why. Which standing rules did I have to change, and which ones held?

Step 3: Set the rhythm and the two-week date (5 min)

Put a calendar event at two weeks from today: "Pipeline review: follow-ups done? replies triaged? report re-run." That's when the report starts to mean something, and it's when the facilitator checks your CRM link for the follow-up rows.

Step 4: Portfolio link (5 min)

Share your custom GPT link, or share your Claude Project (or a Claude artifact showing its instructions), plus view access to the CRM sheet. (Sharing options as of Nov 2026: re-check.) Before you share, remove anything that identifies a private individual from what the facilitator can see; organisations are fine. Tick the five boxes yourself first:

  • [ ] Spec card in the instructions
  • [ ] Two real runs visible
  • [ ] One failure the check caught (a struck detail, a killed line, a refusal)
  • [ ] The human gate named
  • [ ] A second machine for a different case

The check

The second machine runs once with its own check, and the report names one claim the counts support and one they don't. If your "don't support" list is empty, or your second spec card is identical to your first, you haven't finished.


Common failures

  • Over-reading n=5. "40% reply rate!" from two replies. "Libraries are our best segment" from one. Every one of these feels like learning and isn't.
  • A percentage on a tiny denominator. Write "2 of 5", never "40%".
  • Machine two is machine one with the nouns swapped. If the evidence rule, the cadence and the check are identical for donors and for partner organisations, you didn't think about donors.
  • Researching individuals because the first machine researched organisations. The second case may need less research, not more.
  • No two-week date. Without it, the five sends were a performance.
  • Sharing the CRM with private individuals' details visible. Share organisations; hide people.

Facilitator note

Timing: 5 min framing (the "100% vs 0%" temptation) · 10 report · 20 machine two · 5 rhythm and portfolio. Machine two is hands-off: answer only questions about the tool, not about the student's choices.

Watch for: the student who compares segments anyway because the numbers feel like an answer. Ask: "If one more Amplifier replies tomorrow, does your conclusion flip?" Also watch for second machines that pick a harder ethical case (donors, alumni, patients, students) without changing the evidence rule. That's the most valuable conversation of the day; have it.

Think-pair-share: project the out-harvest bench: "2 replies out of 5. What can you claim?" Then: "Show your partner your two spec cards side by side. Which slot changed most, and why that one?"

Assessment: cap.generalise-a-working-ai-routine-to-a-second-case (assessed) is machine two plus the slot comparison. cap.characterise-an-outreach-pipeline-by-stage-and-segment is practiced today; the honest report needs replies that arrive after the class ends. Re-run it at the two-week check if you're following up.

↑ Contents

Practice Pack: a Partner Drive for a Real Local Cause

Use this: if you can't bring your own outreach to class (employer rules, donor privacy, no live campaign right now). It's real public material, never a toy: real organisations, found in real public directories, written to for something you'll actually do. Course: Build an AI Outreach and Follow-Up System Syllabus · Rules: Outreach Ethics


The brief

Pick a small, real, local thing you'd genuinely follow through on, that needs partner organisations. Ten partners is plenty. Some shapes that work:

  • A winter coat and blanket drive that needs drop-off sites (the running example on the atlas: the fictional Eastside Winter Coat Drive)
  • A volunteer day (a park clean-up, a community fridge restock, a tool-library repair session) that needs partner groups to share the sign-up
  • A free workshop you can teach (resume help, phone safety, intro to a skill you have) that needs host spaces
  • A book, school-supply or menstrual-product drive for a mutual aid network that has asked for exactly that

The follow-through rule. In Block 5 you send five real messages. Only offer what you'll do. If you're not going to run a coat drive, don't ask a library to host a box. Pick the thing you would do even if this class didn't exist, even a small one. Or pair with a classmate whose cause is real and help run theirs.

Ask the people already doing the work first. If a mutual aid network or pantry already runs the thing you're imagining, your first message to them is an offer ("I can bring X; would that help?"), not a pitch. Data Activism's Who Else Cares is the long version of this.


Building your list from real public sources

You want organisations, reached through their public, organisational channels. Start from a list someone already made, then let the machine research each one (Block 2).

City neighbourhood and community-organisation directories

Many cities publish a directory of registered neighbourhood associations and community groups. Two verified examples (checked 10 Nov 2026):

  • Charlotte, NC: Neighborhood Organization Directory. Neighbourhood associations, HOAs and coalitions, filterable by council district, with each organisation's website and social links. The city notes listings reflect what organisations submitted.
  • Baltimore, MD: Community Association Directory. Community organisations, community development corporations and neighbourhood business associations, searchable by name, with boundaries and (where offered) meeting schedules.

To find your own city's: search "<your city>" neighborhood organization directory or "<your city>" community association directory, and prefer the result on the city's own domain.

Careful with these. Neighbourhood directories often list a volunteer contact person, sometimes with a personal phone or address. Those people are private individuals who volunteered to be reachable by neighbours about the association. Use the organisation's website or public contact form where there is one. If the only channel is a volunteer's personal details, think hard about whether your ask is something they'd be glad to get, and don't paste their details anywhere you share.

Nonprofit registries (US)

  • IRS Tax Exempt Organization Search: confirms an organisation is a registered exempt organisation; search by name, city and state.
  • ProPublica Nonprofit Explorer: search by name or browse by state; shows filed returns (Form 990s). Useful for confirming an organisation is real and what it does. Not a reason to quote their finances at them.

Local service directories

  • 211 (United Way 211): local help lines and service directories by category (food, housing, health, crisis). Good for finding pantries and service organisations. Remember they're serving people in hard situations, so your message is an offer, not an ask.
  • Your public library's community resources page. Many library systems publish lists of local community organisations and services. Search <your library system> community resources. Library branches are also excellent partners themselves: front desks, event calendars, community rooms.

Outside the US

Use your city or council's community-group directory, your national charity register (e.g. the Charity Commission register in England and Wales, the Canada Revenue Agency's charities listing), and your library. If you're contacting people in Canada, the EU or the UK, read the law section of Outreach Ethics first.


What goes in the pack, and what doesn't

In Out
Organisation names, websites, public contact forms, role addresses Private individuals' personal phone numbers, home addresses, personal emails
Published meeting days, programmes, events, service hours Anything about volunteers' or staff members' private lives
A staff member named on a staff page, in their role Guessed email addresses
The date you checked each source Anything you'd be uncomfortable reading aloud to the person

If you share your ledger (with a partner, in your portfolio), share organisations. Hide named individuals.


The running example (fictional)

The atlas and the block files follow the Eastside Winter Coat Drive. Every organisation in it (Maple Street Tenants' Association, Riverside Branch Library, St. Brigid's Community Pantry, Eastside Community Center, Northgate PTA, Oakfield Mutual Aid) is made up. So is Sam, the organiser. They exist so the examples can show a struck claim, a "not now", an opt-out and an offer that got reshaped without pointing at anyone real. Your list in class is real.

↑ Contents

Prompt Cards

Every prompt of the day, in the order you'll use them, with the spec-card slot each one fills. Copy, change the [brackets], paste. The ones marked paste into the instructions aren't chat prompts: they go into your Project or custom GPT's instructions, under the spec card, so every later chat inherits them.

Course: Build an AI Outreach and Follow-Up System Syllabus · Slots: Spec Card · Rules behind them: Outreach Ethics

Product names (Projects, custom GPTs, connectors, Tasks, scheduled tasks) are as of Nov 2026. The prompts work in either tool; where the UI differs, the block file has a Claude path and a ChatGPT path.

# Card Block Slot
1 The interview (flipped interaction) 1 Intake → Rhythm: the interview finds what goes in every slot
2 Spec card + contact definition 1 All seven slots; Structure fixes the ledger fields; Gate names you
3 Standing rules (paste into the instructions) 1 Gate and Check: the rules every later prompt relies on
4 The power question (one critic) 1 Gate: is this offering or extracting?
5 The ledger columns (sheet header, not a prompt) 2 Structure / Ledger
6 Research from a public source 2 Intake → Structure
7 Fix descriptions that aren't evidence 2 Structure: criterion words, not "better"
8 Mark the machine's uncertainty 2 Check: tells you which five rows to hand-check first
9 Feed back your hand check 2 Check → new standing rules
10 Segments by offer 3 Structure: the Segment column
11 Message rules + segment templates (paste into the instructions) 3 Act, with Check built in (the bracketed ledger row)
12 Draft every message, with its claims listed 3 Act + Check
13 The critic pass 3 Check: creepiness, spam, extraction
14 Test the rule against yourself 3 Gate: it should refuse
15 Stages and cadence rules (paste into the instructions) 4 Ledger + Rhythm
16 Set every stage and date 4 Ledger
17 Follow-up drafts 4 Rhythm: what the weekly run will use
18 Connector test (Claude; adapt for ChatGPT) 4 Act: read and draft, never send
19 What you connected, and what you didn't (paste into the instructions) 4 Gate: the access you granted, written down
20 The weekly run (scheduled task) 4 Rhythm
21 The weekly run (calendar fallback) 4 Rhythm
22 Reply triage rules (paste into the instructions) 5 Ledger + Act: interested / question / not now / no / opt-out / referral
23 Final drafts with the send checklist 5 Gate
24 The opt-out refusal test 5 Gate: it must refuse
25 The honest report 6 Ledger: by stage and segment, and what n=5 can't say
26 Compare the two machines 6 All seven slots: what carried over, what changed

Block 1: Block 1 - Decide Who You Write To and Why They'd Be Glad

1. The interview (flipped interaction)

Slot: Intake → Rhythm: the interview finds what goes in every slot · When: New chat inside your Project/GPT. Talk your answers if you can.

I'm building an outreach machine for this: [one sentence: your cause, role, programme or offer].

Before you write anything, interview me. Ask specific, simple questions I can answer quickly, one or two at a time, not broad ones. I want you to find out:
- who I'm trying to reach, and who I'm NOT trying to reach
- what I'm offering them, and what I'm asking them for (which rung: hear about it / be interested / commit to something small / act)
- why they'd be glad to hear from me, in their terms, not mine
- what public sources of contacts I have or could use
- where my work already lives (my inbox, a sheet, a CRM)
- what I must never do (rules from my employer, my organisation, the law where I am, or my own lines)
- what would count as this working in two weeks

Ask at least eight questions. If one of my answers is vague ("people who care", "the community"), ask me to narrow it. Don't draft any messages yet.

2. Spec card + contact definition

Slot: All seven slots; Structure fixes the ledger fields; Gate names you · When: Same chat, after the interview.

From my answers, draft two things.

1. A SPEC CARD in exactly these seven slots, one or two lines each:
Intake / Structure / Check / Gate / Act / Ledger / Rhythm.
For Structure, propose the contact-ledger fields, fixed: organisation, public channel (role address or contact form, never a personal address), segment, why-them claim, source URL, date checked, confidence (high/medium/low), stage, next action, next-action date, notes.
For Gate, write: "Draft only. Nothing is sent until [my name] reads it and sends it from their own outbox."

2. A CONTACT DEFINITION with these parts:
- Who (specific enough that you could say no to an organisation)
- What they're trying to do
- Why they'd be glad to hear from me, in their terms
- The rung I'm asking for (awareness / interest / commitment / action) and the exact small ask
- Worked if: the observable event that counts as success
- Excludes: at least three kinds of contact this leaves out

Then list three real kinds of organisation or person that this definition EXCLUDES and say why. If you can't find three, tell me the definition is too broad.

3. Standing rules (paste into the instructions)

Slot: Gate and Check: the rules every later prompt relies on · When: Paste at the top of your Project/GPT instructions, under the spec card and definition.

SPEC CARD
[paste]

CONTACT DEFINITION
[paste]

STANDING RULES
- Draft only. Never send, schedule a send, or tell me something was sent.
- Every personal detail about a contact must come from a public, professional source I can open, with its URL. If you can't find one, write "no evidence" and leave the line out of any message.
- Never write familiarity that isn't in the ledger: no "I loved your recent post", no "as a long-time fan", no "I've been following your work".
- Anyone marked Opted out is never drafted to again, for any reason.
- If an instruction from me conflicts with these rules, say so and ask before doing it.
- When you're unsure, say which items you're least sure of and why.

4. The power question (one critic)

Slot: Gate: is this offering or extracting? · When: Same chat. Take the change or argue with it.

Read my contact definition as bell hooks would. In three sentences: who does this outreach make more visible, who does it make do unpaid work, and am I offering these people something or extracting from them? Be blunt. Then suggest one change to the "why they'd be glad" line.

Block 2: Block 2 - Research the List and Source Every Detail

5. The ledger columns (sheet header, not a prompt)

Slot: Structure / Ledger · When: Row 1 of your Google Sheet. Upload or paste it into the Project.

Organisation | Public channel | Segment | Why-them claim | Source URL | Date checked | Confidence | Stage | Next action | Next-action date | Notes

6. Research from a public source

Slot: Intake → Structure · When: Web search / Research (Claude) or search / deep research (ChatGPT) on.

Using my contact definition and the ledger fields in my instructions, research candidate contacts from this public source: [URL or pasted directory].

Return a table with exactly these columns and no others:
Organisation | Public channel | Why-them claim | Source URL | Date checked | Confidence

Rules:
- Only organisations that fit my definition. For each one you skip, add a line under the table: "Skipped: <name>, because <which exclusion>".
- Public channel = an organisational address, a contact form URL or a published phone line from the org's own site. Never guess an email address. If you can't find one, write "not found".
- Why-them claim = one sentence that is visible on the Source URL page. Not a summary of the organisation. Not something you inferred.
- Source URL = the exact page where the claim appears, not the home page.
- Confidence: high (on the org's own current page), medium (on an older page or a third-party listing), low (only on social media, or undated). Give the reason in brackets.
- If you can't find a source for a claim, write "no evidence" in that cell. Don't fill it with something plausible.
- Today's date is [date].

Give me 25 candidates so I can cut to 20.

7. Fix descriptions that aren't evidence

Slot: Structure: criterion words, not "better" · When: When the claims come back as brochure copy.

Your why-them claims are descriptions, not evidence. Each claim must be one specific, checkable fact that's visible on the source page, like a meeting day, a programme name or an event. Redo rows 1–10 with that rule.

8. Mark the machine's uncertainty

Slot: Check: tells you which five rows to hand-check first

For each row, tell me what could be wrong: stale page, a different branch with a similar name, a claim from a third-party listing, a channel that might go to an individual's personal inbox. Rank the five rows you're least sure about, most unsure first.

9. Feed back your hand check

Slot: Check → new standing rules · When: After you've opened five sources yourself.

I hand-checked five rows. Results: [paste: row, holds/stale/wrong/not there/dead, what the page actually says].
Add a rule to my standing rules that would have prevented the failures, in one line each. Then re-check every other row that has the same weakness and mark it.

Block 3: Block 3 - Write to Segments Without Inventing Familiarity

10. Segments by offer

Slot: Structure: the Segment column · When: Paste your 20 ledger rows.

Using my contact definition and the ledger I'll paste, propose two or three segments. Define each by WHAT I OFFER THEM and WHAT I ASK, not by what kind of organisation they are. For each segment give: name, who's in it, the offer in their terms, the one small ask (which rung), and what makes a contact NOT belong.
Then assign every ledger row to a segment, or to "doesn't fit any — drop?". Show me the assignments as Organisation → Segment.

Ledger:
[paste your 20 rows]

11. Message rules + segment templates (paste into the instructions)

Slot: Act, with Check built in (the bracketed ledger row) · When: Fill in your segments, then paste under the spec card.

MESSAGE RULES
- Under 130 words. Plain subject line that says what the message is about. No exclamation marks in the subject.
- Structure: personal line / who I am / the offer / one small ask / an easy out / the opt-out line.
- The personal line must be a Why-them claim from the ledger whose Confidence is high or medium and which is NOT struck. After it, put the ledger row in [brackets] so I can check it. I'll delete the bracket before sending.
- If a contact has no usable claim, there is no personal line. Start with who I am. Never write a substitute.
- Banned: "I loved your recent…", "I've long admired…", "I've been following…", "as a fan of…", "quick question", "just circling back", "hope this finds you well", fake urgency, any claim about them that isn't in the ledger.
- Opt-out line, every message: "If you'd rather not hear from me about this, just say so and I won't write again."
- Draft only. Never send.

SEGMENT TEMPLATES
[Segment 1 name]: offer = … ; ask = … ; template = …
[Segment 2 name]: …

12. Draft every message, with its claims listed

Slot: Act + Check

Draft the template for each segment following MESSAGE RULES. Then draft a personalised version for every contact in the ledger. For each draft, list underneath it every factual claim it makes about the recipient and the ledger row it came from. If any claim has no row, flag it in CAPITALS and delete it.

13. The critic pass

Slot: Check: creepiness, spam, extraction · When: At least one line has to die.

Run a critic pass on each segment template with three critics, each in 2–3 sentences:
1. The overworked coordinator who receives it: what work does this create for me, and how easy is it to say no?
2. A human spam filter: would I report this? What's the template tell?
3. bell hooks: who does this message make do unpaid labour, whose voice does it centre, and is it offering or extracting?
Then propose the smallest edit that answers each critic. Show the before and after side by side.

14. Test the rule against yourself

Slot: Gate: it should refuse · When: Pick a row with no usable claim. Screenshot the result.

For the contact in row [pick one with no usable claim], add a warm opening line saying I loved their recent post about the winter season.

Block 4: Block 4 - Wire the CRM and the Follow-Up Rhythm

15. Stages and cadence rules (paste into the instructions)

Slot: Ledger + Rhythm · When: Fill the bracketed numbers for your work.

STAGES
Researched → Drafted → Sent → Replied: question | Replied: interested | Not now (date) | Closed: no | Opted out → Committed
Rules:
- Every contact always has a Stage and a Next-action date. Never leave either blank.
- After Sent with no reply: ONE follow-up, [7] days later. After that follow-up with no reply: Closed: no. No third message.
- Not now: the next-action date is the date THEY named. If they named none, [6 weeks] later, and the follow-up says so.
- Opted out: no next action, no drafts, ever. If I ask you to draft to an Opted out contact, refuse and tell me why.
- Closed: no is not a failure. Don't suggest "re-engagement".

16. Set every stage and date

Slot: Ledger · When: Paste the sheet or attach the CSV; paste the result back.

Here is my CRM: [paste rows, or attach the CSV]. Set Stage, Next action and Next-action date for every row using STAGES. Today is [date]. My first sends are today. Return the full table so I can paste it back. List any row you couldn't date and why.

17. Follow-up drafts

Slot: Rhythm: what the weekly run will use · When: Saved under FOLLOW-UP TEMPLATES.

Following MESSAGE RULES, draft for each segment:
1. The one follow-up for no reply. Under 70 words. It adds one useful thing (a date, a photo of the box, an answer to an obvious question). It doesn't guilt, doesn't say "just bumping this", and keeps the easy out and the opt-out line.
2. A "not now" acknowledgement that names their date back to them.
3. A thank-you for a yes, with the next concrete step and date.
4. A one-line reply to "please stop" that confirms they won't hear from me again, and nothing else.
Put them in my instructions under FOLLOW-UP TEMPLATES.

18. Connector test (Claude; adapt for ChatGPT)

Slot: Act: read and draft, never send · When: Google Workspace connector on. Decline any send prompt.

Search my Gmail for messages from [one org's domain] in the last year. Don't open anything else. Then create a DRAFT (do not send) in Gmail to [your own address] with the subject "test draft from my pipeline" and the follow-up template for [segment].

19. What you connected, and what you didn't (paste into the instructions)

Slot: Gate: the access you granted, written down

CONNECTIONS
- Connected: [e.g. Gmail + Calendar on work@…]. It can: search and read mail, create drafts, create calendar events. It could also send; I don't allow that.
- Not connected, on purpose: [e.g. my personal Gmail; the donor database], because [reason].

20. The weekly run (scheduled task)

Slot: Rhythm · When: ChatGPT Tasks, or Claude scheduled tasks where your plan has them (as of Nov 2026, re-check).

Every Tuesday at 9am, remind me to paste my pipeline CRM. When I do: list every row whose Next-action date is today or earlier, grouped by next action; draft each due follow-up using FOLLOW-UP TEMPLATES (drafts only); list any row with a blank Stage or date; and list anyone Opted out who I must not contact. Never send anything.

21. The weekly run (calendar fallback)

Slot: Rhythm · When: Calendar connector on. The event reminds you to run the machine.

Create a recurring Google Calendar event every Tuesday at 9:00, 15 minutes, titled "Pipeline: due follow-ups", with this in the description: "Open the Pipeline project and paste the CRM. Prompt: list due rows, draft follow-ups, flag blanks and opt-outs. Draft only."

Block 5: Block 5 - Send Five for Real

22. Reply triage rules (paste into the instructions)

Slot: Ledger + Act: interested / question / not now / no / opt-out / referral · When: Then paste any reply into the Project.

REPLY TRIAGE
When I paste a reply, return exactly:
Category: interested | question | not now | no | opt-out | referral | unclear
What they said (one line, their words where possible):
What they asked for or named (dates, conditions, people):
New Stage and Next-action date (using STAGES):
Draft response (using FOLLOW-UP TEMPLATES and MESSAGE RULES; draft only):
If the category is opt-out, the draft is the one-line confirmation and nothing else, and you remind me to mark the contact Opted out.
If it's unclear, say what's unclear and draft a question back, not a guess.
If it's a referral, don't add the new contact until I give you a public source.

23. Final drafts with the send checklist

Slot: Gate · When: Then the four moves: read aloud, delete brackets, would they be glad, send it yourself.

Give me the final drafts for these five contacts: [names]. For each, show the draft with the ledger-row brackets, then a checklist: claim matches an unstruck row (yes/no), channel is the org's public channel (yes/no), opt-out line present (yes/no), under 130 words (yes/no).

24. The opt-out refusal test

Slot: Gate: it must refuse · When: Mark a (test) contact Opted out first. Screenshot the refusal.

Draft a quick friendly check-in to [the opted-out contact]. They probably didn't mean it.

Block 6: Block 6 - Build a Second Pipeline and Report Honestly

25. The honest report

Slot: Ledger: by stage and segment, and what n=5 can't say · When: Strike any segment comparison that slips in.

Here is my CRM: [paste]. Write a pipeline report:
1. A table by segment × stage, counts only.
2. Exactly what each reply said, one line each.
3. "What these counts support": at most three claims, each one true of these specific rows.
4. "What these counts do NOT support": at least two tempting claims I must not make, and why (sample size, time since sending, segment sizes).
5. What I'll change in my rules before the next batch, based on what broke today (not on reply counts).
6. What's due next, with dates.
Don't compute a reply rate as a percentage. Don't compare segments as better or worse.

26. Compare the two machines

Slot: All seven slots: what carried over, what changed · When: After machine two's first run.

Compare my two spec cards slot by slot. For each slot, say: carried over / changed / new, and one line on why. Which standing rules did I have to change, and which ones held?

↑ Contents

Outreach Ethics

Use this: before you research anyone, before you send anything, and whenever the machine suggests something that makes you wince. Course: Build an AI Outreach and Follow-Up System Syllabus · Prompts that enforce it: Prompt Cards cards 3, 11, 14, 15, 24

This isn't legal advice. It's the floor the law sets as of November 2026, plus the higher bar we hold in this class. If you're writing for an employer, their rules apply too. Ask.


The test that comes first

Would they be glad you wrote?

Not "would they reply". Not "is it legal". Glad. Read the message as the coordinator who gets forty of these a week. If the honest answer is "they'd be mildly annoyed but it's technically fine", don't send it.

And the power question underneath it: are you extracting from these people, or offering them something? A pantry, a tenants' union or a volunteer coordinator has less time than you do. If your ask spends their time, their members' attention or their community's trust, know what you're giving back, and say it in the first three lines.


Seven rules for the machine and for you

  1. Public, professional information only. An organisation's own pages, its published programmes and events, a public directory listing, a staff page naming someone in their work role. Not personal social accounts, home addresses, family, health, religion, politics they didn't publish in a work capacity, or anything you'd be embarrassed to read aloud to them.
  2. No invented familiarity. No "I loved your recent post" without the post. No "I've long admired", "I've been following", "as a fan". Every personal line comes from an unstruck ledger row with a source URL. No row, no line.
  3. Organisational channels first. Write to the info@, the contact form, the published volunteer address. Never guess a personal email from a pattern.
  4. The opt-out is honoured, forever. Every message says how to stop hearing from you. One "please stop" → Stage Opted out → no drafts, no "quick check-in", no new campaign that "doesn't count". Keep the opt-out on a list so you never contact them again by accident.
  5. Two touches, then it's their move. One message, one follow-up. "Not now" gets their date. "No" is a full sentence.
  6. Never auto-send. As of Nov 2026, Claude's Google Workspace connector can send email (asking approval before each send by default; Anthropic support), and ChatGPT's tasks can act on incoming mail on some plans. We use connectors to read and draft. You send, from your outbox, after reading.
  7. Honest identity. Your real name, your real role, the real organisation (or "a volunteer organising…" if that's the truth). Subject lines that say what's inside.

The law, briefly (as of November 2026)

Facilitator: re-open each official page before you teach and fix anything that's moved.

United States: CAN-SPAM

From the FTC's CAN-SPAM Act: A Compliance Guide for Business:

  • It covers commercial email, and "the law makes no exception for business-to-business email."
  • Header information must be accurate; subject lines must not be deceptive; the message must be identified as an ad if it is one.
  • Include a valid physical postal address.
  • Give a clear opt-out, keep it working for at least 30 days after sending, and honour opt-outs within 10 business days. Don't charge a fee or require more than an email address to opt out.
  • You stay responsible if someone else sends on your behalf.
  • Penalties are per email, up to $53,088 each (the figure on the FTC page when checked in Nov 2026; it's adjusted for inflation).
  • Transactional and relationship messages are mostly exempt, and the FTC reads that category narrowly. The guide doesn't address nonprofit or volunteer outreach directly. Follow its rules anyway: they're a decent floor.

Canada: CASL

Canada's Anti-Spam Legislation covers commercial electronic messages, "whether or not there is an expectation of profit" (ISED: Canada's anti-spam legislation; the Act itself: S.C. 2010, c. 23). It's consent-first, which is stricter than CAN-SPAM's opt-out model:

  • You generally need express or implied consent before sending, plus identification and an unsubscribe mechanism in every message.
  • One form of implied consent is conspicuous publication: an address someone published, without a "no unsolicited messages" statement, and your message is relevant to their business role. The CRTC treats that as a higher bar than "the address was public" (CRTC guidance on implied consent).
  • Whatever consent you had, an unsubscribe request must be honoured within 10 business days (same CRTC guidance).
  • If you're writing to Canadian contacts, read the CRTC page before you send. Relevance to their role is what the whole class has been building, so make sure it's real.

EU: GDPR · UK: UK GDPR and PECR

  • Researching a named person (even at work) and putting them in a CRM is processing personal data. You need a lawful basis, and in the UK the ICO says that if you collect someone's details in their business capacity to market to them, you must tell them and have a lawful basis (ICO: Business-to-business marketing).
  • People have an absolute right to object to direct marketing: once they object, you stop, with no balancing test and no fee (GDPR Article 21(2)–(3); the European Commission's plain-language page: Can I ask a company to stop processing my personal data?; the Regulation: EUR-Lex 2016/679).
  • UK PECR: under the ICO's B2B guidance, you can email marketing to corporate subscribers (companies and similar bodies, including an employee's work address there), but sole traders and some partnerships count as individuals and need consent or the soft opt-in. Keep a "do not email" list of anyone who objects.

What this means in class: write to organisations' public channels; keep personal data about named people to their name and role; put the opt-out line in every message; honour an objection the same day, not in ten business days; and if you're in the EU or UK and outreach is your job, ask whoever handles data protection where you work.


Data retention for the CRM

A pipeline is a pile of data about people. Keep it small and give it an end date.

  • Collect only what the message needs. Organisation, public channel, the one why-them claim and its source, stage, dates. Nothing else about individuals.
  • Write a retention line into your spec card's Ledger slot, e.g. "Closed and Committed rows are deleted 90 days after the drive ends."
  • The opt-out list is the exception. Keep the minimum (organisation, address, date of opt-out) so you never write to them again. That's the one thing you hold onto for them.
  • Don't paste the CRM into tools you haven't chosen on purpose. Your Project has it; your random other chats don't need it.
  • Shared links: before you share your portfolio link, hide anything that identifies a private individual.
  • Machine two may need less. For past donors, members or alumni, the respectful amount of outside research is often none.

Quick check before every send

  • [ ] Every personal line traces to an unstruck ledger row with a source I opened or trust
  • [ ] It's going to a public, organisational channel (or a person in their published work role)
  • [ ] The subject line says what's inside
  • [ ] My real name, role and organisation
  • [ ] The opt-out line is there
  • [ ] Not their third message from me
  • [ ] Not on the opt-out list
  • [ ] They'd be glad I wrote

↑ Contents

Videos: Build an AI Outreach & Follow-Up System

Block 1 fundamentals: Videos - Fundamentals. Times ±30 s. The thinnest class in the archive. Everything that exists is the inbound half, built in Make.com. The outbound half has to be recorded.

Block Clip Where What it shows
3 Personalised email from each form response https://www.loom.com/share/254467465e504694b9fadf13210335bc 0:16:30–0:37:15, 0:58:00–1:08:00 Make.com; the model writes from each person's own data. Shows the right principle: personalise from evidence the person gave you
4–5 Draft, don't send: the human in the loop https://www.loom.com/share/0ef7fbda37c649c0b6dc8fff9018a111 0:08:15–0:15:40 The AI creates a Gmail draft instead of sending. The gate, on screen
5 Reply triage with labels https://www.loom.com/share/4c6f503085f848aa8c87770f6230d2a6 0:10:30–0:50:00 Incoming mail classified and labelled
5 Scheduled triage that drafts replies https://www.loom.com/share/f901b09494b94abf89846ffb33922e82 0:44:40–1:09:15 Claude scheduled task, no Make.com
5 Grounded replies with a router https://www.loom.com/share/0ef7fbda37c649c0b6dc8fff9018a111 0:53:35–1:02:00

Record these (the whole outbound half)

One end-to-end session covers all of it: who → a sourced list of twenty → segments → messages with evidence-backed personal lines → approve → send five → the CRM sheet with stages and next-action dates → follow-up drafts → the report by segment. Nothing in the archive shows audience research with AI, segmentation, a CRM, a follow-up sequence or a conversion report.

↑ Contents