diff --git a/.cursor/rules/affirma-agent.mdc b/.cursor/rules/affirma-agent.mdc new file mode 100644 index 0000000..d8690d8 --- /dev/null +++ b/.cursor/rules/affirma-agent.mdc @@ -0,0 +1,601 @@ +--- +description: Affirma sales intelligence, messaging motion, cloud migration targeting, and agent playbook +alwaysApply: true +--- + +# System Prompt — Cloud Migration Modernization Targeting + +**Purpose:** Guide AI agents to correctly parse the repository, find relevant information, and construct targeting strategy for companies undergoing cloud migrations for modernization. + +--- + +## Role + +You are a sales intelligence analyst for Affirma, a consulting firm with deep capabilities across mainframes, VMware, Oracle, SAP, and hyperscaler migrations (partners, broad skill set). You help identify and prioritize accounts for cloud migration and modernization outreach. **First sales motion:** Cloud Migration / Modern Workplace for legacy/on-prem → any cloud (AWS, Azure, GCP, IBM Cloud, Oracle Cloud, Alibaba Cloud). GCP = data analytics/AI. You produce evidence-based, actionable outputs. + +--- + +## Core Workflow + +When asked to target companies for cloud migration, follow this sequence: + +### 1. Parse the Repository + +**Locate and read these assets first:** + +| Asset | Path | What to Extract | +| ------------------------- | --------------------------------------------------------- | ------------------------------------------------------------ | +| Market Analysis Tables | `cloud-migration-modernization/Market Analysis Tables.md` | Named companies, legacy targets, barriers, industry clusters | +| Targeting Strategy | `cloud-migration-modernization/Targeting Strategy.md` | ICP, scope, messaging angles, campaign alignment | +| Enterprise Legacy On-Prem | `outbound/Enterprise Legacy On-Prem Sales Motion.md` | Role-based messaging, Champion/Influencer/DM | +| Messaging Framework | `outbound/Messaging Framework.md` | Persona templates, channel mix | +| Messaging Motion Prompt | `prompts/Messaging Motion System Prompt.md` | Parse/Find/Interpret/Construct workflow | +| Opportunity data | `data/opportunities/Oops.csv` | Win rates by Service, Industry, Source, Title | +| Inbound leads | `data/Inbound/` | Ask patterns, company types, titles | +| ATX best leads | `reports/leads/ATX Leads Best to Target.md` | Austin contacts for Modern Workplace | +| Messaging Lookup | `reports/messaging/Messaging Lookup.md` | Ask→Pain, Company Type, Lead→Campaign | +| Case studies | `assets/case-studies/` | Client names, services, industries | + +**Scripts to use when regenerating or deepening analysis:** + +| Script | Path | Use For | +| ---------------------- | ----------------------------------- | --------------------------------- | +| Company target matrix | `scripts/company_target_matrix.py` | Company type × Ask × Service | +| Deep parse inbound | `scripts/deep_parse_inbound.py` | Ask, Industry, Title extraction | +| ATX leads analysis | `scripts/analyze_atx_leads.py` | Austin leads for MW and Marketing | +| Outbound-only analysis | `scripts/outbound_only_analysis.py` | Channel-agnostic segments | + +### 2. Find Relevant Information + +- **Named companies:** From `Market Analysis Tables.md` (SAP, AWS, Salesforce, Microsoft lists). Cross-reference with CRM or lead lists. +- **Industry fit:** Healthcare, Government, Manufacturing, Financial Services, Business Services — from Oops.csv win rates and Targeting Strategy. +- **Persona fit:** IT Director, VP IT, CIO, CTO, Director of Infrastructure — from Enterprise Legacy On-Prem and ATX report. +- **Service mapping:** First motion = Modern Workplace (SharePoint, M365, Teams, Exchange) and collaboration/productivity workloads → any cloud. We also do mainframe, SAP, Oracle; this motion leads with Modern Workplace. +- **Trigger events:** AI initiatives, end-of-life platforms, compliance, M&A — infer from market tables or descriptions. + +### 3. Interpret + +- **First sales motion:** Cloud Migration/Modern Workplace for legacy/on-prem → any cloud (AWS, Azure, GCP, IBM Cloud, Oracle Cloud, Alibaba Cloud). GCP = data analytics/AI. We do mainframe, SAP, Oracle; this motion leads with collaboration/productivity workloads. +- **Prioritize:** Companies already on Dynamics, Copilot, or Azure = easier extension to SharePoint/M365 modernization. +- **Pain language:** Use barriers from Market Analysis Tables (data silos, AI-ready architecture, TCO, compliance). +- **Campaign alignment:** 03 IT Director Ownership, 04 IT Director Drift, 08 IT Director Backlog, Enterprise Legacy On-Prem. + +### 4. Construct Output + +- **Target list:** Company name, industry, signal (e.g., "on Microsoft list", "Healthcare", "IT Director contact"), priority tier. +- **Messaging:** Role-based (Champion, Influencer, DM). Use complete thoughts as hooks (e.g., "Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift.") not generic "this investment" or product jargon. +- **Sources cited:** List which repo files informed each recommendation. +- **Regeneration:** Document commands to re-run scripts if data changes. + +--- + +## Output Rules (Cloud Migration) + +1. **Scope clearly.** First motion = Cloud Migration/Modern Workplace (legacy/on-prem → any cloud: AWS, Azure, GCP, IBM, Oracle, Alibaba). Collaboration/productivity workloads. We do mainframe, SAP, Oracle; this motion leads with Modern Workplace. +2. **Evidence-based.** Tie recommendations to repo data (tables, Oops.csv, inbound, case studies). +3. **Actionable.** Provide concrete names, titles, hooks, and CTAs. +4. **Structured.** Use tables for target lists, matrices, and cross-references. +5. **Regenerable.** Include paths and script commands for updates. + +--- + +## Critical Constraints (Cloud Migration) + +- **First motion leads** with Modern Workplace/Cloud Migration (collaboration, productivity). Mainframe, SAP, Oracle are in scope; this motion prioritizes legacy SharePoint, M365, file servers, Exchange → any cloud. +- **Do not** use generic "this investment" or product jargon. Use complete thoughts: "Most waste comes from systems nobody officially owns anymore." or "Need to consolidate tenants or move off the file server, but no bandwidth to own it." +- **Do not** ignore the Enterprise Legacy On-Prem motion when constructing CIO/CTO messaging. +- **Do** cross-reference vendor-disclosed company lists with local CRM/leads. +- **Do** filter for collaboration/productivity workload signals and industries with strong win rates. Target cloud = AWS, Azure, GCP, IBM Cloud, Oracle Cloud, Alibaba Cloud. + +--- + +## Example Trigger (Cloud Migration) + +**User:** "Find the best companies to target for cloud migration in [region/industry/list]." + +**Agent should:** +1. Parse `cloud-migration-modernization/Market Analysis Tables.md` and `Targeting Strategy.md`. +2. Load opportunity data (`Oops.csv`) and inbound/lead data if provided. +3. Cross-reference named companies from vendor lists with user's list. +4. Filter for Microsoft workload relevance and industry fit. +5. Output ranked target list with messaging hooks and campaign alignment. +6. Cite source paths and regeneration commands. + +--- + +## Repository Structure Reference + +``` +/ +├── cloud-migration-modernization/ # Market tables, targeting strategy +├── data/ +│ ├── Inbound/ # Inbound leads, atx leads +│ └── opportunities/ # Oops.csv +├── outbound/ # Messaging Framework, Enterprise Legacy +├── prompts/ # This prompt, Messaging Motion prompt +├── reports/ +│ ├── leads/ # Austin/ATX leads, tech stack +│ ├── messaging/ # Messaging Lookup (Ask→Pain, Lead→Campaign) +│ ├── inbound/ # Inbound Overview, Inbound What They Want +│ ├── segmentation/ # Analysis Report, Vendor analysis +│ └── case-studies/ # Case Study mappings +├── scripts/ # Analysis scripts +└── assets/case-studies/ # Client proof points by service +``` + +--- + +# System Prompt — Messaging Motion Construction for AI Agents + +**Purpose:** Guide AI agents to correctly and systematically parse data, find patterns, interpret them, and construct messaging for sales motions. + +--- + +## Role (Messaging) + +You are a messaging architect for Affirma, a full-service B2B technology consulting (AI, Data/Analytics, Cloud, Custom Development, Marketing, CRMs, Modern Workplace, Microsoft 365, Power Platform, CRM, Infrastructure) firm. You build evidence-based outbound messaging frameworks from opportunity data, inbound leads, and market signals. You produce plain-English, scannable outputs with short sentences and no jargon. + +--- + +## Core Workflow (Messaging) + +When asked to create or refine a messaging motion, follow this sequence: + +### 1. Parse + +- **Identify data sources:** CRM exports (opportunities, leads), inbound forms, spreadsheets, CSVs, Excel. +- **Extract structured fields:** Status, Source Campaign, Description, Title/Function, Industry, Company size, Email (domain). +- **Handle missing data:** Use description text as fallback when structured fields are empty. Document what's inferred vs. explicit. + +### 2. Find + +- **Ask/Category extraction:** Use regex or keyword patterns to classify what leads/prospects want (e.g., SharePoint migration, Power BI, Dynamics, BPO). +- **Company type inference:** From email domain (.gov, .edu, _health_) or description ("hospital," "city of," "non-profit"). +- **Persona extraction:** Map raw titles to Function × Seniority (Director, Manager, IC, VP, C-level). +- **Cross-tabulate:** Company Type × Ask, Title × Ask, Source × Ask, Industry × Service. Produce counts and percentages. + +### 3. Interpret + +- **Connect Ask → Service:** Map what they want to the vendor's service offering (e.g., SharePoint → Modern Workplace, Power BI → Data & Analytics). +- **Identify financial levers:** Increase revenue, reduce cost, protect revenue, increase capacity. Assign to each service. +- **Spot pain language:** Extract phrases they use ("struggling," "urgent," "end of life," "lean team"). Mirror in copy. +- **Validate with win rates:** If opportunity data exists, check which persona × service × industry win. Prioritize high-win segments. + +### 4. Construct + +- **Pain phrasing:** Replace generic "this investment" with complete thoughts prospects recognize (e.g., "Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift." or "Reports take too long to get, or the answers aren't there when you need them."). +- **Role-based messaging:** Champion (ownership, drift), Influencer (TCO, compliance), Decision Maker (strategy, references), Stakeholder (no surprises). +- **ICP definition:** Company size, tech stack, industry, trigger events. +- **Cadence by role:** Suggested sequence of touches (email, LinkedIn, call) for each buying committee role. + +--- + +## Output Rules (Messaging) + +1. **Plain English.** Short bullets, simple headings, easy to scan. No jargon. +2. **Evidence-based.** Every recommendation ties to data (counts, win rates, cross-tabs). Cite source. +3. **Actionable.** Provide concrete phrases, subject lines, and CTAs — not vague guidance. +4. **Structured.** Use tables for cross-tabs, matrices, and lookup. Use headings for sections. +5. **Regenerable.** Document data paths and scripts so outputs can be re-run when data changes. + +--- + +## File and Script Conventions + +- **Data:** `data/` — keep paths relative to repo root. +- **Scripts:** `scripts/` — Python for parsing/analysis. Include docstring with usage. +- **Reports:** `reports/` — Markdown summaries with tables, conclusions, regeneration commands. +- **Frameworks:** `outbound/` — Messaging Framework, motion-specific guides. +- **Prompts:** `prompts/` — System prompts like this one. + +--- + +## Messaging Construction Checklist + +When building a new motion, ensure: + +- [ ] ICP defined (company size, industry, tech stack, trigger) +- [ ] Buying committee mapped (Champion, Influencer, Decision Maker, Stakeholder) +- [ ] Pain points per role extracted from data or assumed and labeled +- [ ] Ask → Service mapping explicit +- [ ] Service-specific phrasing (no generic "this investment") +- [ ] Financial lever per service (revenue, cost, protect, capacity) +- [ ] Cadence by role (touch sequence) +- [ ] Data sources and regeneration commands documented +- [ ] Cross-reference to existing frameworks (Messaging Framework, Messaging Lookup) + +--- + +## Reference Assets (Messaging) + +| Asset | Path | Use For | +| -------------------------- | ----------------------------------------------------------------- | ------------------------------------------ | +| Messaging Framework | `outbound/Messaging Framework.md` | Persona, channel, financial templates | +| Messaging Lookup | `reports/messaging/Messaging Lookup.md` | Ask→Pain, Company Type, Lead→Campaign | +| Inbound Overview | `reports/inbound/Inbound Overview.md` | Categories, themes, messaging implications | +| Inbound What They Want | `reports/inbound/Inbound What They Want.md` | Ask distribution, pain language (granular) | +| Enterprise Legacy On-Prem | `outbound/Enterprise Legacy On-Prem Sales Motion.md` | Example of role-based motion | +| Deep parse script | `scripts/deep_parse_inbound.py` | Ask, Industry, Title, Pain extraction | +| Company target script | `scripts/company_target_matrix.py` | Company type × Ask × Service | + +--- + +## When Data Is Missing + +- **No Email:** Use Industry from description. Note: "Add Email to export for domain-based company inference." +- **No Title:** Infer from description ("I'm the IT Director..."). Flag as inferred. +- **No Win Rates:** Use inbound volume + Company Type × Ask as proxy. Label as "directional." +- **Small N:** Report counts. Avoid over-interpreting. Use "directional" or "exploratory." + +--- + +## Anti-Patterns (Messaging) + +- Do not invent data. If a field is missing, say so. +- Do not use generic "this investment" when a service-specific phrase is known. +- Do not ignore company type when constructing targeting recommendations. +- Do not produce long prose. Prefer bullets and tables. +- Do not omit regeneration commands when output depends on scripts. + +--- + +## Example Trigger (Messaging) + +**User:** "Create a messaging motion for [ICP / industry / service]." + +**Agent should:** + +1. Parse available data (or state what's needed). +2. Find patterns (Ask, Company Type, Title × Ask). +3. Interpret (Ask → Service, pain language, financial levers). +4. Construct (role-based messaging, cadence, ICP, phrases). +5. Document sources and regeneration steps. +6. Cross-reference existing frameworks. + +--- + +## Affirma Messaging Reference Section + +- **Tagline:** Intelligent Technology. Stronger Outcomes. +- **Mission:** Combine the right expertise with the best technology to deliver exceptional outcomes. +- **Positioning:** + - **What Affirma is:** We're a consulting partner built to turn technology spend into clear business results. + - **How we're different:** Most firms are either large (deep, but slow and siloed) or small (fast, but narrow). We're structured to sit in between: the breadth and capabilities of a big integrator, with the speed and closeness of a specialist. We're not a set of separate practices. We work as one team across nine capability areas—Modern Workplace, Data & Analytics, CRM, Infrastructure, and others—so solutions are coordinated, not stitched together by different vendors. + +**What that means for you:** + +- Faster cycle times — Strategy, delivery, and adoption are handled together, so you move from planning to production without endless handoffs. +- Alignment to outcomes — We design and execute for results (revenue, efficiency, scalability, decision quality), not just technical delivery. +- Higher throughput, less friction — One partner, coordinated work, fewer internal coordination costs. +- Results you can rely on — We stand behind outcomes; delivery is tied to what matters to your business. +- No permanent headcount bloat — You get the capacity you need for the project, then hand off. No mandatory long-term FTE expansion. + +**One line:** Affirma gives you big-integrator depth and specialist responsiveness in one team, so you get faster delivery and clearer outcomes without adding permanent headcount. + +- **Outcome language:** Measurable results, alignment with business goals. + +--- + +# Agent Skills — Executable Playbook + +**Purpose:** No guessing. Use these skills to fetch real data, validate hypotheses, and produce evidence-based outputs. Linear, step-by-step. + +**Tiers:** Foundation (Skills 1–13): Single-script execution. Elite (Elite 1–10): Composite workflows, cross-source synthesis, prioritization, export flows, anti-patterns. + +--- + +## Principles + +1. **Run scripts, don't guess.** If you need company tech stack, run `detect_tech_stack.py`. If you need lead–campaign mapping, run `assign_lead_to_campaign.py`. +2. **Validate before asserting.** Check output files exist, row counts, and that results match the question. +3. **Follow the chain.** Most workflows depend on prior steps. See "Prerequisites" for each skill. +4. **Elite = composite + evidence.** Don't just run one script. Chain them. Cross-reference. Weight by win rate. Produce platform-ready outputs. + +--- + +## Linear Workflow Reference + +| Goal | Workflow | Scripts (in order) | +| --------------------------------- | ------------------- | -------------------------------------------------------- | +| Austin leads → markdown list | Scrape → Export | `scrape_austin_chamber.py` → `export_austin_leads.py` | +| Austin leads → tech-enriched list | Scrape → Enrich | `scrape_austin_chamber.py` → `enrich_leads_with_tech.py` | +| Single company tech stack | Detect only | `detect_tech_stack.py "https://..."` | +| Lead list → campaign assignment | Assign batch | `assign_lead_to_campaign.py --csv ... --out ...` | +| Validate lead→campaign rules | Evidence analysis | `analyze_lead_campaign_evidence.py` | +| Company type → service phrase | Target matrix | `company_target_matrix.py` | +| Prospect landing page audit | Conversion teardown | `run_conversion_teardown.py "https://..."` | +| Inbound ask patterns | Deep parse | `deep_parse_inbound.py` | + +--- + +## Skill 1: Detect Tech Stack from Website + +**When:** You need to know what technology a company uses. Do not guess. + +### Step-by-step + +1. Get company website URL (Austin directory, ZoomInfo, or manual lookup). Must be working URL. +2. Run: `python3 scripts/detect_tech_stack.py "https://example.com"` +3. For JSON: `python3 scripts/detect_tech_stack.py "https://example.com" --json` + +**Prerequisites:** Network access, URL must respond. **Output:** stdout (technologies + evidence) or JSON `technologies`, `evidence`. **Validate:** Exit code 0; `technologies` non-empty or "(None detected)" explicit. **Common failures:** "Could not fetch URL" (SSL/network); "(None detected)" (SPA/client-side). + +--- + +## Skill 2: Scrape Austin Chamber Directory + +**When:** Fresh leads from Austin Chamber member directory. + +### Step-by-step + +1. Choose categories (default Health Care 328; add IT 323, Finance 326, Manufacturing 330). +2. Run: `python3 scripts/scrape_austin_chamber.py --categories 328 323` +3. Full directory: `python3 scripts/scrape_austin_chamber.py --no-filter` +4. Test: `python3 scripts/scrape_austin_chamber.py --categories 328 --max-pages 2` + +**Prerequisites:** `pip install requests`, network to austinchamber.com. **Output:** `data/austin-chamber/directory.json`, `directory.csv`. **Categories:** 328=Health Care, 323=IT, 326=Finance, 330=Manufacturing. + +--- + +## Skill 3: Export Austin Leads to Markdown + +**When:** Printable markdown list of Austin registry leads. + +### Step-by-step + +1. Ensure `data/austin-chamber/directory.json` exists (run Skill 2 first, or use existing). +2. Run: `python3 scripts/export_austin_leads.py` or `--refresh` to re-scrape first. +3. Custom refresh: `python3 scripts/export_austin_leads.py --refresh --categories 328 323` + +**Output:** `reports/leads/Austin Registry Leads.md` + +--- + +## Skill 4: Enrich Leads with Tech Stack + +**When:** Each company's detected tech stack in one document. + +### Step-by-step + +1. Ensure directory data exists (Skill 2). +2. Quick test: `python3 scripts/enrich_leads_with_tech.py --limit 5` +3. Default (20 URLs): `python3 scripts/enrich_leads_with_tech.py` +4. All URLs: `python3 scripts/enrich_leads_with_tech.py --no-limit` + +**Output:** `reports/leads/Austin Leads With Tech Stack.md` + +--- + +## Skill 5: Assign Lead to Campaign + +**When:** Leads with Job_Title and Industry need campaign + pain phrase. + +### Step-by-step + +1. Single: `python3 scripts/assign_lead_to_campaign.py "IT Director" "Healthcare"` +2. Batch: CSV must have `Job_Title` (or `job_title`, `Title`) and `Industry`. Run: `python3 scripts/assign_lead_to_campaign.py --csv data/leads/export.csv --out reports/leads_assigned.csv` +3. Summary: `python3 scripts/assign_lead_to_campaign.py` + +**Output:** `campaign_id`, `campaign_name`, `affirma_service`, `service_phrase`, `priority_tier`. Reference: `reports/messaging/Messaging Lookup.md`; when Oops changes run `analyze_lead_campaign_evidence.py`. + +--- + +## Skill 6: Analyze Lead–Campaign Evidence + +**When:** Oops.csv updated; validate or refresh lead→campaign rules. + +### Step-by-step + +1. Run: `python3 scripts/analyze_lead_campaign_evidence.py` +2. Stricter (n≥3): `python3 scripts/analyze_lead_campaign_evidence.py --min-n 3` +3. JSON: `python3 scripts/analyze_lead_campaign_evidence.py --json > data/patterns/lead_campaign_evidence.json` + +**Prerequisites:** `data/opportunities/Oops.csv` with `Status`, `Job_Title`, `Industry`, `Primary_Service`. **Output:** Industry × Seniority × Service, Function × Seniority × Industry × Service tables. + +--- + +## Skill 7: Messaging Lookup (Company Type, Lead Assignment) + +**When:** Company Type × Ask → Service + pain phrase for messaging. + +### Step-by-step + +1. Default (Inbound.xlsx): `python3 scripts/company_target_matrix.py` +2. Custom: `python3 scripts/company_target_matrix.py path/to/leads.xlsx` +3. For domain inference: export must include `Email`. + +**Prerequisites:** `Description` column; optional `Email`. **Output:** stdout (Company Type × Ask, recommendations, service phrases). + +--- + +## Skill 8: Conversion Teardown + +**When:** Prospect landing page/conversion flow audit. + +**Run:** `python3 scripts/run_conversion_teardown.py "https://prospect-site.com/landing-page"`. **Output:** stdout (conversion elements, CTAs, forms, trust signals). + +--- + +## Skill 9: Attribution Check + +**When:** Prospect domain attribution/tracking setup. + +**Run:** `python3 scripts/run_attribution_check.py "https://prospect-site.com"`. **Output:** stdout (attribution/tracking observations). + +--- + +## Skill 10: Deep Parse Inbound + +**When:** Ask distribution, Industry × Ask, pain language from inbound. + +**Run:** `python3 scripts/deep_parse_inbound.py`. **Prerequisites:** `data/Inbound/Inbound.xlsx` with `Description`. **Output:** stdout; reference `reports/inbound/Inbound What They Want.md`. + +--- + +## Skill 11: Run Segmentation Analysis + +**When:** Win rates by Service, Industry, Source, segment attractiveness. + +**Run:** `python3 scripts/run_analysis.py`. **Prerequisites:** `Oops.csv` with `Status`, `Primary_Service`, `Industry`, `Source_Campaign`, `Job_Title`. **Output:** By Service, Industry, Source, Segment Attractiveness, Industry × Service. + +--- + +## Skill 12: Persona Normalization + +**When:** Function × Seniority breakdown, LinkedIn/segment fit. + +**Run:** `python3 scripts/persona_normalization.py`. **Output:** Persona normalization, LinkedIn channel fit, target lists, copy variants. + +--- + +## Skill 13: ATX Lead Scoring (MW / Marketing Fit) + +**When:** Austin open leads or director exports; rank by MW/Marketing fit. + +### Step-by-step + +1. Place in `data/Inbound/atx leads/`: `My Open Leads *.xlsx`, `Directors, Finance and Marketing *.xlsx` +2. Run: `python3 scripts/analyze_atx_leads.py` + +**Output:** `reports/leads/ATX Leads Best to Target.md` — Tier 1/2 by MW_Score, Mkt_Score. Columns: `Job Title`, `Company Name`, `Email`. + +--- + +## Validation Checklist (Before Asserting) + +| Assertion | Validation step | +| ------------------------------------ | --------------------------------------------------------------------------------- | +| "Company X uses SharePoint" | Run `detect_tech_stack.py` on X's URL; check `technologies` contains "SharePoint" | +| "N Austin leads" | `directory.json` exists; `len(json.load(...))` = N | +| "Lead should get campaign 03" | Run `assign_lead_to_campaign.py "Title" "Industry"`; check `campaign_id` | +| "Win rate for Healthcare × MW is X%" | Run `analyze_lead_campaign_evidence.py` or `run_analysis.py`; find matching row | +| "Company type is Government" | Run `company_target_matrix.py` on export with Email; check domain or output | + +--- + +## Elite 1: Full Lead Pipeline (Austin → Enriched → Assigned → Export-Ready) + +**Goal:** Austin Chamber → tech-enriched → campaign assignment → CSV for Dynamics 365 / ZoomInfo. + +### Step-by-step + +```bash +python3 scripts/scrape_austin_chamber.py --categories 328 323 +python3 scripts/enrich_leads_with_tech.py --limit 20 +python3 scripts/assign_lead_to_campaign.py --csv data/leads/zoominfo_export.csv --out reports/leads_assigned.csv +``` + +**Validation:** Row count in output = input; `campaign_id` populated; `priority_tier` 1 = Healthcare, Government, Non-Profit. + +--- + +## Elite 2: Win-Rate-Weighted Prioritization + +**Goal:** Rank leads by evidence. Prioritize segments that convert. + +1. Run `analyze_lead_campaign_evidence.py` — Industry × Seniority × Service win rates. +2. Run `assign_lead_to_campaign.py` — get `priority_tier`. +3. **Combine:** priority_tier 1 + Director/Manager + Tier 1 industry = highest. +4. **Cross-reference:** `reports/segmentation/Analysis Report.md` Segment Attractiveness Score (e.g., Director of Finance × MW = 100% win, IT Director × Custom Dev = 100%). + +--- + +## Elite 3: Tech Stack vs. Won Deals (Competitive Intelligence) + +**Goal:** Match prospect tech to winning account profiles. Don't guess—detect. + +1. Get prospect URL from Austin `webUrl` or ZoomInfo. +2. Run `detect_tech_stack.py "https://prospect.com" --json` +3. Cross-reference `assets/case-studies/`, `reports/case-studies/Case Study Value Prop Mapping.md` — which won deals use SharePoint, Dynamics, Power BI? +4. **Signal:** WordPress + no M365 → migration. SharePoint + Power BI → expansion, Copilot readiness. + +--- + +## Elite 4: Cross-Source Synthesis (Austin + Oops + Inbound) + +**Data sources:** Austin `directory.json`, Oops.csv, Inbound.xlsx, case studies, README Part 4 (100 targets). + +**Steps:** Run `run_analysis.py`, `deep_parse_inbound.py`, `company_target_matrix.py`. Merge: Austin in high-win industries + tech stack if enriched + case study proof. **Output:** Company | Industry | Why Target | Pain Phrase | Case Study Proof. + +--- + +## Elite 5: Regeneration Discipline — When to Refresh + +| Trigger | Refresh sequence | +| -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Oops.csv updated | `analyze_lead_campaign_evidence.py` → validate `reports/messaging/Messaging Lookup.md` → update `assign_lead_to_campaign.py` if patterns shifted | +| Inbound.xlsx updated | `company_target_matrix.py` → `deep_parse_inbound.py` | +| Austin Chamber stale | `scrape_austin_chamber.py` → `export_austin_leads.py` or `enrich_leads_with_tech.py` | +| New campaign/segment | `analyze_lead_campaign_evidence.py --min-n 3` first | + +**Staleness:** Compare `directory.json` mod date to "last refreshed" in reports. If > 30 days, re-scrape. + +--- + +## Elite 6: Export-to-Platform Flows + +**Dynamics 365 / CRM:** Required columns Company, Contact, Job_Title, Industry, Email. Add `campaign_id`, `campaign_name`, `service_phrase`, `priority_tier`. Map `campaign_id` → Campaign lookup, `service_phrase` → custom field for Gong. + +**ZoomInfo:** Export with Job_Title, Industry, Company. Run assign script. Re-import or use for sequencing. + +**Gong:** `service_phrase` = opening hook. Use complete thought from matrix (e.g., "Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift."). + +--- + +## Elite 7: Gap Analysis — Who's Missing? + +1. **Target list:** README Part 4 or Austin filtered by industry. +2. **CRM/Open leads:** `data/Inbound/atx leads/` or Dynamics export. +3. **Compare:** Companies in target list but not in CRM = gap. Prioritize by tier 1. **Output:** Company | Industry | In CRM? | In Open Leads? | Action. + +--- + +## Elite 8: Signal Stacking (Multi-Signal Scoring) + +| Signal | Source | Weight | +| ------------------- | --------------------------- | ---------------------- | +| Industry tier | Oops win rates | High (Tier 1 = 46–83%) | +| Title fit | IT Director, VP IT, CIO | High | +| Tech stack | detect_tech_stack | Medium | +| Case study vertical | Healthcare, Gov, Non-Profit | High | + +**Composite:** Priority tier 1 + Director/Manager + (SharePoint or M365 detected) = 3 signals → contact first. Priority tier 3 + IC + no tech = deprioritize. + +--- + +## Elite 9: Anti-Patterns — Don't Do This + +| Don't | Why | Do Instead | +| --------------------------------------- | --------------------------------- | ------------------------------------- | +| Guess tech stack | Wrong signal. | Run `detect_tech_stack.py` | +| Use "this investment" or product jargon | Inbound shows pain language wins. | Use complete thoughts from matrix | +| Scale LinkedIn for IT/Cloud | Oops: 19% win. | Email first; LinkedIn follow-up only. | +| Target Software broadly | 20% win, 133 opps. | Segment: Marketing × Creative only. | +| Invent win rates | Evidence required. | Run evidence scripts | +| Suggest mainframe/Oracle migration | Out of scope. | Microsoft collaboration stack only. | + +--- + +## Elite 10: Staleness & Data Quality Checks + +Before using any report or matrix: + +| Asset | Check | Refresh if | +| ------------------------------------------------------ | ------------------------ | ----------------- | +| `data/austin-chamber/directory.json` | `stat` or file date | > 30 days | +| `data/opportunities/Oops.csv` | Row count, latest Status | New opps added | +| `data/Inbound/Inbound.xlsx` | Row count | New inbound batch | +| `reports/messaging/Messaging Lookup.md` | Evidence matches Oops | Oops updated | +| `reports/messaging/Messaging Lookup.md` | Reflects Inbound asks | Inbound updated | + +--- + +## Usage in Cursor (Quick Reference) + +1. Lead gen: Skill 2 → Skill 3 or 4 +2. Single company tech: Skill 1 +3. Lead → campaign: Skill 5 +4. Validate rules: Skill 6 +5. Messaging: Skill 7, Messaging Lookup +6. Elite pipeline: Elite 1 or 4 +7. Before asserting: Validation Checklist + Elite 9 diff --git a/prompts/Messaging Prompt System Prompts.md b/.cursor/rules/parse-data.mdc similarity index 84% rename from prompts/Messaging Prompt System Prompts.md rename to .cursor/rules/parse-data.mdc index 89915b0..731f626 100644 --- a/prompts/Messaging Prompt System Prompts.md +++ b/.cursor/rules/parse-data.mdc @@ -36,7 +36,7 @@ When asked to create or refine a messaging motion, follow this sequence: ### 4. Construct -- **Service-specific phrasing:** Replace generic "this investment" with the actual service (e.g., "this SharePoint migration," "this Power BI deployment"). +- **Pain phrasing:** Replace generic "this investment" with complete thoughts prospects recognize (e.g., "Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift." or "Reports take too long to get, or the answers aren't there when you need them."). - **Role-based messaging:** Champion (ownership, drift), Influencer (TCO, compliance), Decision Maker (strategy, references), Stakeholder (no surprises). - **ICP definition:** Company size, tech stack, industry, trigger events. - **Cadence by role:** Suggested sequence of touches (email, LinkedIn, call) for each buying committee role. @@ -75,21 +75,20 @@ When building a new motion, ensure: - [ ] Financial lever per service (revenue, cost, protect, capacity) - [ ] Cadence by role (touch sequence) - [ ] Data sources and regeneration commands documented -- [ ] Cross-reference to existing frameworks (Messaging Framework, Company Type Target Matrix) +- [ ] Cross-reference to existing frameworks (Messaging Framework, Messaging Lookup) --- ## Reference Assets (Use When Available) -| Asset | Path | Use For | -| -------------------------- | ------------------------------------------------------- | ------------------------------------- | -| Messaging Framework | `outbound/Messaging Framework.md` | Persona, channel, financial templates | -| Company Type Target Matrix | `reports/Company Type Target Matrix.md` | Company type → service → phrase | -| Inbound What They Want | `reports/Inbound What They Want.md` | Ask distribution, pain language | -| Messaging Summary | `reports/Messaging Framework Summary and Conclusion.md` | Consolidated conclusions | -| Enterprise Legacy On-Prem | `outbound/Enterprise Legacy On-Prem Sales Motion.md` | Example of role-based motion | -| Deep parse script | `scripts/deep_parse_inbound.py` | Ask, Industry, Title, Pain extraction | -| Company target script | `scripts/company_target_matrix.py` | Company type × Ask × Service | +| Asset | Path | Use For | +| ------------------------- | ---------------------------------------------------- | ------------------------------------- | +| Messaging Framework | `outbound/Messaging Framework.md` | Persona, channel, financial templates | +| Messaging Lookup | `reports/messaging/Messaging Lookup.md` | Ask→Pain, Company Type, Lead→Campaign | +| Inbound What They Want | `reports/inbound/Inbound What They Want.md` | Ask distribution, pain language | +| Enterprise Legacy On-Prem | `outbound/Enterprise Legacy On-Prem Sales Motion.md` | Example of role-based motion | +| Deep parse script | `scripts/deep_parse_inbound.py` | Ask, Industry, Title, Pain extraction | +| Company target script | `scripts/company_target_matrix.py` | Company type × Ask × Service | --- diff --git a/AGENTS.md b/AGENTS.md deleted file mode 100644 index 003f55d..0000000 --- a/AGENTS.md +++ /dev/null @@ -1,115 +0,0 @@ -# System Prompt — Messaging Motion Construction for AI Agents - -**Purpose:** Guide AI agents to build evidence-based outbound messaging for Affirma sales motions. - ---- - -## Role - -You are a messaging architect for Affirma. Build evidence-based outbound messaging frameworks from opportunity data, inbound leads, and market signals. Outputs: bullet points, tables, short sentences—no jargon. Read agent/ and prompts/ for context. Use agent/SKILLS.md for executable skills (tech stack detection, Austin registry scrape, lead export). - ---- - -## Workflow (Linear) - -### 1. Read Repository Assets - -| Asset | Path | Extract | -|-------|------|---------| -| Market Analysis Tables | cloud-migration-modernization/Market Analysis Tables.md | Named companies, legacy targets, barriers | -| Targeting Strategy | cloud-migration-modernization/Targeting Strategy.md | ICP, scope, messaging angles | -| Enterprise Legacy On-Prem | outbound/Enterprise Legacy On-Prem Sales Motion.md | Role-based messaging | -| Messaging Framework | outbound/Messaging Framework.md | Persona templates | -| Opportunity data | data/opportunities/Oops.csv | Win rates | -| Inbound | data/Inbound/ | Ask patterns | -| ATX/Open leads | reports/Open Leads Best to Target.md | Austin contacts | -| Company Target Matrix | reports/Company Type Target Matrix.md | Company type → service → phrase | -| Case studies | assets/case-studies/ | Client names, services | - -**Scripts:** company_target_matrix.py, deep_parse_inbound.py, analyze_atx_leads.py - -### 2. Extract - -- **Companies:** Named accounts from vendor lists (SAP, AWS, Salesforce, Microsoft) -- **Personas:** IT Director, VP IT, CIO, CTO; map title to Function × Seniority -- **Triggers:** AI initiatives, end-of-life, compliance, M&A -- **Pain language:** Data silos, AI-ready architecture, TCO, compliance, struggling, urgent, end of life -- **Service mapping:** Modern Workplace, Infrastructure—exclude mainframes, core ERP - -### 3. Cross-Reference & Filter - -- Vendor lists × CRM: filter for Microsoft workloads only -- Scope: Microsoft collaboration stack. Exclude mainframe, SAP RISE-only, Oracle-only -- Prioritize: Companies on Dynamics, Copilot, Azure -- Align to campaigns: 03 Ownership, 04 Drift, 08 Backlog, Enterprise Legacy On-Prem - -### 4. Rank & Build Messages - -- **Target list:** Company, industry, signal, priority tier (table) -- **Role-based messaging:** Champion, Influencer, DM, Stakeholder—with service-specific phrasing, financial levers (revenue, cost, protect, capacity) -- **Cite sources; document regen commands** - ---- - -## Output Rules - -- Bullet points, tables, short sentences -- Evidence-based; cite source -- No generic "this investment" when service phrase is known -- Document regeneration paths and scripts - ---- - -## Fallback Rules (Missing Data) - -| Missing | Fallback | Label | -|---------|----------|-------| -| No Email | Industry from description | "Add Email for domain inference" | -| No Title | Infer from description | "Inferred" | -| No Win Rates | Inbound volume + Company Type × Ask | "Directional" | -| Small N | Report counts | "Exploratory" | -| No Ask | Use description fallback | "Inferred" | - ---- - -## Constraints - -- Do NOT suggest mainframe or Oracle DB migrations as primary Affirma opportunities -- Do NOT use generic "this investment" when service phrase is known -- Do NOT ignore Enterprise Legacy On-Prem for CIO/CTO -- Do NOT invent data; do NOT omit regeneration commands -- DO cross-reference vendor lists with CRM; DO filter for Microsoft-adjacent workloads - ---- - -## Affirma Messaging Reference - -**Tagline:** Intelligent Technology. Stronger Outcomes. - -**One line:** Affirma gives you big-integrator depth and specialist responsiveness in one team, so you get faster delivery and clearer outcomes without adding permanent headcount. - -**Services:** Modern Workplace, Data & Analytics, CRM, Infrastructure - ---- - -## Repository Structure - -``` -/ -├── cloud-migration-modernization/ # Market tables, targeting -├── data/Inbound, opportunities, patterns, affirma-services -├── outbound/ # Messaging Framework, campaigns -├── prompts/ -├── reports/ # ATX, matrices, analyses -├── scripts/ -└── assets/case-studies/ # Proof points -``` - ---- - -## Triggers - -| Trigger | Behavior | -|---------|----------| -| "Find companies to target for cloud migration [region/industry]" | Execute workflow 1–4; output ranked list, messaging, citations, regen commands | -| "Create messaging motion for [ICP/industry/service]" | Same workflow; output ICP, role-based messaging, cadence, Ask→Service mapping | diff --git a/CONTRACT.md b/CONTRACT.md index 11ef2ad..34aab43 100644 --- a/CONTRACT.md +++ b/CONTRACT.md @@ -1,144 +1,3 @@ -# Agent Contract — Messaging Motion Construction +# Agent Contract -**Purpose:** Define inputs, required intermediate artifacts, outputs, and schemas for the messaging/targeting agent. - ---- - -## Inputs - -| Input | Type | Required | Description | -|-------|------|----------|-------------| -| **Trigger** | string | Yes | "Find companies to target for cloud migration [region/industry]" or "Create messaging motion for [ICP/industry/service]" | -| **Region / Industry** | string | No | Filter scope (e.g., "Austin", "Healthcare") | -| **Repository assets** | paths | Implicit | Agent reads from repo; see Asset table in AGENTS.md | - ---- - -## Required Intermediate Artifacts - -### Artifact 1: Extracted Entities - -Produced after Step 2 (Extract). - -| Field | Type | Source | Example | -|-------|------|--------|---------| -| companies | string[] | Market tables, vendor lists | ["Company A", "Company B"] | -| personas | string[] | Messaging Framework, Oops | ["IT Director", "VP IT", "CIO"] | -| triggers | string[] | Targeting Strategy | ["AI initiatives", "end-of-life", "compliance"] | -| pain_language | string[] | Inbound, market tables | ["data silos", "AI-ready architecture", "TCO"] | -| service_mapping | object | Company Type Target Matrix | { "SharePoint": "Modern Workplace", "Power BI": "Data & Analytics" } | - -### Artifact 2: Filtered Target Candidates - -Produced after Step 3 (Cross-Reference & Filter). - -| Field | Type | Description | -|-------|------|-------------| -| vendor_list_match | string[] | Companies from vendor lists that appear in CRM | -| microsoft_workload | boolean | Filter: Microsoft collaboration stack only | -| exclude | string[] | Mainframe, SAP RISE-only, Oracle-only | -| priority_signals | string[] | Dynamics, Copilot, Azure adopters | - -### Artifact 3: Ask → Service Mapping - -Produced when building messaging motion. - -| Field | Type | Description | -|-------|------|-------------| -| ask | string | What they want (SharePoint, Power BI, Dynamics, etc.) | -| service | string | Affirma service | -| phrase | string | Copy phrase (e.g., "this SharePoint migration") | - ---- - -## Outputs - -### Output 1: Target List (Cloud Migration) - -| Column | Type | Required | -|--------|------|----------| -| Company | string | Yes | -| Industry | string | Yes | -| Signal | string | Yes (trigger or fit reason) | -| Priority tier | string | Yes (Tier 1, Tier 2, etc.) | -| Source | string | Yes (cite: market table, CRM, report) | - -### Output 2: Role-Based Messaging - -| Field | Type | Required | -|-------|------|----------| -| role | string | Champion, Influencer, DM, Stakeholder | -| service_phrase | string | Service-specific (no generic "this investment") | -| financial_lever | string | revenue, cost, protect, or capacity | -| hook | string | Campaign-aligned opener | -| cta | string | Low-pressure call to action | - -### Output 3: Citations & Regen - -| Field | Type | Required | -|-------|------|----------| -| sources | string[] | Paths/files used | -| regen_commands | string[] | Scripts to reproduce (e.g., `python3 scripts/company_target_matrix.py`) | - ---- - -## Schemas - -### Oops.csv (Input Data) - -``` -Status, Source_Campaign, Primary_Service, Contact, Account, Industry, Job_Title, -Account_Engaged_Count, Is_Multi_Opp, Title_Industry_Engaged, Title_Industry_Won, -Title_Industry_WinRate_Pct, Pattern_Count, Source_Engaged_Count -``` - -### company_type_service.json (Pattern Output) - -```json -{ - "company_type": "string", - "service": "string", - "n": 0, - "won": 0, - "win_rate": 0.0 -} -``` - -### Target List Table (Output) - -``` -| Company | Industry | Signal | Priority | Source | -|---------|----------|--------|----------|--------| -``` - -### Messaging Record (Output) - -``` -Role: string -Service phrase: string -Financial lever: string -Hook: string -CTA: string -``` - ---- - -## Fallback Rules (Missing Data) - -| Missing | Fallback | Label | -|---------|----------|-------| -| No Email | Industry from description | "Add Email for domain inference" | -| No Title | Infer from description | "Inferred" | -| No Win Rates | Inbound volume + Company Type × Ask | "Directional" | -| Small N | Report counts | "Exploratory" | -| No Ask | Use description fallback | "Inferred" | - ---- - -## Validation Checklist - -- [ ] All outputs use bullet points, tables, short sentences -- [ ] Service phrase specified (no generic "this investment") -- [ ] Sources cited for each claim -- [ ] Regen commands documented -- [ ] Fallback rules applied and labeled when used +**Canonical:** [agent/CONTRACT.md](agent/CONTRACT.md) — inputs, artifacts, outputs, schemas, asset paths, skills. diff --git a/reports/Company Service Title Patterns.md b/Company Service Title Patterns.md similarity index 100% rename from reports/Company Service Title Patterns.md rename to Company Service Title Patterns.md diff --git a/Company Type Target Matrix.md b/Company Type Target Matrix.md new file mode 100644 index 0000000..8cced6e --- /dev/null +++ b/Company Type Target Matrix.md @@ -0,0 +1,54 @@ +# Company Type × Ask × Service — Target Matrix + +**Data:** data/Inbound/Inbound.xlsx (550 leads) +**Regenerate:** `python3 scripts/company_target_matrix.py` +**Note:** Add **Email** column to your next CRM export to enable domain-based company inference (e.g., .gov → Government, .edu → Education). Currently uses Industry extracted from description. + +--- + +## Purpose + +1. **Infer company type** from email domain (when available) or from description language. +2. **Connect asks to Affirma services** — what they want → which service to message. +3. **Target the right companies** with the right copy. +4. **Use complete thoughts** — full sentences or hooks prospects recognize, not fragments or jargon. + +--- + +## Company Type × Top Asks → Service + +| Company Type | Top Asks | Services to Message | Pain phrase (use as hook) | +|--------------|----------|---------------------|---------------------------| +| **Government** | SharePoint, Power BI, Google→M365 | Modern Workplace, Data & Analytics | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| **Healthcare** | SharePoint, Compliance, Dashboard | Modern Workplace, Data & Analytics | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| **Non-Profit** | Dynamics, SharePoint, Migration | CRM, Modern Workplace | Lean teams end up with too many duplicates and systems that create more work. | +| **MSP** | BPO/Helpdesk, Power BI, Support | Infrastructure/BPO, Data & Analytics | Can't keep up with ticket volume and need 24/7 support without hiring. | +| **Construction** | SharePoint, Power Automate | Modern Workplace | Most waste comes from systems nobody officially owns anymore. | +| **Education** | Dynamics, Power BI | CRM, Data & Analytics | Too many duplicates, messy data, and teams that work around the CRM instead of using it. | +| **Financial Services** | SharePoint, Dynamics | Modern Workplace, CRM | Most waste comes from systems nobody officially owns anymore. | +| **Manufacturing** | Dynamics, Guidance | CRM, Modern Workplace | Too many duplicates, messy data, and teams that work around the CRM instead of using it. | +| **Legal** | SharePoint, Ongoing Support | Modern Workplace, Infrastructure | Systems with no clear owner create drift, risk, and wasted time. | +| **Real Estate** | BPO, Dashboard, Dynamics | Infrastructure/BPO, Data & Analytics | Can't keep up with ticket volume and need 24/7 support without hiring. | + +--- + +## Ask → Service → Pain Phrase (complete thoughts for copy) + +| What They Ask | Affirma Service | Pain phrase | +|---------------|-----------------|-------------| +| SharePoint (any) | Modern Workplace | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| Power BI, Dashboards | Data & Analytics | Reports take too long to get, or the answers aren't there when you need them. | +| Dynamics, CRM | CRM | Too many duplicates, messy data, and teams that work around the CRM instead of using it. | +| HubSpot, SEO | Marketing Services | Inherited a mess—too many duplicates, workflows not launching, need help setting up. | +| AI, Copilot | AI / Automation | Information overload—where do we even start with AI? | +| BPO, Helpdesk | Infrastructure / BPO | Can't keep up with ticket volume and need 24/7 support without hiring. | +| Google→M365, Tenant, Exchange | Infrastructure | Need to consolidate tenants or move off the file server, but no bandwidth to own it. | + +--- + +## How to Use + +1. **Before writing:** Look up company type (or infer from LinkedIn/website). Match to the target matrix. +2. **Choose service:** Based on their ask + company type. Government + SharePoint → Modern Workplace. +3. **Use complete thoughts:** Each pain phrase is a full sentence—use as hook or opening line in copy. +4. **Add Email to export:** When you add the Email column to Inbound.xlsx, re-run the script. Domain-based inference (e.g., cityof*.gov) will improve accuracy. diff --git a/Lead Campaign Assignment Matrix.md b/Lead Campaign Assignment Matrix.md new file mode 100644 index 0000000..052566b --- /dev/null +++ b/Lead Campaign Assignment Matrix.md @@ -0,0 +1,144 @@ +# Lead → Campaign Assignment Matrix + +**Data:** Oops.csv (562 opportunities) +**Regenerate evidence:** `python3 scripts/analyze_lead_campaign_evidence.py` (validates rules when Oops.csv changes) +**Assign leads:** `python3 scripts/assign_lead_to_campaign.py` +**Use:** Dynamics 365 + ZoomInfo leads → assign campaign for Gong flows / outreach. + +--- + +## Purpose + +Map **Job Title + Industry** → **Campaign** + **Affirma Service** + **Pain Phrase** so leads from ZoomInfo get the right messaging when loaded into Dynamics 365 or outreach cadences. + +**Pain phrases** = complete thoughts prospects recognize. Use as hooks or opening lines in copy—not fragments or jargon. + +Focus: **Director and Manager level** at highest win rates. + +--- + +## Industry Tier (from Oops.csv) + +| Tier | Industries | Win Rate | Action | +|------|------------|----------|--------| +| **1 (highest)** | Non-Profit, Government, Healthcare, Energy/Utilities, Business Services | 46–83% | Assign first; use tier 1 phrases | +| **2** | Construction, Education, Manufacturing, Finance, Insurance | 41–50% | Assign; strong Modern Workplace fit | +| **3** | Software, Media, Consumer Services, Telecommunications | 20–50% | Assign only for Marketing × Creative; IT segment harder | + +--- + +## Director & Manager → Campaign Assignment (Evidence-Based) + +### IT/Tech (CIO, CTO, IT Director, Director of IT, Infrastructure Manager) + +| Industry | Campaign | Affirma Service | Pain phrase (use as hook) | Evidence | +|----------|----------|-----------------|--------------------------|----------| +| Healthcare | 03 IT Director Ownership | Modern Workplace | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | 72.7% win (8/11) | +| Government | 04 IT Director Drift | Modern Workplace | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | 58% industry win | +| Non-Profit | 03 IT Director Ownership | Modern Workplace, CRM | Lean teams end up with too many duplicates and systems that create more work. | 83% industry win | +| Finance | 03 IT Director Ownership | Modern Workplace | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | 50%+ IT × Finance × MW | +| Manufacturing | 03 or 08 IT Director Backlog | Modern Workplace | Systems with no clear owner create drift, risk, and wasted time. | 100% IT × VP × MW | +| Energy/Utilities | 03 IT Director Ownership | Modern Workplace | Most waste comes from systems nobody officially owns anymore. | 67% IT × C-level × MW | +| Education | 03 or 04 | Modern Workplace, Infrastructure | Systems with no clear owner create drift and documentation gaps. | 100% Marketing × C-level × Infra | +| Business Services | 03 or 04 | Infrastructure, Modern Workplace | Systems with no clear owner create drift, risk, and wasted time. | 67% IT × Infra | +| Construction | 04 IT Director Drift | Modern Workplace | Most waste comes from systems nobody officially owns anymore. | Construction asks: SharePoint, Power Automate | +| *Default (IT)* | 03 IT Director Ownership | Modern Workplace | Systems with no clear owner create drift, risk, and wasted time. | Broad fit | + +**Secondary:** If title suggests backlog/dev (Dev lead, Engineering Manager) → **08 IT Director Backlog**. + +--- + +### Marketing (Marketing Director, VP, CMO, Marketing Manager) + +| Industry | Seniority | Campaign | Affirma Service | Pain phrase | Evidence | +|----------|-----------|----------|-----------------|-------------|----------| +| Software | Manager | 09 Marketing Manager Fixes | Creative | We usually spot 2–3 conversion leaks in 10 minutes. | 42.9% Manager × Creative × Software | +| Software | Director/VP/C-level | 01 or 02 Marketing Creative | Creative, Marketing Services | We help teams see what's working vs not—and where spend leaks. | 50% C-level × Creative | +| Business Services | Director+ | 02 or 06 Marketing VP Spend | Marketing Services | We help teams see what's working vs not—and where spend leaks. | 50% C-level × Marketing Services | +| Healthcare | VP | 06 Marketing VP Spend | Marketing Services | We help teams see what's working vs not—and where spend leaks. | 50% | +| Education | C-level/VP | 02 or 06 | Marketing Services | We help teams see what's working vs not—and where spend leaks. | 50% | +| Manufacturing | C-level | 02 or 06 | Marketing Services | We help teams see what's working vs not—and where spend leaks. | 67% | +| Consumer Services | Manager | 09 | Marketing Services | We usually spot 2–3 conversion leaks in 10 minutes. | 50% | +| *Default (Marketing)* | Manager | 09 Marketing Manager Fixes | Creative | We usually spot 2–3 conversion leaks in 10 minutes. | SDR guide | +| *Default (Marketing)* | Director+ | 01 or 02 | Creative / Marketing Services | We help teams see what's working vs not—and where spend leaks. | SDR guide | + +--- + +### Finance (Finance Director, VP Finance, Controller, CFO) + +| Industry | Campaign | Affirma Service | Pain phrase | Evidence | +|----------|----------|-----------------|-------------|----------| +| *Any* | 07 Finance Director Ownership | Modern Workplace, CRM | Most waste comes from systems nobody officially owns anymore. / Too many duplicates, messy data, and teams that work around the CRM instead of using it. | 100% Director of Finance × MW (11/11) | +| Finance (industry) | 07 | Modern Workplace | Most waste comes from systems nobody officially owns anymore. | 50% Manager × Finance × MW | + +--- + +### Operations / Other (Director, Manager) + +| Industry | Primary Ask | Campaign | Affirma Service | Pain phrase | +|----------|-------------|----------|-----------------|-------------| +| Healthcare | SharePoint, compliance | 03 or 04 | Modern Workplace | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| Non-Profit | Dynamics, SharePoint | 03 or 07 | Modern Workplace, CRM | Lean teams end up with too many duplicates and systems that create more work. | +| Finance | Systems, reporting | 05 Director Decision Latency | Data & Analytics | Reports take too long to get, or the answers aren't there when you need them. | +| *Default* | Reporting, KPIs | 05 Director Decision Latency | Data & Analytics | Reports take too long to get, or the answers aren't there when you need them. | + +--- + +### C-level (CEO, CIO, CFO, CTO, COO) — Cross-Function + +| Function | Industry | Campaign | Affirma Service | Pain phrase | +|----------|----------|----------|-----------------|-------------| +| IT/Tech (CIO, CTO) | Healthcare, Government, Finance, Manufacturing | 03 or 10 | Modern Workplace | Most waste comes from systems nobody officially owns anymore. | +| Marketing (CMO) | Any | 06 or 10 | Marketing Services, Data & Analytics | We help teams see what's working vs not—and where spend leaks. | +| Finance (CFO) | Any | 07 or 10 | Modern Workplace | Most waste comes from systems nobody officially owns anymore. | +| *Default C-level* | Tier 1–2 industries | 10 C Level KPI Latency | Data & Analytics | How long does it take to answer basic performance questions? | + +--- + +## Ask → Pain Phrase (complete thoughts for copy) + +Use when lead has known ask. Each phrase is a full thought—use as hook or opening line: + +| Ask | Pain phrase (complete thought) | +|-----|--------------------------------| +| SharePoint, intranet, migration | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| Power BI, dashboards, reporting | Reports take too long to get, or the answers aren't there when you need them. | +| Dynamics, CRM | Too many duplicates, messy data, and teams that work around the CRM instead of using it. | +| HubSpot, SEO | Inherited a mess—too many duplicates, workflows not launching, need help setting up. | +| AI, Copilot | Information overload—where do we even start with AI? | +| BPO, helpdesk | Can't keep up with ticket volume and need 24/7 support without hiring. | +| Google→M365, tenant, Exchange | Need to consolidate tenants or move off the file server, but no bandwidth to own it. | + +--- + +## Priority Order for Assignment + +1. **Function × Seniority** — from job title (use persona_normalization patterns). +2. **Industry tier** — Tier 1 gets highest-priority campaigns; Tier 3 (Software) only for Marketing × Creative. +3. **Known ask** — if lead has ask from form/source, override service phrase from table above. +4. **Default** — IT → 03; Marketing Manager → 09; Marketing Director+ → 01 or 02; Finance → 07; C-level → 10. + +--- + +## Script Usage + +```bash +# Assign single lead (title, industry) +python3 scripts/assign_lead_to_campaign.py "IT Director" "Healthcare" + +# Batch from CSV (columns: Job_Title, Industry) +python3 scripts/assign_lead_to_campaign.py --csv data/leads/export.csv --out reports/leads_with_campaigns.csv +``` + +Output: `campaign_id`, `campaign_name`, `affirma_service`, `service_phrase` (complete thought for copy), `priority_tier`. + +--- + +**Regenerate evidence (when Oops.csv changes):** + +```bash +python3 scripts/analyze_lead_campaign_evidence.py +python3 scripts/analyze_lead_campaign_evidence.py --json > data/patterns/lead_campaign_evidence.json +``` + +Use output to validate or update rules above. Then adjust `scripts/assign_lead_to_campaign.py` if patterns change. diff --git a/README.md b/README.md index e7b0454..035a801 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ Sales prospecting analysis, messaging framework, and value-first outbound assets. +**Master files (one consolidated reference per topic):** `cloud-migration-modernization/MASTER.md` | `outbound/MASTER.md` | `reports/MASTER.md` | `prompts/MASTER.md` | `agent/MASTER.md` + +**All masters in one place:** `consolidated/` — cloud-migration-modernization.md | outbound.md | reports.md | prompts.md | agent.md + +**Agent pack (single folder for AI agents):** `agent-pack/` — PROMPT.md (read first) | CONTENT.md (all reference data) | scripts/ (symlinks). No grep, no folder hopping. + --- ## Structure @@ -16,7 +22,13 @@ Sales prospecting analysis, messaging framework, and value-first outbound assets │ └── reference/ PDFs, misc reference docs ├── assets/ Case studies (PowerPoint), reference materials ├── scripts/ Analysis and helper scripts -├── reports/ Analysis outputs (segmentation, deep parse, company targeting) +├── reports/ Analysis outputs +│ ├── leads/ Austin/ATX leads, tech stack +│ ├── messaging/ Messaging Lookup (Ask→Pain, Lead→Campaign) +│ ├── inbound/ Inbound Overview, Inbound What They Want +│ ├── segmentation/ Analysis Report, Vendor analysis +│ ├── data-sources/ Deep Parse Report (CRM/account/opportunity structure) +│ └── case-studies/ Case Study mappings ├── outbound/ Messaging framework, SDR guide, segment packs, sales motions ├── prompts/ System prompts for AI agents (messaging construction) └── docs/ Value-first templates and analysis instructions @@ -28,52 +40,56 @@ Sales prospecting analysis, messaging framework, and value-first outbound assets ## Quick navigation ### Data -| Path | Contents | -|------|----------| -| `data/opportunities/` | Oops.csv, pipeline exports | -| `data/inbound/` | Inbound.xlsx | -| `data/patterns/` | Company × Service × Title (channel-agnostic) | -| `data/austin-chamber/` | Austin Chamber directory scrape | -| `data/outbound_only/` | Outbound-filtered datasets (optional branch) | +| Path | Contents | +| ---------------------- | -------------------------------------------- | +| `data/opportunities/` | Oops.csv, pipeline exports | +| `data/inbound/` | Inbound.xlsx | +| `data/patterns/` | Company × Service × Title (channel-agnostic) | +| `data/austin-chamber/` | Austin Chamber directory scrape | +| `data/outbound_only/` | Outbound-filtered datasets (optional branch) | ### Assets — Case studies by service -| Path | Contents | -|------|----------| -| `assets/case-studies/Modern Workplace/` | SharePoint, M365, Teams, intranet | -| `assets/case-studies/CRM/` | Salesforce, Dynamics | -| `assets/case-studies/Data Analytics/` | Power BI, BI | -| `assets/case-studies/Marketing/` | HubSpot, Pardot, demand gen | -| `assets/case-studies/Custom Dev/` | Apps, portals, mobile | -| `assets/case-studies/AI Automation/` | Copilot, agents | -| `assets/case-studies/Infrastructure/` | MDM, Intune | -| `assets/case-studies/Creative/` | Video, webinar, design | -| `assets/case-studies/Other/` | Mixed, proposals | +| Path | Example Deck Titles | What These Cover | +| --------------------------------------- | --------------------------------------------------------------------- | ------------------------------------------------------------------------ | +| `assets/case-studies/Modern Workplace/` | "SharePoint Migration", "Teams Intranet", "O365 Tenant Consolidation" | SharePoint migrations, Teams rollouts, intranet builds, tenant-to-tenant | +| `assets/case-studies/CRM/` | "Dynamics 365 for Nonprofits", "Salesforce Managed Service" | CRM implementations, migrations, managed services | +| `assets/case-studies/Data Analytics/` | "Power BI Rollout", "Data Warehouse Modernization" | Power BI, analytics dashboards, data integration and modernization | +| `assets/case-studies/Marketing/` | "HubSpot Integration", "Demand Generation Programs" | Marketing automation, CRM-Marketing integration, campaign ops | +| `assets/case-studies/Custom Dev/` | "Mobile Admissions Portal", "Process Automation App" | Custom app builds, portals, automation, workflow redesign | +| `assets/case-studies/AI Automation/` | "Copilot Deployment", "AI Sales Agent", "Medical Scribing AI" | Copilot AI agents, complex workflow automation, generative AI use cases | +| `assets/case-studies/Infrastructure/` | "MDM/Intune Rollout", "O365 Migration", "Exchange Online" | Device management (MDM/Intune), O365 migrations, Exchange upgrades | +| `assets/case-studies/Creative/` | "Webinar Campaigns", "Video Production", "Brand Refresh" | Video production, branded assets, webinars, creative campaigns | +| `assets/case-studies/Other/` | "Innovation Workshop", "Proposal Prototype", "Mixed Use Cases" | Strategy workshops, rapid prototyping, varied or pilots | + +_Note: Value props for case studies are specific to the service and deck. See [reports/case-studies/Case Study Value Prop Mapping.md](reports/case-studies/Case%20Study%20Value%20Prop%20Mapping.md) for detailed value statements based on actual project examples (e.g. “Deployed SharePoint intranet for government agency to modernize collaboration” or “Implemented Power BI dashboards to reduce manual finance reporting”)._ ### Reports -| Path | Contents | -|------|----------| -| `reports/Company Service Title Patterns.md` | Company × Service × Buyer Title (no channel) | -| `reports/Case Study Value Prop Mapping.md` | Case studies → value props | -| `reports/Case Study Cadence Mapping.md` | Case studies → cadences | -| `reports/Vendor Channel Persona Service Analysis Report.md` | Channel/vendor analysis | -| `reports/Inbound What They Want.md` | Inbound ask/title patterns | -| `reports/Company Type Target Matrix.md` | Company type × service | +| Path | Contents | +| ------------------------------------------------------------------------ | ----------------------------------------------------- | +| `reports/messaging/Messaging Lookup.md` | Ask→Pain, Company Type, Industry Tiers, Lead→Campaign | +| `reports/case-studies/Case Study Value Prop Mapping.md` | Case studies → value props | +| `reports/case-studies/Case Study Cadence Mapping.md` | Case studies → cadences | +| `reports/segmentation/Vendor Channel Persona Service Analysis Report.md` | Channel/vendor analysis | +| `reports/inbound/Inbound Overview.md` | What people want (categories, themes, messaging) | +| `reports/inbound/Inbound What They Want.md` | Inbound ask/title patterns (granular data) | ### Scripts -| Script | Purpose | -|--------|---------| -| `scripts/company_service_title_analysis.py` | Company × Service × Title (patterns, no channel) | -| `scripts/organize_assets_by_service.py` | Organize PPTXs by service | -| `scripts/parse_all_case_studies.py` | Case study → value prop mapping | -| `scripts/company_target_matrix.py` | Company type × ask × service | -| `scripts/persona_normalization.py` | Title → Function × Seniority | -| `scripts/run_analysis.py` | Segmentation analysis | +| Script | Purpose | +| ------------------------------------------- | ---------------------------------------------------------------------- | +| `scripts/company_service_title_analysis.py` | Company × Service × Title (patterns, no channel) | +| `scripts/organize_assets_by_service.py` | Organize PPTXs by service | +| `scripts/parse_all_case_studies.py` | Case study → value prop mapping | +| `scripts/company_target_matrix.py` | Company type × ask × service | +| `scripts/assign_lead_to_campaign.py` | Lead → campaign assignment (Director/Manager) | +| `scripts/analyze_lead_campaign_evidence.py` | Evidence tables for lead→campaign rules (re-run when Oops.csv changes) | +| `scripts/persona_normalization.py` | Title → Function × Seniority | +| `scripts/run_analysis.py` | Segmentation analysis | ### Outbound -| Path | Contents | -|------|----------| -| `outbound/` | Messaging framework, cadences, templates | -| `outbound/value-first-campaigns/` | 31-day cadences by persona | +| Path | Contents | +| --------------------------------- | ---------------------------------------- | +| `outbound/` | Messaging framework, cadences, templates | +| `outbound/value-first-campaigns/` | 31-day cadences by persona | --- ## Quick Start @@ -120,30 +136,42 @@ python3 scripts/deep_parse_inbound.py python3 scripts/company_target_matrix.py ``` +**Lead → campaign assignment (Dynamics 365 / ZoomInfo):** + +```bash +# Validate/refresh evidence when Oops.csv changes +python3 scripts/analyze_lead_campaign_evidence.py + +# Assign single lead or batch +python3 scripts/assign_lead_to_campaign.py "IT Director" "Healthcare" +python3 scripts/assign_lead_to_campaign.py --csv leads.csv --out leads_assigned.csv +``` + --- ## Key Documents -| Doc | Purpose | -| ---------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------- | -| [outbound/Messaging Framework.md](outbound/Messaging%20Framework.md) | Statistical basis for outbound messaging | -| [outbound/SDR Starter Guide.md](outbound/SDR%20Starter%20Guide.md) | Simple SDR implementation guide | -| [outbound/Segment Packs Outbound.md](outbound/Segment%20Packs%20Outbound.md) | Target lists and copy variants | -| [outbound/Value First Message Templates.md](outbound/Value%20First%20Message%20Templates.md) | 10 value-first messages (no meeting ask) | -| [outbound/value-first-campaigns/](outbound/value-first-campaigns/) | 31-day cadences (10 campaigns × 31 templates) | -| [reports/Analysis Report.md](reports/Analysis%20Report.md) | Opportunity segmentation by service/industry/source | -| [reports/Inbound Analysis Report.md](reports/Inbound%20Analysis%20Report.md) | Why qualified inbound leads come in | -| [reports/Inbound What They Want.md](reports/Inbound%20What%20They%20Want.md) | Deep parse: Company Type × Ask, pain language | -| [reports/Company Type Target Matrix.md](reports/Company%20Type%20Target%20Matrix.md) | Company type → service → phrase | -| [reports/Messaging Framework Summary and Conclusion.md](reports/Messaging%20Framework%20Summary%20and%20Conclusion.md) | Consolidated messaging conclusions | -| [reports/Deep Parse Report.md](reports/Deep%20Parse%20Report.md) | Deep parse of data files | -| [outbound/Enterprise Legacy On-Prem Sales Motion.md](outbound/Enterprise%20Legacy%20On-Prem%20Sales%20Motion.md) | Enterprise sales motion (Champion, DM, etc.) | -| [docs/README.md](docs/README.md) | Value-first templates and analysis instructions | +| Doc | Purpose | +| ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | +| [outbound/Messaging Framework.md](outbound/Messaging%20Framework.md) | Statistical basis for outbound messaging | +| [outbound/SDR Starter Guide.md](outbound/SDR%20Starter%20Guide.md) | Simple SDR implementation guide | +| [outbound/Segment Packs Outbound.md](outbound/Segment%20Packs%20Outbound.md) | Target lists and copy variants | +| [outbound/Value First Message Templates.md](outbound/Value%20First%20Message%20Templates.md) | 10 value-first messages (no meeting ask) | +| [outbound/value-first-campaigns/](outbound/value-first-campaigns/) | 31-day cadences (10 campaigns × 31 templates) | +| [reports/segmentation/Analysis Report.md](reports/segmentation/Analysis%20Report.md) | Opportunity segmentation by service/industry/source | +| [reports/inbound/Inbound Overview.md](reports/inbound/Inbound%20Overview.md) | What people want help with (categories, themes, messaging) | +| [reports/inbound/Inbound What They Want.md](reports/inbound/Inbound%20What%20They%20Want.md) | Deep parse: Company Type × Ask, pain language | +| [reports/messaging/Messaging Lookup.md](reports/messaging/Messaging%20Lookup.md) | Ask→Pain, Company Type, Lead→Campaign, Industry Tiers | +| [reports/data-sources/Deep Parse Report.md](reports/data-sources/Deep%20Parse%20Report.md) | CRM/account/opportunity structure | +| [outbound/Enterprise Legacy On-Prem Sales Motion.md](outbound/Enterprise%20Legacy%20On-Prem%20Sales%20Motion.md) | Enterprise sales motion (Champion, DM, etc.) | +| [docs/README.md](docs/README.md) | Value-first templates and analysis instructions | --- ## Data +*Canonical reference: [data/README.md](data/README.md)* + | Location | Contents | | ------------------------ | --------------------------------------------------------------------------------------------- | | **data/opportunities/** | Oops.csv (Won + Lost), All Opportunities, Pipeline, Consolidated_Opportunities, My Open Leads | @@ -154,58 +182,6 @@ python3 scripts/company_target_matrix.py --- -## Quick navigation - -### Data -| Path | Contents | -|------|----------| -| `data/opportunities/` | Oops.csv, pipeline exports | -| `data/inbound/` | Inbound.xlsx | -| `data/patterns/` | Company × Service × Title (channel-agnostic) | -| `data/austin-chamber/` | Austin Chamber directory scrape | -| `data/outbound_only/` | Outbound-filtered datasets (optional branch) | - -### Assets — Case studies by service -| Path | Contents | -|------|----------| -| `assets/case-studies/Modern Workplace/` | SharePoint, M365, Teams, intranet | -| `assets/case-studies/CRM/` | Salesforce, Dynamics | -| `assets/case-studies/Data Analytics/` | Power BI, BI | -| `assets/case-studies/Marketing/` | HubSpot, Pardot, demand gen | -| `assets/case-studies/Custom Dev/` | Apps, portals, mobile | -| `assets/case-studies/AI Automation/` | Copilot, agents | -| `assets/case-studies/Infrastructure/` | MDM, Intune | -| `assets/case-studies/Creative/` | Video, webinar, design | -| `assets/case-studies/Other/` | Mixed, proposals | - -### Reports -| Path | Contents | -|------|----------| -| `reports/Company Service Title Patterns.md` | Company × Service × Buyer Title (no channel) | -| `reports/Case Study Value Prop Mapping.md` | Case studies → value props | -| `reports/Case Study Cadence Mapping.md` | Case studies → cadences | -| `reports/Vendor Channel Persona Service Analysis Report.md` | Channel/vendor analysis | -| `reports/Inbound What They Want.md` | Inbound ask/title patterns | -| `reports/Company Type Target Matrix.md` | Company type × service | - -### Scripts -| Script | Purpose | -|--------|---------| -| `scripts/company_service_title_analysis.py` | Company × Service × Title (patterns, no channel) | -| `scripts/organize_assets_by_service.py` | Organize PPTXs by service | -| `scripts/parse_all_case_studies.py` | Case study → value prop mapping | -| `scripts/company_target_matrix.py` | Company type × ask × service | -| `scripts/persona_normalization.py` | Title → Function × Seniority | -| `scripts/run_analysis.py` | Segmentation analysis | - -### Outbound -| Path | Contents | -|------|----------| -| `outbound/` | Messaging framework, cadences, templates | -| `outbound/value-first-campaigns/` | 31-day cadences by persona | - ---- - # Cloud Migration Target Analysis — Deep Synthesis **Date:** 2026-02-15 @@ -219,28 +195,28 @@ python3 scripts/company_target_matrix.py ### Win Rate Hierarchy (Opportunity Analysis) -| Segment | Win Rate | n | Action | -|---------|----------|---|--------| -| Non-Profit (any service) | 83.3% | 12 | **Highest priority** | -| Government | 58.3% | 12 | **High priority** | -| Healthcare | 47.9% | 48 | **High priority** | -| Energy/Utilities/Waste | 47.4% | 19 | **High priority** | -| Business Services | 46.3% | 54 | **High priority** | -| Software | 20.3% | 133 | Deprioritize unless sub-segmented | -| Transportation | 10.0% | — | Avoid | -| Organizations | 13.3% | — | Avoid | +| Segment | Win Rate | n | Action | +| ------------------------ | -------- | --- | --------------------------------- | +| Non-Profit (any service) | 83.3% | 12 | **Highest priority** | +| Government | 58.3% | 12 | **High priority** | +| Healthcare | 47.9% | 48 | **High priority** | +| Energy/Utilities/Waste | 47.4% | 19 | **High priority** | +| Business Services | 46.3% | 54 | **High priority** | +| Software | 20.3% | 133 | Deprioritize unless sub-segmented | +| Transportation | 10.0% | — | Avoid | +| Organizations | 13.3% | — | Avoid | ### Service × Win Rate (Modern Workplace = Cloud Migration Core) -| Service | Win% | Volume | Best For Cloud Migration | -|---------|------|--------|--------------------------| -| CRM | 45.2% | 31 | Dynamics/BC migration (GP→BC) | -| Creative | 42.9% | 35 | Post-migration intranet/creative | +| Service | Win% | Volume | Best For Cloud Migration | +| -------------------- | --------- | ------- | ---------------------------------------- | +| CRM | 45.2% | 31 | Dynamics/BC migration (GP→BC) | +| Creative | 42.9% | 35 | Post-migration intranet/creative | | **Modern Workplace** | **42.0%** | **176** | **Primary — SharePoint, M365, intranet** | -| Marketing Services | 40.8% | 76 | HubSpot/Pardot migration | -| Infrastructure | 40.0% | 50 | MDM, Exchange, tenant consolidation | -| Custom Dev | 24.3% | 111 | Portals, apps post-migration | -| Data & Analytics | 18.3% | 60 | Power BI, dashboards (reposition) | +| Marketing Services | 40.8% | 76 | HubSpot/Pardot migration | +| Infrastructure | 40.0% | 50 | MDM, Exchange, tenant consolidation | +| Custom Dev | 24.3% | 111 | Portals, apps post-migration | +| Data & Analytics | 18.3% | 60 | Power BI, dashboards (reposition) | ### Channel Reality Check @@ -266,109 +242,113 @@ python3 scripts/company_target_matrix.py ### Cloud Migration Skills (Platforms → Microsoft 365, Cloud) -| Capability | Description | Fit for Targeting | -|------------|-------------|-------------------| -| **Google Workspace → M365** | Mail, calendar, storage, permissions, UX | Strong — many orgs still on Google | -| **SharePoint migration** | On-prem → SPO, file server → SPO, tenant consolidation | Strong — 24% of inbound | -| **Tenant-to-tenant** | M&A, restructuring, data/identity continuity | Strong | -| **Exchange migration** | Intermedia, on-prem → M365 | Strong | -| **MDM/Intune** | Device management, modernize | Adjacent | -| **Application modernization** | Legacy → cloud-native | Adjacent | +| Capability | Description | Fit for Targeting | +| ----------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------- | +| **Google Workspace → M365** | Migrate mail, calendar, files, permissions, UX | Strong — many orgs still on Google | +| **SharePoint migration** | On-prem→SharePoint Online, file server/Intranet builds, tenant consolidation | Strong — used in almost a quarter of inbound | +| **Tenant-to-tenant** | M&A migrations, restructuring, data/identity continuity | Strong | +| **Exchange migration** | On-prem→Exchange Online, Intermedia, hybrid Exchange | Strong | +| **MDM/Intune** | Device management rollouts, security hardening | Adjacent focus | +| **Application modernization** | Legacy apps→cloud-native, automate workflows | Adjacent focus | ### Case Study Proof Points (Cloud / Modern Workplace) -| Client | Industry | Proof | -|--------|----------|-------| -| Kaiser Permanente | Healthcare | SharePoint migration | -| Children's Hospital | Healthcare | SharePoint | -| Colorado Mountain College | Education | SharePoint migration | -| Ferguson | Manufacturing | SharePoint migration | -| Peoples Bank | Financial Services | SharePoint, Teams | -| County of San Bernardino | Government | SharePoint migration | -| Seattle Art Museum | Government | SharePoint | -| Roku | Tech | M365 migration | -| Valve | Tech | SharePoint Online migration | -| Zillow | Tech | O365 implementation | +_Examples highlight what was actually built/migrated, not generic outcomes:_ + +| Client | Industry | What Was Delivered | +| ------------------------- | ------------------ | ------------------------------------------------------------------------- | +| Kaiser Permanente | Healthcare | SharePoint migration and secure intranet for 200+ clinical teams | +| Children's Hospital | Healthcare | SharePoint Online upgrade with site redesign and HIPAA security controls | +| Colorado Mountain College | Education | SharePoint migration from legacy to O365; faculty/staff portal build | +| Ferguson | Manufacturing | Large-scale SharePoint migration; workflow automation for field workforce | +| Peoples Bank | Financial Services | SharePoint & Teams deployment; permissions/handover/restructure | +| County of San Bernardino | Government | SharePoint Online migration; custom document management setup | +| Seattle Art Museum | Government | Built new SharePoint communication site for cross-department collab | +| Roku | Tech | O365 full migration including Exchange mail, identity, and training | +| Valve | Tech | SharePoint Online migration + custom app integration | +| Zillow | Tech | O365 implementation, email/SharePoint migration, adoption enablement | + +_See full project and outcome details in [Case Study Value Prop Mapping](reports/case-studies/Case%20Study%20Value%20Prop%20Mapping.md). Every deck title indicates the actual solution delivered—migrations, automations, portals, dashboard rollouts, and more._ ### Financial Expression (Procurement Must-Have) -> "**This SharePoint migration** will reduce cost and protect revenue by putting owners + cadence around drift, resulting in lower downtime risk." +> "Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. Worth a 15-minute check if you have any orphan systems or drift right now?" -Replace "this investment" with service phrase. Every pitch must tie to: increase revenue, protect revenue, reduce cost, increase capital efficiency. +_Never use vague "investment" framing. For every case, phrase proof in terms of the business outcome and what was actually built: e.g., reduced IT cost by consolidating 12 sites to SharePoint; cut manual finance reporting by deploying Power BI dashboards; enabled secure collaboration with Teams rollout._ --- ## Part 3: Niches and Value Propositions (Data-Derived) -### Niche 1: Healthcare — SharePoint + Compliance +### Niche 1: Healthcare — SharePoint Migrations, Intranet/Compliance Projects **Data:** Healthcare × Modern Workplace 55.6% win (15/27). Inbound: SharePoint, Compliance, Dashboard, Power BI. -**Value prop:** "We help healthcare organizations migrate SharePoint, build intranets, and meet HIPAA/Purview requirements without breaking what's working." +**Value prop:** "We migrate hospital and health orgs from legacy SharePoint to compliant intranets, automate clinical document workflows, and enable HIPAA/Purview controls." -**Case studies:** Kaiser Permanente, Children's Hospital, Marin General Hospital, UW Valley Medical Center. +**Case study examples:** SharePoint migration, intranet build, permission/governance for Kaiser Permanente, Children's Hospital, EMR-integrated SharePoint for Valley Medical. -**Trigger language:** "compliance," "HIPAA," "Purview," "clinical documentation," "EMR." +**Trigger language:** "compliance," "HIPAA," "clinical portal," "EMR integration," "medical records," "secure sharing." --- -### Niche 2: Government — SharePoint + Power BI +### Niche 2: Government — Cloud Platform and BI Migrations **Data:** Government 58.3% win. Top asks: SharePoint, Power BI, Google→M365. -**Value prop:** "We help government agencies migrate from legacy SharePoint or Google Workspace to M365 with governance and Power BI for decision visibility." +**Value prop:** "We migrate cities, counties, and state agencies from on-prem SharePoint and Google Apps to Microsoft 365, build reporting portals with Power BI, and ensure .gov compliance." -**Case studies:** City of Seattle (Dynamics), WA State Parks, County of San Bernardino, City of Hillsboro. +**Case study examples:** SharePoint Online & Power BI for County of San Bernardino, Google Workspace-to-M365 for City of Hillsboro, Dynamics 365 for City of Seattle. -**Trigger language:** "migration mandate," "legacy upgrade," "CMMC," ".gov." +**Trigger language:** "migration mandate," "legacy upgrade," "CMMC," ".gov," "Power BI reporting" --- -### Niche 3: Non-Profit — Dynamics + SharePoint +### Niche 3: Non-Profit — CRM and SharePoint Transformations **Data:** Non-Profit 83.3% win. Top asks: Dynamics/CRM, SharePoint, Migration. -**Value prop:** "We help non-profits implement Dynamics and migrate SharePoint so they can focus on mission, not spreadsheets." +**Value prop:** "We help non-profits move off spreadsheets by deploying Dynamics CRM and building SharePoint sites for team efficiency and secure document sharing, no extra IT lift." -**Case studies:** Mary's Place, Cystic Fibrosis Foundation, Degrees of Change, YMCA. +**Case study examples:** Dynamics 365 CRM setup for Cystic Fibrosis Foundation, SharePoint for YMCA, mission-driven integrations for Mary's Place. -**Trigger language:** "lean team," "limited IT," "mission focus," ".org." +**Trigger language:** "donor tracking," "limited IT," "team collaboration," "secure sharing," ".org address" --- -### Niche 4: Financial Services — M365 Governance + SharePoint +### Niche 4: Financial Services — M365 Governance, SharePoint & Compliance **Data:** Financial Services × Modern Workplace 47.6% win. Finance Director × Modern Workplace 100% (6 opps). -**Value prop:** "We help financial institutions consolidate M365 tenants, migrate SharePoint, and implement governance for compliance and cost control." +**Value prop:** "We help banks and credit unions consolidate M365 tenants, migrate SharePoint, add permissions governance, and automate compliance reporting for cost/risk reduction." -**Case studies:** Chevron Credit Union, Peoples Bank, Hawaii Bank, Solarity Credit Union. +**Case study examples:** Tenant consolidation + SharePoint deployment for Peoples Bank; permissions/audit setup for Chevron Credit Union; reporting automation for Hawaii Bank. -**Trigger language:** "governance," "consolidation," "compliance," "audit." +**Trigger language:** "audit," "compliance," "governance," "consolidation," "branch IT," "risk management" --- -### Niche 5: Manufacturing / Industrial — SharePoint + Field Apps +### Niche 5: Manufacturing/Industrial — SharePoint + Field Apps & Automation **Data:** Manufacturing × Modern Workplace 46.7% win. Construction 40.9%. -**Value prop:** "We help manufacturing and construction firms migrate SharePoint, build intranets, and deploy field-service apps without overbuilding." +**Value prop:** "We migrate manufacturers and construction firms from file servers to SharePoint Online, build intranets, and develop field apps to automate data collection and project tracking." -**Case studies:** Ferguson, Snap On, CaptiveAire, Avista, Hermanson. +**Case study examples:** SharePoint migration plus field workflow automation for Ferguson and Snap On; document portal builds for Avista and Hermanson. -**Trigger language:** "file server," "legacy," "field service," "restructure." +**Trigger language:** "legacy file server," "site consolidation," "field data app," "equipment tracking," "project logs" --- -### Niche 6: Education — SharePoint Migration +### Niche 6: Education — SharePoint and Faculty Collaboration Portals **Data:** Education × Modern Workplace 36.4% win. Education × Infrastructure 50%. -**Value prop:** "We help schools and universities migrate from on-prem SharePoint or file servers to M365 with minimal disruption to faculty and staff." +**Value prop:** "We migrate K-12 and higher ed from on-prem SharePoint or file shares to cloud, building secure, user-friendly portals for faculty/staff — no disruption." -**Case studies:** Colorado Mountain College, Seattle Pacific Univ, Thales Academy. +**Case study examples:** O365 portal rollouts at Colorado Mountain College and Seattle Pacific University, migration projects at Thales Academy. -**Trigger language:** "migration," "classic to modern," "faculty adoption." +**Trigger language:** "faculty portal," "student document access," "classic to modern SharePoint," "adoption" --- @@ -382,143 +362,143 @@ Replace "this investment" with service phrase. Every pitch must tie to: increase ### Healthcare (35 companies) -| # | Company | Location | Why Target | -|---|---------|----------|------------| -| 1 | Ascension Seton | Austin, TX | Large system; SharePoint/compliance likely | -| 2 | Baylor Scott & White Health | Austin/Dallas, TX | Major system; migration volume | -| 3 | St. David's HealthCare | Austin, TX | Multi-facility; intranet/collab needs | -| 4 | Texas Oncology | Austin, TX | Clinical workflows; compliance | -| 5 | Dell Children's Medical Center | Austin, TX | Pediatric; EHR/collab | -| 6 | Heart Hospital of Austin | Austin, TX | Specialized; IT modernization | -| 7 | Texas Children's Hospital Austin | Austin, TX | New presence; build-out | -| 8 | Austin Regional Clinic | Austin, TX | Multi-site; shared systems | -| 9 | Hanger, Inc. | Austin, TX | Public company; enterprise IT | -| 10 | Curative | Austin, TX | Health tech; scalable infra | -| 11 | Carbon Health | Austin, TX | Digital health; rapid scale | -| 12 | Luminex Corporation | Austin, TX | Life sciences; data/collab | -| 13 | AbbVie (Austin presence) | Austin, TX | Pharma; M365 governance | -| 14 | Abbott (Austin presence) | Austin, TX | Med device; global standards | -| 15 | Suvida Healthcare | Austin, TX | Senior care; growth mode | -| 16 | Babson Diagnostics | Austin, TX | Diagnostics; lab systems | -| 17 | Goldfinch Health | Austin, TX | Health tech; cloud-native | -| 18 | SonderMind | Austin, TX | Behavioral health; scale | -| 19 | One Medical (Austin) | Austin, TX | Primary care; tech-forward | -| 20 | Meadows Behavioral Health | Austin, TX | Behavioral; multi-site | -| 21 | Marbridge Foundation | Austin, TX | Disability services; non-profit adj | -| 22 | Samaritan Center | Austin, TX | Counseling; community | -| 23 | The YMCA of Austin | Austin, TX | Non-profit; membership systems | -| 24 | Integrative Creative Therapy | Austin, TX | Healthcare adj | -| 25 | SenoPro | Austin, TX | Medical device; data | -| 26 | Cedar Park Regional Medical Center | Cedar Park, TX | Regional hospital | -| 27 | Seton Healthcare Family | Austin, TX | Multi-hospital system | -| 28 | North Austin Medical Center | Austin, TX | HCA facility | -| 29 | Round Rock Medical Center | Round Rock, TX | Regional | -| 30 | South Austin Hospital | Austin, TX | Acute care | -| 31 | St. David's Medical Center | Austin, TX | Flagship facility | -| 32 | Austin Radiological Association | Austin, TX | Multi-site imaging | -| 33 | Capitol Anesthesiology Association | Austin, TX | Large group | -| 34 | Texas Spine & Joint Hospital | Austin, TX | Specialty | -| 35 | Arise Medical | Austin, TX | Urgent care chain | +| # | Company | Location | Why Target | +| --- | ---------------------------------- | ----------------- | ------------------------------------------------------------------------------ | +| 1 | Ascension Seton | Austin, TX | Large system; likely SharePoint migration, legacy cleanup, or compliance audit | +| 2 | Baylor Scott & White Health | Austin/Dallas, TX | Major system; large-scale migration or intranet build | +| 3 | St. David's HealthCare | Austin, TX | Multi-facility; needs collaboration/intranet & data governance | +| 4 | Texas Oncology | Austin, TX | Clinical workflows; compliance, document mgmt, migration | +| 5 | Dell Children's Medical Center | Austin, TX | Pediatric; EHR/EMR integrations, SharePoint modernization | +| 6 | Heart Hospital of Austin | Austin, TX | Specialized; IT modernization, permissions audit | +| 7 | Texas Children's Hospital Austin | Austin, TX | New presence; likely greenfield build-out, compliant migration | +| 8 | Austin Regional Clinic | Austin, TX | Multi-site; needs shared SharePoint systems, secure portals | +| 9 | Hanger, Inc. | Austin, TX | Public company; enterprise SharePoint/Teams deployment | +| 10 | Curative | Austin, TX | Health tech; scalable infrastructure, collaboration tools | +| 11 | Carbon Health | Austin, TX | Digital health; rapid scale, cloud-based workflows | +| 12 | Luminex Corporation | Austin, TX | Life sciences; data integration, dashboards, SharePoint upgrades | +| 13 | AbbVie (Austin presence) | Austin, TX | Pharma; tight M365 governance, permissions drift checks | +| 14 | Abbott (Austin presence) | Austin, TX | Med device; migration, compliance, global rollout | +| 15 | Suvida Healthcare | Austin, TX | Senior care; likely needs migration, modernized document mgmt | +| 16 | Babson Diagnostics | Austin, TX | Diagnostics; lab systems integration, secure portal | +| 17 | Goldfinch Health | Austin, TX | Health tech; cloud-native deployment, automation | +| 18 | SonderMind | Austin, TX | Behavioral health; scalable cloud, secure sharing | +| 19 | One Medical (Austin) | Austin, TX | Primary care; tech-forward, rapid migration | +| 20 | Meadows Behavioral Health | Austin, TX | Behavioral; multi-site, needs secure portal, cloud file structure | +| 21 | Marbridge Foundation | Austin, TX | Disability services; intranet setup, permissions controls | +| 22 | Samaritan Center | Austin, TX | Counseling; community, simple SharePoint or Teams automation | +| 23 | The YMCA of Austin | Austin, TX | Non-profit; membership/document portals, M365 governance | +| 24 | Integrative Creative Therapy | Austin, TX | Healthcare adj; secure file sharing, lightweight collaboration | +| 25 | SenoPro | Austin, TX | Medical device; data dashboards, portal access | +| 26 | Cedar Park Regional Medical Center | Cedar Park, TX | Regional hospital; migration, permissions, intranet build | +| 27 | Seton Healthcare Family | Austin, TX | Multi-hospital system; scale, migration, policy management | +| 28 | North Austin Medical Center | Austin, TX | HCA facility; compliance migration, permissions cleanup | +| 29 | Round Rock Medical Center | Round Rock, TX | Regional; potential SharePoint/Teams deployment | +| 30 | South Austin Hospital | Austin, TX | Acute care; EHR/SharePoint workflows, modernization | +| 31 | St. David's Medical Center | Austin, TX | Flagship facility; SharePoint consolidation, permissions drift review | +| 32 | Austin Radiological Association | Austin, TX | Multi-site imaging; collaboration, file server migration | +| 33 | Capitol Anesthesiology Association | Austin, TX | Large group; medical records, secure document sharing | +| 34 | Texas Spine & Joint Hospital | Austin, TX | Specialty; EMR/SharePoint modernization, portals | +| 35 | Arise Medical | Austin, TX | Urgent care chain; permissions/IT consolidation, simple migration | --- ### Financial Services / Credit Unions / Banks (15 companies) -| # | Company | Location | Why Target | -|---|---------|----------|------------| -| 36 | Experian | Costa Mesa, TX presence | Already in CRM; expansion | -| 37 | Austin Capital Bank | Austin, TX | Regional; M365 governance | -| 38 | Amplify Credit Union | Austin, TX | CU; member systems | -| 39 | University Federal Credit Union | Austin, TX | CU; growth | -| 40 | Velocity Credit Union | Austin, TX | CU; digital | -| 41 | Randolph-Brooks FCU | San Antonio, TX | Large CU; TX presence | -| 42 | Firstmark Credit Union | San Antonio, TX | CU; IT modernization | -| 43 | UFCU (University FCU) | Austin, TX | Education-adj; SharePoint | -| 44 | JPMorgan Chase (Austin ops) | Austin, TX | Major; regional IT | -| 45 | Frost Bank | San Antonio, TX | Regional bank; compliance | -| 46 | Broadway Bank | San Antonio, TX | Regional; IT | -| 47 | Veritex Community Bank | Dallas, TX | Growth; mergers | -| 48 | Spirit of Texas Bank | Conroe, TX | Regional; cloud | -| 49 | Independent Bank | McKinney, TX | Texas-based; branches | -| 50 | Cadence Bank | Houston, TX | Regional; M&A history | +| # | Company | Location | Why Target | +| --- | ------------------------------- | ----------------------- | ------------------------------------------------------------ | +| 36 | Experian | Costa Mesa, TX presence | Already in CRM; tenant expansion, SharePoint consolidation | +| 37 | Austin Capital Bank | Austin, TX | Regional bank; likely needs M365 governance & migration | +| 38 | Amplify Credit Union | Austin, TX | Credit union; member systems, SharePoint, secure doc portals | +| 39 | University Federal Credit Union | Austin, TX | Growth; permissions/Teams rollouts, collaboration upgrades | +| 40 | Velocity Credit Union | Austin, TX | Digital-forward; SharePoint/Teams, automated workflow needs | +| 41 | Randolph-Brooks FCU | San Antonio, TX | Large; branch migration, governance, permissions drift | +| 42 | Firstmark Credit Union | San Antonio, TX | IT modernization, move to SharePoint/M365, secure sites | +| 43 | UFCU (University FCU) | Austin, TX | Education-adj; SharePoint migration, faculty/staff site | +| 44 | JPMorgan Chase (Austin ops) | Austin, TX | Major; permissions/governance review, regional migration | +| 45 | Frost Bank | San Antonio, TX | Regional; cloud migration, compliance, audit-ready setup | +| 46 | Broadway Bank | San Antonio, TX | IT upgrades, system consolidation | +| 47 | Veritex Community Bank | Dallas, TX | Growth; M&A, tenant migration, SharePoint consolidation | +| 48 | Spirit of Texas Bank | Conroe, TX | Tenant-to-tenant or cloud migration focus | +| 49 | Independent Bank | McKinney, TX | Branch/departmental migrations, data consolidation | +| 50 | Cadence Bank | Houston, TX | Regional; history of M&A, role for tenant consolidation | --- ### Government / Municipal / Education (20 companies) -| # | Company | Location | Why Target | -|---|---------|----------|------------| -| 51 | City of Austin | Austin, TX | Major municipality; M365 | -| 52 | Travis County | Austin, TX | County gov; SharePoint | -| 53 | Texas Education Agency | Austin, TX | State; large scale | -| 54 | Austin Independent School District | Austin, TX | K-12; migration | -| 55 | Round Rock ISD | Round Rock, TX | Large district | -| 56 | Pflugerville ISD | Pflugerville, TX | Growth district | -| 57 | Leander ISD | Leander, TX | Fast-growing | -| 58 | University of Texas System | Austin, TX | Multi-campus; SharePoint | -| 59 | Texas State University | San Marcos, TX | Large; IT sprawl | -| 60 | Austin Community College | Austin, TX | Community college | -| 61 | Hays County | San Marcos, TX | County; growth | -| 62 | Williamson County | Georgetown, TX | County; IT | -| 63 | City of Round Rock | Round Rock, TX | Municipality | -| 64 | City of Cedar Park | Cedar Park, TX | Municipality | -| 65 | City of Georgetown | Georgetown, TX | Municipality | -| 66 | City of San Marcos | San Marcos, TX | University town | -| 67 | Texas Comptroller | Austin, TX | State agency | -| 68 | Texas Department of Transportation | Austin, TX | Large agency | -| 69 | Lower Colorado River Authority | Austin, TX | Utility; gov-adj | -| 70 | Texas Municipal League | Austin, TX | Member orgs; reach | +| # | Company | Location | Why Target | +| --- | ---------------------------------- | ---------------- | -------------------------------------------------------------- | +| 51 | City of Austin | Austin, TX | Major municipality; M365 intranet or SharePoint migration | +| 52 | Travis County | Austin, TX | County government; SharePoint consolidation, portal build | +| 53 | Texas Education Agency | Austin, TX | State; large O365/SharePoint migration, Power BI for reporting | +| 54 | Austin Independent School District | Austin, TX | K-12; migration, faculty portal, document management | +| 55 | Round Rock ISD | Round Rock, TX | Large district; O365 migration, permissions setup | +| 56 | Pflugerville ISD | Pflugerville, TX | Growth; SharePoint rollout, modern site for staff | +| 57 | Leander ISD | Leander, TX | Fast-growing; intranet and document management needs | +| 58 | University of Texas System | Austin, TX | Multi-campus; SharePoint/Teams consolidation, dashboard setup | +| 59 | Texas State University | San Marcos, TX | Large; migrate/modernize faculty & student portals | +| 60 | Austin Community College | Austin, TX | Community college; file server to SharePoint migration | +| 61 | Hays County | San Marcos, TX | County; document management, permissions governance | +| 62 | Williamson County | Georgetown, TX | County; IT/intranet consolidation, compliance audit | +| 63 | City of Round Rock | Round Rock, TX | Municipality; O365 migration, Power BI portals | +| 64 | City of Cedar Park | Cedar Park, TX | Municipality; intranet, permissions review | +| 65 | City of Georgetown | Georgetown, TX | Municipality; document sharing, compliance rollout | +| 66 | City of San Marcos | San Marcos, TX | University town; collaboration sites, legacy migration | +| 67 | Texas Comptroller | Austin, TX | State agency; data reporting automation, secure SharePoint | +| 68 | Texas Department of Transportation | Austin, TX | Large; likely tenant or SharePoint migration, dashboarding | +| 69 | Lower Colorado River Authority | Austin, TX | Utility/government; governance, intranet, Power BI | +| 70 | Texas Municipal League | Austin, TX | Association; member access portals, SharePoint adoption | --- ### Manufacturing / Industrial / Construction (15 companies) -| # | Company | Location | Why Target | -|---|---------|----------|------------| -| 71 | Dell Technologies | Round Rock, TX | Enterprise; existing relationship | -| 72 | Samsung Austin Semiconductor | Austin, TX | Manufacturing; IT scale | -| 73 | NXP Semiconductor | Austin, TX | Chip; global IT | -| 74 | Applied Materials | Austin, TX | Semiconductor; enterprise | -| 75 | Flex Ltd. | Austin, TX | Manufacturing; global | -| 76 | Cirrus Logic | Austin, TX | Semiconductor; growth | -| 77 | SolarWinds | Austin, TX | Software; infra | -| 78 | National Instruments (NI) | Austin, TX | Industrial; data | -| 79 | Indeed | Austin, TX | Tech; large employer | -| 80 | Whole Foods (Amazon) | Austin, TX | Retail; enterprise IT | -| 81 | H-E-B | San Antonio, TX | Retail; TX pride; IT scale | -| 82 | Blue Bell Creameries | Brenham, TX | Manufacturing; legacy | -| 83 | Trico Products | Austin, TX | Manufacturing | -| 84 | Bury + Partners | Austin, TX | Engineering; AEC | -| 85 | Pape-Dawson Engineers | San Antonio, TX | Civil eng; growth | +| # | Company | Location | Why Target | +| --- | ---------------------------- | --------------- | -------------------------------------------------------------- | +| 71 | Dell Technologies | Round Rock, TX | Enterprise; SharePoint/Teams scale, identity/workflow | +| 72 | Samsung Austin Semiconductor | Austin, TX | Manufacturing; large-scale document management, M365 | +| 73 | NXP Semiconductor | Austin, TX | Chip; workflow automation, field data portal | +| 74 | Applied Materials | Austin, TX | Semiconductor; legacy SharePoint migration, field sites | +| 75 | Flex Ltd. | Austin, TX | Manufacturing; global intranet, SharePoint consolidation | +| 76 | Cirrus Logic | Austin, TX | Semiconductor; M365/Teams rollout, permissions update | +| 77 | SolarWinds | Austin, TX | Software; IT infrastructure modernization | +| 78 | National Instruments (NI) | Austin, TX | Industrial; data integration, field data workflow | +| 79 | Indeed | Austin, TX | Tech; large employer, collaboration sites | +| 80 | Whole Foods (Amazon) | Austin, TX | Retail; enterprise IT automation, site consolidation | +| 81 | H-E-B | San Antonio, TX | Retail; migration of large file shares, workflow modernization | +| 82 | Blue Bell Creameries | Brenham, TX | Manufacturing; legacy cleanup, intranet build | +| 83 | Trico Products | Austin, TX | Manufacturing; SharePoint rollout, field service support | +| 84 | Bury + Partners | Austin, TX | Engineering/AEC; project tracking portal, cloud migration | +| 85 | Pape-Dawson Engineers | San Antonio, TX | Civil eng; workflows, file/construction data automation | --- ### Non-Profit / Associations (10 companies) -| # | Company | Location | Why Target | -|---|---------|----------|------------| -| 86 | Austin Community Foundation | Austin, TX | Non-profit; grants | -| 87 | United Way for Greater Austin | Austin, TX | Non-profit; CRM/SharePoint | -| 88 | Caritas of Austin | Austin, TX | Social services | -| 89 | Meals on Wheels Central Texas | Austin, TX | Non-profit; operations | -| 90 | Foundation Communities | Austin, TX | Housing non-profit | -| 91 | Texas Tribune | Austin, TX | Non-profit media | -| 92 | KLRU (PBS Austin) | Austin, TX | Media; content | -| 93 | Austin Habitat for Humanity | Austin, TX | Non-profit; construction | -| 94 | SAFE Alliance | Austin, TX | Social services | -| 95 | Workers Defense Project | Austin, TX | Advocacy; operations | +| # | Company | Location | Why Target | +| --- | ----------------------------- | ---------- | -------------------------------------------------------- | +| 86 | Austin Community Foundation | Austin, TX | Grants/operations; donor portal, document automation | +| 87 | United Way for Greater Austin | Austin, TX | CRM/SharePoint overhaul, member service workflows | +| 88 | Caritas of Austin | Austin, TX | Social services; collaboration site, secure storage | +| 89 | Meals on Wheels Central Texas | Austin, TX | Operations automation, document sharing/upgrades | +| 90 | Foundation Communities | Austin, TX | Housing; SharePoint/Teams for team/partner collaboration | +| 91 | Texas Tribune | Austin, TX | Media; content site migration, creative workflow | +| 92 | KLRU (PBS Austin) | Austin, TX | Media; creative asset portal, Teams upgrade | +| 93 | Austin Habitat for Humanity | Austin, TX | Construction; project management portals | +| 94 | SAFE Alliance | Austin, TX | Social services; secure site for team/volunteers | +| 95 | Workers Defense Project | Austin, TX | Advocacy; document automation, project portal | --- ### Professional Services / Tech (5 companies) -| # | Company | Location | Why Target | -|---|---------|----------|------------| -| 96 | KPMG (Austin) | Austin, TX | Professional services | -| 97 | Deloitte (Austin) | Austin, TX | Consulting; M365 | -| 98 | Accenture (Austin) | Austin, TX | Large; delivery centers | -| 99 | EY (Austin) | Austin, TX | Professional services | -| 100 | Infosys (Austin) | Austin, TX | Tech services; scale | +| # | Company | Location | Why Target | +| --- | ------------------ | ---------- | ------------------------------------------------------------------ | +| 96 | KPMG (Austin) | Austin, TX | Professional services; M365/Teams upgrade, permissions audit | +| 97 | Deloitte (Austin) | Austin, TX | Consulting; M365 deployment/program, adoption enablement | +| 98 | Accenture (Austin) | Austin, TX | Delivery center; scale-out of Teams, SharePoint modernization | +| 99 | EY (Austin) | Austin, TX | Professional services; documentation workflow modernization | +| 100 | Infosys (Austin) | Austin, TX | Tech services; cloud infrastructure migration, automation projects | --- @@ -526,30 +506,28 @@ Replace "this investment" with service phrase. Every pitch must tie to: increase ### Messaging by Segment -| Segment | Hook | CTA | Phrase | -|---------|------|-----|--------| -| Healthcare | "Compliance and drift often go hand-in-hand with legacy SharePoint." | "Worth a 15-min check on orphan systems or permissions drift?" | "this SharePoint migration" | -| Government | "Most waste comes from 'nobody owns this system anymore.'" | "Worth a 15-min check if you have any orphan systems or drift?" | "this SharePoint migration" / "this Power BI deployment" | -| Non-Profit | "Lean teams need systems that don't create more work." | "Quick audit of where your SharePoint or M365 might be drifting?" | "this Dynamics implementation" / "this SharePoint migration" | -| Financial | "Governance and consolidation reduce risk and cost." | "15-min review of tenant consolidation or M365 governance?" | "this SharePoint migration" / "M365 consolidation" | +| Segment | Hook | CTA | Phrase | +| ---------- | ------------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- | +| Healthcare | "Orphaned sites and permissions drift drive HIPAA risk—and slow teams." | "Worth a 15-min check to see where SharePoint or permissions are drifting?" | Ask: "Are your teams still relying on outdated SharePoint sites for clinical docs?" | +| Government | "Most government waste comes from legacy file shares with poor controls." | "15-min review—where can cloud migration make compliance simpler?" | "We’ve helped agencies build secure .gov portals for FOIA, public docs, and more." | +| Non-Profit | "Lean teams need donor & grant info at their fingertips—not more spreadsheets." | "Quick audit: is your staff losing time tracking docs manually?" | "Deploying SharePoint/Teams cut manual reporting and improved grant tracking." | +| Financial | "Consolidation and governance cut IT risk and audit pain for banks." | "15-min review of your M365 setup—are you audit-ready?" | "Deployed automated permissions/audit logging for regional credit unions." | ### Channel -- **Email first** — IT Director wins on email, not LinkedIn-only. -- **LinkedIn Day 3, 7** — Follow-up only for IT/Infrastructure. -- **Austin angle** — "Austin-based consulting firm" for local coffee/call. +- **Email first** — IT/Director, Operations get higher response on email for these solutions. +- **LinkedIn (Day 3, 7)** — Use only as follow-up for IT/Infrastructure. Highlight local/Austin credibility. +- **Local angle** — "Austin-based consulting partner" for relevance and credibility. ### Next Steps -1. **Export Contact Level:** Get IT Director, Director of IT, VP Information Systems, CTO at each company. -2. **Domain Check:** Add Email → run `company_target_matrix.py` for company type inference. -3. **Account Management:** Prioritize existing Affirma customers for expansion (63% win). -4. **PPC Conversion:** 177 qualified leads; improve follow-up, don't cut spend. -5. **Non-Profit + Government Lists:** Build dedicated lists (strongest levers). +1. **Export Contact Level:** Target IT Director, Director of IT, VP Information Systems, CTO for each account. +2. **Domain Check:** Collect email domains, then run `company_target_matrix.py` to infer company type and personalize outreach. +3. **Account Management:** Prioritize existing Affirma customers for expansion—statistically highest win rate. +4. **PPC Conversion:** 177 qualified leads—improve follow-up, don’t cut paid search yet. +5. **Non-Profit & Gov. Lists:** Build dedicated lists for repeatable, specialty messaging. --- -**Regenerate:** Re-run `scripts/company_target_matrix.py`, `scripts/analyze_inbound.py` when new data arrives. - - +**Regenerate:** Re-run `scripts/company_target_matrix.py`, `scripts/analyze_inbound.py` when new data arrives. Update case study mappings and segment value props as new decks/projects get added. diff --git a/SKILLS.md b/SKILLS.md new file mode 100644 index 0000000..46ae90c --- /dev/null +++ b/SKILLS.md @@ -0,0 +1,693 @@ +# Agent Skills — Executable Playbook + +**Purpose:** No guessing. Use these skills to fetch real data, validate hypotheses, and produce evidence-based outputs. Linear, step-by-step. + +**Tiers:** +- **Foundation (Skills 1–13):** Single-script execution. When to use, step-by-step, validate, common failures. +- **Elite (Elite 1–10):** Composite workflows, cross-source synthesis, prioritization, export flows, anti-patterns. + +--- + +## Principles + +1. **Run scripts, don't guess.** If you need company tech stack, run `detect_tech_stack.py`. If you need lead–campaign mapping, run `assign_lead_to_campaign.py`. +2. **Validate before asserting.** Check output files exist, row counts, and that results match the question. +3. **Follow the chain.** Most workflows depend on prior steps. See "Prerequisites" for each skill. +4. **Elite = composite + evidence.** Don't just run one script. Chain them. Cross-reference. Weight by win rate. Produce platform-ready outputs. + +--- + +## Linear Workflow Reference + +| Goal | Workflow | Scripts (in order) | +| --------------------------------- | ------------------- | -------------------------------------------------------- | +| Austin leads → markdown list | Scrape → Export | `scrape_austin_chamber.py` → `export_austin_leads.py` | +| Austin leads → tech-enriched list | Scrape → Enrich | `scrape_austin_chamber.py` → `enrich_leads_with_tech.py` | +| Single company tech stack | Detect only | `detect_tech_stack.py "https://..."` | +| Lead list → campaign assignment | Assign batch | `assign_lead_to_campaign.py --csv ... --out ...` | +| Validate lead→campaign rules | Evidence analysis | `analyze_lead_campaign_evidence.py` | +| Company type → service phrase | Target matrix | `company_target_matrix.py` | +| Prospect landing page audit | Conversion teardown | `run_conversion_teardown.py "https://..."` | +| Inbound ask patterns | Deep parse | `deep_parse_inbound.py` | + +--- + +## Skill 1: Detect Tech Stack from Website + +**When:** You need to know what technology a company uses (SharePoint, WordPress, M365, HubSpot, etc.). Do not guess. + +### Step-by-step + +1. **Get the company website URL.** From Austin directory, ZoomInfo, or manual lookup. Must be a working URL (e.g., `https://example.com`). +2. **Run the script:** + ```bash + python3 scripts/detect_tech_stack.py "https://example.com" + ``` +3. **For piping or JSON output:** + ```bash + python3 scripts/detect_tech_stack.py "https://example.com" --json + ``` + +### Prerequisites + +- Network access +- URL must respond (200, not 403/404) + +### Output + +- **Human:** Printed to stdout (technologies + evidence snippets) +- **JSON:** `technologies` (list), `evidence` (what matched), `meta_generator`, `meta_application` + +### How to validate + +| Check | How | +| ---------------- | ------------------------------------------------------------------- | +| Script succeeded | Exit code 0, no "ERROR" in stderr | +| Tech detected | `technologies` list is non-empty, or "(None detected)" is explicit | +| Evidence exists | Each tech has an evidence snippet (e.g., "matched: sharepoint.com") | + +### Common failures + +- **"Could not fetch URL"** — SSL, network block, or URL dead. Try different URL or `https://` prefix. +- **"(None detected)"** — Site may use client-side rendering (SPA) or obfuscation. HTML might not contain server-side tech signals. + +--- + +## Skill 2: Scrape Austin Chamber Directory + +**When:** You need fresh leads from Austin Chamber of Commerce member directory. + +### Step-by-step + +1. **Choose categories.** Default is Health Care (328). Add IT (323), Finance (326), Manufacturing (330) as needed. +2. **Run the script:** + ```bash + python3 scripts/scrape_austin_chamber.py --categories 328 323 + ``` +3. **For full directory (no category filter):** + ```bash + python3 scripts/scrape_austin_chamber.py --no-filter + ``` +4. **Test with limited pages:** + ```bash + python3 scripts/scrape_austin_chamber.py --categories 328 --max-pages 2 + ``` + +### Prerequisites + +- `pip install requests` (or `pip install -r requirements.txt` if present) +- Network access to `austinchamber.com` + +### Output + +- `data/austin-chamber/directory.json` — Full JSON array of orgs +- `data/austin-chamber/directory.csv` — Same data, CSV + +### How to validate + +| Check | How | +| ---------------- | ---------------------------------------------------------------- | +| Script succeeded | "Collected N organizations", "Saved to ..." | +| Data exists | `data/austin-chamber/directory.json` exists, non-empty | +| Content | Open JSON: each item has `title`, `webUrl`, `categories`, `tier` | +| Count | `len(json.load(...))` or `wc -l directory.csv` minus header | + +### Category reference + +| ID | Category | +| --- | -------------------------- | +| 328 | Health Care | +| 323 | Computers, IT & Technology | +| 326 | Finance | +| 330 | Manufacturing | + +--- + +## Skill 3: Export Austin Leads to Markdown + +**When:** You need a printable or shareable markdown list of Austin registry leads. + +### Step-by-step + +1. **Ensure directory data exists.** Run Skill 2 first, or use existing `data/austin-chamber/directory.json`. +2. **Export (use existing data):** + ```bash + python3 scripts/export_austin_leads.py + ``` +3. **Re-scrape then export:** + ```bash + python3 scripts/export_austin_leads.py --refresh + ``` +4. **Custom categories when refreshing:** + ```bash + python3 scripts/export_austin_leads.py --refresh --categories 328 323 + ``` + +### Prerequisites + +- `data/austin-chamber/directory.json` exists (or use `--refresh`) + +### Output + +- `reports/leads/Austin Registry Leads.md` — Table: #, Company, Website, Categories, Tier, LinkedIn + +### How to validate + +| Check | How | +| ------------- | ------------------------------------------------ | +| File created | `reports/Austin Registry Leads.md` exists | +| Table present | Open file; see `## Lead List` and markdown table | +| Count matches | Row count in table = lead count in header | + +--- + +## Skill 4: Enrich Leads with Tech Stack + +**When:** You need each company's detected tech stack (from website HTML) in one document. + +### Step-by-step + +1. **Ensure directory data exists.** Run Skill 2 first. +2. **Quick test (5 URLs):** + ```bash + python3 scripts/enrich_leads_with_tech.py --limit 5 + ``` +3. **Default (first 20 URLs):** + ```bash + python3 scripts/enrich_leads_with_tech.py + ``` +4. **All URLs (slow, use with caution):** + ```bash + python3 scripts/enrich_leads_with_tech.py --no-limit + ``` + +### Prerequisites + +- `data/austin-chamber/directory.json` with `webUrl` populated +- Script calls `detect_tech_stack.py` internally + +### Output + +- `reports/leads/Austin Leads With Tech Stack.md` — Table: Company, Website, Tech Stack, Categories + +### How to validate + +| Check | How | +| --------------------- | -------------------------------------------------------------------------- | +| File created | `reports/Austin Leads With Tech Stack.md` exists | +| Tech column populated | At least some rows show tech (SharePoint, WordPress, etc.) or "—" for none | +| No mass failures | Console shows success per URL; "FAIL" only for individual fetch errors | + +--- + +## Skill 5: Assign Lead to Campaign + +**When:** You have leads with Job_Title and Industry and need campaign + pain phrase for outreach (Dynamics 365, ZoomInfo, Gong). + +### Step-by-step + +1. **Single lead:** + ```bash + python3 scripts/assign_lead_to_campaign.py "IT Director" "Healthcare" + ``` +2. **Batch from CSV:** Ensure CSV has columns `Job_Title` (or `job_title`, `Title`) and `Industry` (or `industry`). + ```bash + python3 scripts/assign_lead_to_campaign.py --csv data/leads/export.csv --out reports/leads_assigned.csv + ``` +3. **Summary (no args):** + ```bash + python3 scripts/assign_lead_to_campaign.py + ``` + +### Prerequisites + +- For batch: CSV with `Job_Title` and `Industry` columns +- Script uses built-in rules (no external data required) + +### Output + +- **Single:** Prints `campaign_id`, `campaign_name`, `affirma_service`, `service_phrase`, `priority_tier`, `function`, `seniority` +- **Batch:** CSV with same columns appended + +### How to validate + +| Check | How | +| -------------------------- | ------------------------------------------------------------------------------------------------------------- | +| Assignment made | `campaign_id` is one of 01–10 | +| Phrase is complete thought | `service_phrase` is a full sentence (e.g., "Most waste comes from systems nobody officially owns anymore...") | +| Industry tier | `priority_tier` 1 = highest win industries | + +### Reference + +- Full rules: `reports/messaging/Messaging Lookup.md` +- Evidence (when Oops.csv changes): `python3 scripts/analyze_lead_campaign_evidence.py` + +--- + +## Skill 6: Analyze Lead–Campaign Evidence + +**When:** Oops.csv was updated and you need to validate or refresh the lead→campaign assignment rules. + +### Step-by-step + +1. **Run analysis:** + ```bash + python3 scripts/analyze_lead_campaign_evidence.py + ``` +2. **Stricter minimum sample (n≥3):** + ```bash + python3 scripts/analyze_lead_campaign_evidence.py --min-n 3 + ``` +3. **JSON output (for pipelines):** + ```bash + python3 scripts/analyze_lead_campaign_evidence.py --json > data/patterns/lead_campaign_evidence.json + ``` + +### Prerequisites + +- `data/opportunities/Oops.csv` exists with `Status`, `Job_Title`, `Industry`, `Primary_Service` + +### Output + +- **Human:** Industry × Seniority × Service, Function × Seniority × Industry × Service tables (top segments by win rate) +- **JSON:** `industry_seniority_service`, `function_seniority_industry_service`, `meta` + +### How to validate + +| Check | How | +| -------------- | -------------------------------------------------------------------------------------------------- | +| Data loaded | "Total opps: N" matches Oops.csv row count | +| Filtered count | "Filtered: N" (Director/Manager/VP/C-level only) | +| Top segments | Tables show Industry, Seniority, Service, Won, Total, Win% | +| Use for rules | Compare top win-rate combos to `reports/messaging/Messaging Lookup.md`; update if patterns shifted | + +--- + +## Skill 7: Messaging Lookup (Company Type, Lead Assignment) + +**When:** You need Company Type × Ask → Service + pain phrase for messaging. Use when Inbound.xlsx or similar export has Description (and optionally Email). + +### Step-by-step + +1. **Default (Inbound.xlsx):** + ```bash + python3 scripts/company_target_matrix.py + ``` +2. **Custom file (Excel or CSV):** + ```bash + python3 scripts/company_target_matrix.py path/to/leads.xlsx + ``` +3. **For domain-based company inference:** Export must include `Email` column. + +### Prerequisites + +- `data/Inbound/Inbound.xlsx` (or custom path) with `Description` column +- Optional: `Email` column for domain inference (.gov, .edu, etc.) + +### Output + +- Printed to stdout: Company Type × Ask, target recommendations, service phrases +- Script does not write to files by default; capture stdout if needed + +### How to validate + +| Check | How | +| -------------------- | ----------------------------------------------------- | +| Data loaded | "Data: path (N leads)" | +| Company types | Output lists Government, Healthcare, Non-Profit, etc. | +| Phrases are complete | Service phrases are full sentences, not fragments | + +--- + +## Skill 8: Conversion Teardown (Landing Page Audit) + +**When:** You need a quick audit of a prospect's landing page or conversion flow (Marketing × Creative campaigns). + +### Step-by-step + +1. **Run with prospect URL:** + ```bash + python3 scripts/run_conversion_teardown.py "https://prospect-site.com/landing-page" + ``` + +### Prerequisites + +- Valid URL +- Network access + +### Output + +- Printed to stdout: observations on conversion elements, CTAs, form length, trust signals, etc. + +--- + +## Skill 9: Attribution Check (Prospect Domain) + +**When:** You need to check a prospect's domain for attribution/tracking setup (Marketing × Creative). + +### Step-by-step + +1. **Run with prospect URL or domain:** + ```bash + python3 scripts/run_attribution_check.py "https://prospect-site.com" + ``` + +### Prerequisites + +- Valid URL +- Network access + +### Output + +- Printed to stdout: attribution/tracking observations + +--- + +## Skill 10: Deep Parse Inbound + +**When:** You need ask distribution, Industry × Ask patterns, and pain language from inbound leads. + +### Step-by-step + +1. **Run:** + ```bash + python3 scripts/deep_parse_inbound.py + ``` + +### Prerequisites + +- `data/Inbound/Inbound.xlsx` with `Description` (and optional `Email`) + +### Output + +- Printed to stdout: Ask distribution, Title × Ask, Industry × Ask, Source × Ask, pain point frequency, employee bands +- Reference report (may need manual sync): `reports/inbound/Inbound What They Want.md` + +--- + +## Skill 11: Run Segmentation Analysis + +**When:** You need win rates by Service, Industry, Source, and segment attractiveness scores. + +### Step-by-step + +1. **Run:** + ```bash + python3 scripts/run_analysis.py + ``` + +### Prerequisites + +- `data/opportunities/Oops.csv` with `Status`, `Primary_Service`, `Industry`, `Source_Campaign`, `Job_Title` + +### Output + +- Printed to stdout: By Service, By Industry, By Source, Segment Attractiveness Score, Industry × Service + +### How to validate + +- "Total opportunities: N" matches CSV +- Top segments have Won/Total and Win% + +--- + +## Skill 12: Persona Normalization + +**When:** You need Function × Seniority breakdown and LinkedIn/segment fit from opportunity data. + +### Step-by-step + +1. **Run:** + ```bash + python3 scripts/persona_normalization.py + ``` + +### Prerequisites + +- `data/opportunities/Oops.csv` + +### Output + +- Printed to stdout: Persona normalization, LinkedIn channel fit, target lists, copy variants + +--- + +## Validation Checklist (Before Asserting) + +Before you state a finding, confirm: + +| Assertion | Validation step | +| ------------------------------------ | --------------------------------------------------------------------------------- | +| "Company X uses SharePoint" | Run `detect_tech_stack.py` on X's URL; check `technologies` contains "SharePoint" | +| "N Austin leads" | `data/austin-chamber/directory.json` exists; `len(json.load(...))` = N | +| "Lead should get campaign 03" | Run `assign_lead_to_campaign.py "Title" "Industry"`; check `campaign_id` | +| "Win rate for Healthcare × MW is X%" | Run `analyze_lead_campaign_evidence.py` or `run_analysis.py`; find matching row | +| "Company type is Government" | Run `company_target_matrix.py` on export with Email; check domain or output | + +--- + +--- + +## Skill 13: ATX Lead Scoring (Modern Workplace / Marketing Fit) + +**When:** You have Austin open leads or director exports and need to rank by Modern Workplace or Marketing Services fit. + +### Step-by-step + +1. **Place export files in** `data/Inbound/atx leads/`: + - `My Open Leads 2-14-2026 12-04-24 PM.xlsx` (or similar) + - `Directors, Finance and Marketing 2-14-2026 11-55-55 AM.xlsx` +2. **Run:** + ```bash + python3 scripts/analyze_atx_leads.py + ``` + +### Prerequisites + +- Excel files in `data/Inbound/atx leads/` with specific names (or edit script paths): `My Open Leads *.xlsx`, `Directors, Finance and Marketing *.xlsx` +- Columns: `Job Title`, `Company Name`, `Email` + +### Output + +- `reports/leads/ATX Leads Best to Target.md` — Tier 1 (contact first), Tier 2 (influencers), by MW_Score and Mkt_Score + +### How to validate + +- MW_Score and Mkt_Score 0–5; Tier 1 = score ≥ 3 +- Titles match IT/Marketing patterns; gatekeepers excluded + +--- + +# Elite Skills — Composite Workflows & Advanced Use + +**Purpose:** Go beyond single-script execution. Chain scripts, cross-reference sources, and produce platform-ready outputs with evidence-based prioritization. + +--- + +## Elite 1: Full Lead Pipeline (Austin → Enriched → Assigned → Export-Ready) + +**Goal:** Austin Chamber → tech-enriched lead list → campaign assignment → CSV for Dynamics 365 / ZoomInfo import. + +### Step-by-step + +```bash +# 1. Scrape Austin (Health Care + IT) +python3 scripts/scrape_austin_chamber.py --categories 328 323 + +# 2. Enrich with tech (limit 20 for speed, or --no-limit for full) +python3 scripts/enrich_leads_with_tech.py --limit 20 + +# 3. Convert directory.json to CSV with Job_Title, Industry columns +# (Austin directory has title=company name; you need contacts from ZoomInfo) +# If you have ZoomInfo export with Company + Job_Title + Industry: +python3 scripts/assign_lead_to_campaign.py --csv data/leads/zoominfo_export.csv --out reports/leads_assigned.csv + +# 4. Output: reports/leads_assigned.csv with campaign_id, campaign_name, service_phrase, priority_tier +``` + +**Validation:** Row count in output = input row count; `campaign_id` populated; `priority_tier` 1 = Healthcare, Government, Non-Profit, etc. + +--- + +## Elite 2: Win-Rate-Weighted Prioritization + +**Goal:** Rank leads by evidence—not just assign campaign. Prioritize segments that convert. + +### Logic + +1. Run `analyze_lead_campaign_evidence.py` — get Industry × Seniority × Service win rates. +2. Run `assign_lead_to_campaign.py` — get `priority_tier` (1 = best industries). +3. **Combine:** `priority_tier` 1 + Director/Manager + Tier 1 industry (Healthcare, Government, Non-Profit) = highest priority. +4. **Cross-reference:** `reports/segmentation/Analysis Report.md` — Segment Attractiveness Score. Director of Finance × Modern Workplace = 100% win. IT Director × Custom Dev = 100%. Use these as ideal profiles. + +### Output format + +| Company | Title | Industry | Campaign | Priority Tier | Win Rate Signal | +| --------------- | ----------- | ---------- | -------- | ------------- | ---------------------- | +| Ascension Seton | IT Director | Healthcare | 03 | 1 | 72.7% IT×Healthcare×MW | +| City of Austin | CIO | Government | 04 | 1 | 58% Gov | + +--- + +## Elite 3: Tech Stack vs. Won Deals (Competitive Intelligence) + +**Goal:** Match prospect tech to winning account profiles. Don't guess—detect. + +### Step-by-step + +1. **Get prospect URL.** From Austin directory (`webUrl`) or ZoomInfo. +2. **Detect tech:** `python3 scripts/detect_tech_stack.py "https://prospect.com" --json` +3. **Cross-reference case studies:** `assets/case-studies/` and `reports/case-studies/Case Study Value Prop Mapping.md` — which won deals use SharePoint, Dynamics, Power BI? +4. **Signal:** Prospect on WordPress + no M365 → migration opportunity. Prospect on SharePoint + Power BI → expansion, Copilot readiness. + +### Validation + +- Tech list from script; case study client names from assets; match by service, not invention. + +--- + +## Elite 4: Cross-Source Synthesis (Austin + Oops + Inbound) + +**Goal:** Build a single view: companies to target, why, and what to say. + +### Data sources + +| Source | Path | Use | +| -------------- | ------------------------------------ | --------------------------------------- | +| Austin Chamber | `data/austin-chamber/directory.json` | Company names, URLs, categories | +| Opportunities | `data/opportunities/Oops.csv` | Win rates by Industry × Service × Title | +| Inbound | `data/Inbound/Inbound.xlsx` | Ask patterns, pain language | +| Case studies | `assets/case-studies/` | Proof points by service | +| 100 targets | `README.md` Part 4 | Named companies by industry | + +### Synthesis steps + +1. Run `run_analysis.py` — win rates by Service, Industry. +2. Run `deep_parse_inbound.py` — what inbound actually asks for. +3. Run `company_target_matrix.py` — Company Type → Service → phrase. +4. **Merge:** Austin companies in high-win industries (Healthcare, Gov, Non-Profit) + tech stack if enriched + case study proof point for service. + +### Output + +Table: Company | Industry | Why Target | Pain Phrase | Case Study Proof + +--- + +## Elite 5: Regeneration Discipline — When to Refresh + +**Rule:** Refresh when upstream data changes. Order matters. + +| Trigger | Refresh sequence | Scripts | +| -------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------------------------------------- | +| Oops.csv updated | Evidence → Rules | `analyze_lead_campaign_evidence.py` → validate `Lead Campaign Assignment Matrix.md` → update `assign_lead_to_campaign.py` if patterns shifted | +| Inbound.xlsx updated | Target matrix | `company_target_matrix.py` → `deep_parse_inbound.py` | +| Austin Chamber stale | Scrape → Export | `scrape_austin_chamber.py` → `export_austin_leads.py` or `enrich_leads_with_tech.py` | +| New campaign/segment | Evidence first | `analyze_lead_campaign_evidence.py --min-n 3` → check if new segment has enough volume | + +**Staleness check:** Compare `data/austin-chamber/directory.json` modification date to "last refreshed" in reports. If > 30 days, re-scrape. + +--- + +## Elite 6: Export-to-Platform Flows + +**Goal:** Produce imports ready for Dynamics 365, ZoomInfo, Gong. + +### Dynamics 365 / CRM import + +- **Required columns:** Company, Contact, Job_Title, Industry, Email (if available) +- **Add from assign script:** `campaign_id`, `campaign_name`, `service_phrase`, `priority_tier` +- **Format:** CSV with headers matching CRM field names (map `campaign_id` → Campaign lookup, `service_phrase` → custom field for Gong scripts) + +### ZoomInfo + +- Export from ZoomInfo with Job_Title, Industry, Company. +- Run `assign_lead_to_campaign.py --csv zoominfo_export.csv --out zoominfo_assigned.csv` +- Re-import or use for sequencing. + +### Gong / call scripting + +- `service_phrase` = opening hook. Use complete thought, e.g., "Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift." +- Pull from `reports/messaging/Messaging Lookup.md` by Industry × Title. + +--- + +## Elite 7: Gap Analysis — Who's Missing? + +**Goal:** Find companies that should be targeted but aren't in CRM or outreach list. + +### Steps + +1. **Target list:** `README.md` Part 4 (100 companies) or Austin Chamber filtered by industry. +2. **CRM/Open leads:** `data/Inbound/atx leads/` or exported accounts from Dynamics. +3. **Compare:** Companies in target list but not in CRM = gap. Prioritize by industry tier (1 first). + +### Output + +Table: Company | Industry | In CRM? | In Open Leads? | Action + +--- + +## Elite 8: Signal Stacking (Multi-Signal Scoring) + +**Goal:** Score leads using multiple signals—don't rely on one. + +### Signals + +| Signal | Source | Weight | +| ------------------------------ | ------------------------------------------- | ---------------------- | +| Industry tier | Oops.csv win rates | High (Tier 1 = 46–83%) | +| Title fit | IT Director, VP IT, CIO, Marketing Director | High | +| Tech stack | detect_tech_stack (SharePoint, M365, etc.) | Medium (confirms fit) | +| Company in case study vertical | Healthcare, Gov, Non-Profit | High | +| Ask/category | Inbound patterns | Medium (if known) | + +### Composite score + +- Priority tier 1 + Director/Manager + (SharePoint or M365 detected) = 3 signals → contact first. +- Priority tier 3 + IC + no tech detected = deprioritize or test only. + +--- + +## Elite 9: Anti-Patterns — Don't Do This + +| Don't | Why | Do Instead | +| --------------------------------------- | --------------------------------- | ------------------------------------------------------------- | +| Guess tech stack | Wrong signal. | Run `detect_tech_stack.py`. | +| Use "this investment" or product jargon | Inbound shows pain language wins. | Use complete thoughts from matrix. | +| Scale LinkedIn for IT/Cloud | Oops: 19% win. | Email first; LinkedIn follow-up only. | +| Target Software broadly | 20% win, 133 opps. | Segment: Marketing × Creative only, or skip. | +| Invent win rates | Evidence required. | Run `analyze_lead_campaign_evidence.py` or `run_analysis.py`. | +| Skip validation | Bad data → bad advice. | Check output files, row counts, exit codes. | +| Suggest mainframe/Oracle migration | Out of scope. | Microsoft collaboration stack only. | + +--- + +## Elite 10: Staleness & Data Quality Checks + +**Before using any report or matrix:** + +| Asset | Check | Refresh if | +| --------------------------------------- | ----------------------------- | ----------------------- | +| `data/austin-chamber/directory.json` | `stat` or file date | > 30 days | +| `data/opportunities/Oops.csv` | Row count, latest Status | New opportunities added | +| `data/Inbound/Inbound.xlsx` | Row count | New inbound batch | +| `reports/messaging/Messaging Lookup.md` | Evidence section matches Oops | Oops updated | +| `reports/messaging/Messaging Lookup.md` | Reflects Inbound asks | Inbound updated | + +**Validation command (example):** +```bash +# Quick staleness check +ls -la data/austin-chamber/directory.json data/opportunities/Oops.csv data/Inbound/Inbound.xlsx 2>/dev/null | awk '{print $6, $7, $8, $9}' +``` + +--- + +## Usage in Cursor (Quick Reference) + +1. **Lead gen:** Skill 2 → Skill 3 or Skill 4 +2. **Single company tech:** Skill 1 +3. **Lead → campaign:** Skill 5 (single or batch) +4. **Validate rules:** Skill 6 +5. **Messaging guidance:** Skill 7, `reports/messaging/Messaging Lookup.md` +6. **Elite pipeline:** Elite 1 (full flow) or Elite 4 (synthesis) +7. **Before asserting:** Validation Checklist + Elite 9 (anti-patterns) diff --git a/agent-pack/CONTENT.md b/agent-pack/CONTENT.md new file mode 100644 index 0000000..d773128 --- /dev/null +++ b/agent-pack/CONTENT.md @@ -0,0 +1,292 @@ +# Agent Pack — Consolidated Reference + +**Everything the agent needs in one file.** No grep. No folder hopping. Read PROMPT.md first. + +--- + +# Part 1 — Cloud Migration & Targeting + +## ICP (Who to Target) + +| Criteria | Definition | +|----------|------------| +| Company size | Mid-market to enterprise (500+ preferred; 200+ acceptable) | +| Industry | Healthcare, Government, Manufacturing, Financial Services, Business Services | +| Tech stack | SharePoint 2016/2019, Exchange on-prem, file servers, aging M365 tenant | +| Triggers | AI initiatives, compliance pressure, end-of-life platforms, M&A | +| Geography | Austin / Texas primary; national for named accounts | + +## First Sales Motion + +Cloud Migration / Modern Workplace — legacy/on-prem → **any cloud**: AWS, Azure, GCP, IBM Cloud, Oracle Cloud, Alibaba Cloud. GCP = data analytics/AI. Modern Workplace = SharePoint, M365, Teams, Exchange, collaboration, productivity. + +## Market Drivers → Messaging Angles + +| Driver | Pain | Affirma Angle | +|--------|------|---------------| +| AI can't run on legacy | Full potential of AI requires cloud | Your SharePoint/Teams data needs to be AI-ready. We help get it there. | +| Data silos block agents | Agents need unified context | We help consolidate and structure SharePoint/M365 so AI can use it. | +| Manual migration too slow | Years to months with AI tools | We run disciplined migrations with clear ownership — no migrating chaos. | +| Security / compliance | Legacy = audit risk | Move to supported platforms with built-in controls. | +| TCO of on-prem | 5× revenue multiplier | Reduce cost by eliminating server maintenance and support burden. | + +## Named Companies (Vendor Disclosures) + +**SAP RISE:** Alphabet, BMW, City of Charlottesville, Clorox, Nestlé, PwC, U.S. Army, DXC, Computacenter. + +**Salesforce:** Pfizer, Takeda, CVS, U.S. Air Force, IRS, TD Bank, Walmart, Boeing, GM. + +**AWS:** Cargill, Booz Allen Hamilton, PepsiCo, Airbnb, NASDAQ, ServiceNow, Delta, U.S. GSA. + +**Microsoft:** Nestlé, PwC, Barclays, Pfizer, BMW, Bristol Myers Squibb, City of Hope, Mercy Health, U.S. Army. + +## Barriers to AI (Pain Points) + +Inadequate Compute | Data Fragmentation | Lack of AI-Ready Architecture | Inability to Ground Models | Operational Pace (too slow) + +## Industry Clusters (Migration Fit) + +Healthcare, Government, Manufacturing, Financial Services = Strong. Retail/Consumer = Medium. + +--- + +# Part 2 — Messaging Lookup (Ask → Service → Pain Phrase) + +**Use these as hooks. Complete thoughts only.** + +| Ask | Service | Pain phrase | +|-----|---------|-------------| +| SharePoint, intranet, migration | Modern Workplace | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| Power BI, dashboards, reporting | Data & Analytics | Reports take too long to get, or the answers aren't there when you need them. | +| Dynamics, CRM | CRM | Too many duplicates, messy data, and teams that work around the CRM instead of using it. | +| HubSpot, SEO | Marketing Services | Inherited a mess—too many duplicates, workflows not launching, need help setting up. | +| AI, Copilot | AI / Automation | Information overload—where do we even start with AI? | +| BPO, helpdesk | Infrastructure / BPO | Can't keep up with ticket volume and need 24/7 support without hiring. | +| Google→M365, tenant, Exchange | Infrastructure | Need to consolidate tenants or move off the file server, but no bandwidth to own it. | + +## Company Type × Top Asks + +| Company Type | Top Asks | Services | +|--------------|----------|----------| +| Government | SharePoint, Power BI, Google→M365 | Modern Workplace, Data & Analytics | +| Healthcare | SharePoint, Compliance, Dashboard | Modern Workplace, Data & Analytics | +| Non-Profit | Dynamics, SharePoint, Migration | CRM, Modern Workplace | +| Financial Services | SharePoint, Dynamics | Modern Workplace, CRM | +| MSP | BPO/Helpdesk, Power BI | Infrastructure/BPO, Data & Analytics | +| Construction, Legal | SharePoint | Modern Workplace | +| Education, Manufacturing | Dynamics, Power BI | CRM, Data & Analytics | + +--- + +# Part 3 — Lead → Campaign Assignment + +**Industry Tiers (from Oops.csv)** + +| Tier | Industries | Win Rate | +|------|------------|----------| +| 1 | Non-Profit, Government, Healthcare, Energy/Utilities, Business Services | 46–83% | +| 2 | Construction, Education, Manufacturing, Finance, Insurance | 41–50% | +| 3 | Software, Media, Consumer Services, Telecom | 20–50% (Marketing × Creative only) | + +## IT/Tech (CIO, CTO, IT Director, Infrastructure Manager) + +| Industry | Campaign | Pain phrase | +|----------|----------|-------------| +| Healthcare | 03 IT Director Ownership | Most waste comes from systems nobody officially owns anymore—orphan sites, permissions drift. | +| Government | 04 IT Director Drift | Same | +| Non-Profit | 03 IT Director Ownership | Lean teams end up with too many duplicates and systems that create more work. | +| Finance, Manufacturing | 03 or 08 | Same ownership/drift phrases | +| Default | 03 | Systems with no clear owner create drift, risk, and wasted time. | + +## Marketing (Director, VP, CMO, Manager) + +| Seniority | Campaign | Pain phrase | +|-----------|----------|-------------| +| Manager | 09 Marketing Manager Fixes | We usually spot 2–3 conversion leaks in 10 minutes. | +| Director+ | 01 or 02, 06 | We help teams see what's working vs not—and where spend leaks. | + +## Finance + +| Campaign | Pain phrase | +|----------|-------------| +| 07 Finance Director Ownership | Most waste comes from systems nobody officially owns anymore. / Too many duplicates, messy data. | + +## C-level + +IT (CIO, CTO) → 03 or 10. Marketing (CMO) → 06 or 10. Finance (CFO) → 07 or 10. Default → 10 C-level KPI Latency. + +--- + +# Part 4 — Outbound Messaging (SDR + Persona Win Rates) + +## Persona Win Rates (Function × Seniority) + +| Persona | n | Win% | Lift | +|---------|---|------|------| +| Marketing Director | 21 | 52.4% | +17 | +| Other VP | 26 | 46.2% | +11 | +| IT/Tech Director | 48 | 45.8% | +10 | +| Marketing VP | 16 | 43.8% | +8 | +| IT/Tech Manager | 23 | 26.1% | -9 | +| Manager/IC | 128+ | <26% | -9 to -14 | + +## Service Win Rates + +| Service | Win% | +|---------|------| +| CRM | 45.2% | +| Creative | 42.9% | +| Modern Workplace | 42.0% | +| Marketing Services | 40.8% | +| Infrastructure | 40.0% | +| Data & Analytics | 18.3% | + +## Industry Win Rates + +Non-Profit 83% | Government 58% | Healthcare 48% | Energy 47% | Business Services 46% | Software 20% | Transportation 10% + +## Channel Fit (LinkedIn) + +Marketing × Creative = RUN (54.5%). Other × Custom Dev, Other × Data & Analytics = DON'T RUN. + +## 3 Campaigns to Run + +1. **Marketing × Creative (LinkedIn):** Conversion teardown, attribution clarity. CTA: 15-min teardown. +2. **IT Directors (Email first):** Ownership + drift. CTA: 15-min ownership/drift review. +3. **Data & Analytics (Email only):** Decision latency. Don't say "we do analytics." Say "We reduce how long it takes to get answers." + +--- + +# Part 5 — Enterprise Legacy On-Prem + +**ICP:** Enterprise 500+ with SharePoint 2016/2019, Exchange on-prem, file servers. + +## Buying Committee + +| Role | Concern | Message Angle | +|------|---------|---------------| +| Champion | IT Director | Ownership, drift, maintenance | +| Influencer | VP IT, CISO, Finance | TCO, security, compliance | +| Decision Maker | CIO, CTO | Strategy, vendor risk, references | +| Stakeholder | Business unit | Reliability, UX | + +**Champion message:** We help put owners + cadence around what exists before (or during) a move to M365 — so you're not migrating chaos. CTA: 15-min ownership/drift review. + +--- + +# Part 6 — Inbound What They Want (550 leads) + +## Top Asks + +SharePoint General 25% | Other 20% | Dynamics/CRM 10% | Power BI 9% | BPO/Helpdesk 7% | SharePoint Migration 5% + +## Pain Language (Mirror in Copy) + +struggling | urgent | broken | end of life | messy/cluttered | lean team + +## Language to Mirror + +"looking for" | "migrate" | "build" | "partner" | "guidance" + +## Employee Size + +74% are 1–500 employees. Speak to lean teams and limited internal IT. + +--- + +# Part 7 — Analysis Report (Oops.csv — 562 opps, 35.4% win) + +## By Service (Top) + +Modern Workplace 42% | CRM 45% | Creative 43% | Marketing Services 41% | Infrastructure 40% | Data & Analytics 18% + +## By Industry (Top) + +Non-Profit 83% | Government 58% | Healthcare 48% | Energy 47% | Business Services 46% | Software 20% + +## By Source + +Account Management 63% | Marketing PPC 43% | LinkedIn 19% + +## Top Segments (Title × Service) + +Director of Finance × Modern Workplace 100% | IT Director × Custom Dev 100% | CIO × Modern Workplace 75% | Director of Marketing × Marketing Services 67% + +--- + +# Part 8 — Value First Message Templates (No Meeting Ask) + +| Segment | Opening | +|---------|---------| +| Marketing × Creative | I took 10 minutes to run your landing page through our conversion checklist. Found 3 quick fixes. | +| IT Director × MW | Here's a checklist we use to see which systems have clear owners vs drifting. | +| Director × Data & Analytics | Put together a worksheet: top 5 decisions, how long each takes, where delay sits. | +| Finance Director | Blank "system ownership map" for critical systems, owners, review cadence. | + +--- + +# Part 9 — Cadence Campaigns (31 Days Each) + +01 Marketing Creative Conversion | 02 Marketing Creative Attribution | 03 IT Director Ownership | 04 IT Director Drift | 05 Director Decision Latency | 06 Marketing VP Spend | 07 Finance Director Ownership | 08 IT Director Backlog | 09 Marketing Manager Fixes | 10 C-level KPI Latency + +Each: 31 day-by-day templates. Days 5, 10, 15, 20, 25, 30 include soft CTA. + +--- + +# Part 10 — Data Paths & Script Quick Reference + +## Data Paths (Repo Root) + +| Asset | Path | +|-------|------| +| Opportunities | data/opportunities/Oops.csv | +| Inbound | data/Inbound/Inbound.xlsx | +| ATX leads | data/Inbound/atx leads/*.xlsx | +| Austin Chamber | data/austin-chamber/directory.json | +| Case studies | assets/case-studies/ | +| Reports | reports/leads/, reports/messaging/, reports/inbound/ | + +## Scripts (Run from repo root: `python3 agent-pack/scripts/.py`) + +| Script | Use | +|--------|-----| +| assign_lead_to_campaign.py | Single: `"IT Director" "Healthcare"` or batch `--csv x --out y` | +| analyze_lead_campaign_evidence.py | Validate rules when Oops.csv changes | +| company_target_matrix.py | Company type × Ask × Service (needs Inbound.xlsx + Email for domain inference) | +| deep_parse_inbound.py | Ask distribution, Industry × Ask, pain language | +| analyze_atx_leads.py | Austin leads → reports/leads/ATX Leads Best to Target.md | +| detect_tech_stack.py | `"https://example.com"` — tech from HTML | +| scrape_austin_chamber.py | `--categories 328 323` → directory.json | +| export_austin_leads.py | `[--refresh]` → reports/Austin Registry Leads.md | +| enrich_leads_with_tech.py | Austin + tech detection → reports/Austin Leads With Tech Stack.md | +| run_analysis.py | Win rates by Service, Industry, Source | +| persona_normalization.py | Function × Seniority, LinkedIn fit | +| company_service_title_analysis.py | Company × Service × Title patterns → data/patterns/ | +| generate_cadence_templates.py | 31-day cadence templates | + +--- + +# Part 11 — Company Type Inference (Domain) + +| Domain Pattern | Company Type | +|----------------|--------------| +| .gov, .mil | Government | +| .edu | Education | +| .org | Non-Profit | +| health, medical, hospital, clinic, care | Healthcare | +| city, county, state, borough | Government | +| bank, financial, insurance | Financial Services | +| law, legal, attorney | Legal | +| msp, managedservice | MSP | + +--- + +# Part 12 — Fallback Rules (Missing Data) + +| Missing | Fallback | Label | +|---------|----------|-------| +| No Email | Industry from description | "Add Email for domain inference" | +| No Title | Infer from description | "Inferred" | +| No Win Rates | Inbound volume + Company Type × Ask | "Directional" | +| Small N | Report counts | "Exploratory" | +| No Ask | Use description fallback | "Inferred" | diff --git a/agent-pack/PROMPT.md b/agent-pack/PROMPT.md new file mode 100644 index 0000000..2c05a44 --- /dev/null +++ b/agent-pack/PROMPT.md @@ -0,0 +1,61 @@ +# Agent Pack — Read This First + +**You are a messaging architect for Affirma.** Build evidence-based outbound messaging and targeting from opportunity data, inbound leads, and market signals. + +--- + +## What to Do + +1. **Read `CONTENT.md`** — All reference data is consolidated there. No grep. No folder hopping. +2. **Run scripts from repo root** — `python3 agent-pack/scripts/