{"id":67141,"plugin_id":"plugin_asdk_app_6aa191664d448191b6646015b0fefe94","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:05:53.052Z","digest":"56f25866d013628b29423ba9d2913e4557b75a617edbb470f075b933d67eb993","against":null,"payload":{"description":"Apply ACA prompt-mode personalization patterns to outbound campaigns. Use when the user wants scalable personalization, dynamic campaign prompts, first-line personalization, AI-written DMs, or QA samples before launch. Reads real contact fields, writes step prompts, and QAs samples in chat before the user pastes them into the ACA builder.","included_files":[],"name":"aca-personalization-pattern","skill_md_contents":"---\nname: aca-personalization-pattern\ndescription: \"Apply ACA prompt-mode personalization patterns to outbound campaigns. Use when the user wants scalable personalization, dynamic campaign prompts, first-line personalization, AI-written DMs, or QA samples before launch. Reads real contact fields, writes step prompts, and QAs samples in chat before the user pastes them into the ACA builder.\"\nlicense: MIT\ncompatibility: Requires the ACA connector (OAuth sign-in, no API key).\nmetadata:\n  author: ACA\n  version: \"1.1\"\n  homepage: https://www.automatedclientacquisition.com/mcp\n---\n\n# ACA personalization pattern\n\nPersonalize at scale with the ACA builder's Analyze contact step followed by prompt-mode messages. This skill checks which fields the contacts really have, writes tightly constrained prompts, and QAs sample outputs against real contacts before the user puts the prompts into a campaign.\n\n## Rules\n\n- Use the ACA connector only. Never ask for vendor API keys or run SQL/API calls.\n- Put an Analyze contact step before personalized messages when possible, so prompts have company and role context.\n- Prompts must constrain length, tone, CTA, and prohibited claims.\n- Samples use only fields ACA returns for real contacts. Never invent details about a person or company to make a sample look better.\n- The connector cannot edit campaigns. Never say prompts were applied; give the page where the user pastes them.\n- QA samples before the user activates anything.\n\n## Workflow\n\n### 1. Inspect the target\n\n- Campaign: `list_campaigns`, then `get_campaign` for its `lead_list_id`, status, and step count.\n- List: `get_lead_list` with a small `limit` to get member `contact_id`s and the `lead_count`.\n- Sample 3 to 5 members with `get_contact`.\n\nIf the user has no list yet, use `search_contacts` to find a few representative contacts, or route to `aca-find-leads`.\n\n### 2. Map available data\n\nFrom the sampled contacts, record which fields are filled and how often: first name, job title, company, lead score, tags, stage, custom fields, recent activity. Analysis data from the Analyze contact step is only available at send time inside the campaign, so treat it as optional context in prompts, never as guaranteed.\n\nSet risk:\n\n- Low: title and company present on nearly every contact.\n- Medium: gaps in title or company; prompts need fallbacks.\n- High: mostly names only; personalization will be guesswork. Recommend enrichment or a simpler, non-personalized message.\n\n### 3. Write step prompts\n\nFor each step (connection request, LinkedIn DM, email, follow-up), write a prompt that states:\n\n- Length limit (for example under 250 characters, or 2 sentences)\n- Tone (peer, plain, no emojis, no flattery)\n- What to reference, in priority order, with a fallback when a field is missing\n- What never to do: invent facts, mention posts or news it has not been given, claim familiarity, quote prices\n- The single CTA\n\nExample connection request prompt: \"Write a LinkedIn connection request under 250 characters. Use the contact's job title and company if present; if not, refer to their industry in general terms. One specific business reason to connect. No pitch, no emojis, no compliments.\"\n\n### 4. QA samples\n\nFor each sampled contact, write the message the prompt would produce using only that contact's real fields. Mark any sample where the prompt pushed toward an unsupported claim, and tighten the prompt.\n\n### 5. Hand off\n\nAfter the user approves:\n\n- Paste the prompts into the steps at `https://www.automatedclientacquisition.com/campaigns/{campaign_id}` (draft or paused campaigns), with Analyze contact as the first step.\n- If there is no campaign yet, continue to `aca-launch-outreach`.\n- To keep the pattern as a reference, the user can save it at `https://www.automatedclientacquisition.com/assets?tab=strategies`.\n\n## Output format\n\n```text\nPersonalization pattern: {campaign_or_list}\nSampled: {n} contacts from {list_name}\nData available: {field: filled x of n}\nRisk: {low/medium/high}\n\nStep prompt ({step}):\n{prompt}\n\nSample QA:\n- {contact display_name}: {sample} ({ok | issue})\n\nPaste into: {app link}\n```\n\n## Skill chaining\n\nPreserve the workspace, relevant IDs, the user's brief, approval state, and the prompts when continuing into another ACA skill.\n\n**Upstream**\n- Called by `aca-campaign-copywriting`, `aca-launch-outreach`, or `aca-experiment-design` when scalable personalization is needed.\n\n**Auto-continue conditions**\n- After prompts are drafted: continue to `aca-copy-spam-checker`.\n- QA samples are acceptable and no campaign exists yet: continue to `aca-launch-outreach`.\n- Data is too thin to personalize: continue to `aca-lead-quality`.\n\n**Stop before chaining when**\n- The user has not approved the prompts.\n- The next step is pasting prompts into the ACA app.\n\n**Downstream skills**\n- `aca-copy-spam-checker`: check generated message risk.\n- `aca-launch-outreach`: set up the campaign.\n- `aca-experiment-design`: test personalization against a control.\n\n**Handoff block**\n\n```text\nChain state: {continue|needs_approval|blocked|complete}\nNext skill: {aca-skill-name|none}\nReason: {why}\nCarry forward: {workspace, lead_list_id, campaign_id, sampled contact_ids, prompts, approvals, constraints}\n```\n\n## ACA tools used\n\n- `list_campaigns`, `get_campaign`\n- `get_lead_list`\n- `get_contact`, `search_contacts`\n\n## ACA app pages\n\n- Campaign steps: `https://www.automatedclientacquisition.com/campaigns/{campaign_id}`\n- Save the pattern: `https://www.automatedclientacquisition.com/assets?tab=strategies`\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}