PaperTube ABM Campaign Automation
Overview
PaperTube is executing an Account-Based Marketing (ABM) strategy targeting ~256 companies sourced from ZoomInfo and loaded into Salesforce. The core challenge: ABM requires personalized, company-specific outreach — not bulk email blasts — making manual campaign creation at this scale impractical. The solution is a two-stage AI automation pipeline: (1) generate deep account research reports per company, then (2) use those reports to produce personalized campaign sequences, with campaigns created programmatically via the Salesforce API.
This work is tracked under [1].
Stage 1: AI-Generated Account Research
What It Does
An AI agent (running locally with ~100 MCP servers providing web scraping and document tooling) processes a deduplicated list of target companies and produces a structured research report for each one.
Input: A Google Sheet of ~350 rows (with duplicates) → deduplicated to 256 unique companies, each with company name and website URL.
Output: One Markdown (.md) file per company, saved to a local PaperTube Research/ folder.
Report Contents
Each report covers:
- Company overview (HQ, website, industry)
- Recent product launches, rebrands, or product changes
- Sustainability commitments and packaging strategy
- Distribution strategy and growth signals
- Decision-making unit: key contacts, roles, and recommended engagement order
Why Markdown
Reports are generated as .md files because:
- AI models (Claude, etc.) can read and process Markdown faster than .docx or .pdf
- Clean import into Google Docs via Edit → Paste from Markdown produces fully formatted output (headers, tables, checkmarks) with no manual cleanup
- Files are portable and reusable as inputs to downstream automation steps
Runtime
Each report takes approximately 2 minutes to generate. The agent runs sequentially through all 256 companies, posting progress updates as it goes. Total runtime is several hours for the full batch.
Stage 2: Personalized Campaign Sequence Generation
Once a research report exists for a company, it is fed to Claude with a prompt instructing it to generate a full ABM campaign document for that target. The output includes:
- Strategy summary: primary and secondary contacts to target, who to avoid initially, and rationale
- Sequence overview: 4–5 touches across email and LinkedIn, with specific send-day cadence
- Guardrails: e.g., never send two emails in the same week to the same person; pause and go conversational if a contact engages
- Individual message drafts: subject lines and full body copy for each email; connection note text for LinkedIn touches
Emails are plain-text (no HTML template), which simplifies campaign creation and improves deliverability for cold outreach.
Stage 3: Automated Campaign Creation via Salesforce API
The Problem
Creating 256 individual campaigns manually in Salesforce Account Engagement (Pardot) is prohibitively slow. Each campaign requires: creating the campaign record, creating a folder, and adding the associated emails/list sends.
The Solution
Use the Salesforce REST API to programmatically create campaigns. When Connected Campaigns is enabled (the standard Salesforce configuration), campaigns are created through the Salesforce API and sync automatically to Account Engagement.
Connected App Setup (Completed)
A Connected App named "Asymmetric API Integration" was created in Salesforce Setup:
| Field | Value |
|---|---|
| App Name | Asymmetric API Integration |
| Contact Email | mark.hope@asymmetric.pro |
| Callback URL | https://auto.asymmetric.pro |
| OAuth Scopes | managed_pardot_services, refresh_token |
Credentials retrieved:
- Consumer Key (active)
- Consumer Secret (active)
- Staged Consumer Key / Secret (generated and applied)
- Business Unit ID (from Marketing Setup → Pardot Account Setup)
- Security Token (generated from user profile settings)
Current Blocker
Mark's Salesforce user account requires SSO enablement for Account Engagement before the OAuth connection can be completed. This is a Salesforce admin action.
Owner: Karly to request SSO enablement from the Salesforce admin.
Data Enrichment Requirements
For the automation to generate high-quality personalized sequences, contact records in Salesforce need LinkedIn profile URLs. ZoomInfo data was imported with up to 3 contacts per company, but LinkedIn URLs may not have been included in the initial import due to a missing field.
Action items:
- Add a LinkedIn Profile field to Salesforce Contacts (may already exist as a standard field)
- Re-import ZoomInfo data with LinkedIn URLs mapped to that field
Related Work
- [1] — client overview
- [2] —
papertube.proDNS and email sending configuration - [3] — reusable notes on Salesforce Connected App and OAuth credential retrieval
- [4] — parallel automation work discussed in the same session
Open Action Items
- [ ] Karly: Request Salesforce admin enable SSO for Account Engagement on Mark's user account
- [ ] Mark: Complete Salesforce OAuth connection once SSO is enabled
- [ ] Mark: Build and test campaign creation automation via Salesforce API
- [ ] Karly: Add LinkedIn Profile field to Salesforce Contacts; import ZoomInfo LinkedIn URLs
- [ ] Mark: Schedule call with Parag to discuss website/SEO services expansion