How to Run Partner Account Mapping (Snowflake)

Use this when you have HubSpot exports and a list from your Snowflake rep. One run = one partner list file; your “my data” is reused.


1. Where to Put Files

What you haveWhere it goesFilename
List from Snowflake repinput/snowflake_ae_<name>_<YYYY-MM-DD>.csv (e.g. snowflake_ae_jones_2026-02-26.csv)
HubSpot companies (your book of business)my-data/my_accounts.csv
HubSpot contacts (optional)my-data/my_contacts.csv
Case studies (optional)my-data/my_case_studies.csv
Campaigns (optional)my-data/my_campaigns.csv

Required: input/<partner_list>.csv + my-data/my_accounts.csv. The rest are optional and improve scoring.

Case studies from vault: To use the shared case study library, run from the partner-mapping folder:

python build_case_studies_from_vault.py

This reads all *.md files in knowledge/sales/marketing-assets/case-studies (YAML frontmatter: title, industry, project_type/function) and writes my-data/my_case_studies.csv. Re-run after adding or editing case studies in that folder. The mapping script will use them for industry-based case study matching and the “Best Case Study” / “Case Study Link” columns in the output.


2. Snowflake Rep List (Partner List)

Drop the rep’s list into input/ as a CSV. Required columns:

ColumnDescriptionExample
company_nameAccount nameAcme Corp
industryVerticalFinancial Services
hq_cityHQ cityNew York
hq_state(optional) StateNY
employee_countNumber1500
partner_priorityH, M, or LH

Optional: partner_ae, partner_org, partner_use_case, partner_contact, partner_notes, domain (company website for Apollo enrichment; see section below).

If the rep sends Excel or different column names, rename or add columns to match. Save as CSV in input/ (e.g. snowflake_ae_jones_2026-02-26.csv).


3. HubSpot → my_accounts.csv

Export Companies from HubSpot (or use a report). Map to our columns:

Our column (required)HubSpot / typical source
company_nameCompany name / Name
industryIndustry
hq_cityCity
hq_stateState/Region (optional)
employee_countNumber of employees (numeric)
account_statusMap from lifecycle/dataset: Customer → Customer, open deal → Active Opportunity, lead/contact no deal → Prospect, else → Target
account_ownerOwner (HubSpot owner or your rep name)
Our column (optional)HubSpot / typical source
revenue_rangeAnnual revenue band
tech_stackCustom property or notes (e.g. “Snowflake, dbt”)
competitor_presentCustom property or notes (e.g. “Informatica”)
last_activity_dateLast activity / last modified (YYYY-MM-DD)
notesNotes / description

account_status must be exactly one of: Customer, Active Opportunity, Prospect, Target. The script uses these for direct-match points (5 / 4 / 3 / 2).

Save as my-data/my_accounts.csv (UTF-8 CSV).


4. HubSpot → my_contacts.csv (optional)

Export Contacts (or Companies + primary contact). Map:

Our column (required)HubSpot / typical source
company_nameCompany name (must match my_accounts / partner list)
contact_nameFirst + Last name
relationship_ownerHubSpot owner / your team member
relationship_strengthMust be: Strong, Medium, Warm, or Cold
Our column (optional)HubSpot / typical source
contact_titleJob title
how_connectedNotes / source
last_interactionLast activity date (YYYY-MM-DD)
notesNotes

Save as my-data/my_contacts.csv.


5. Run the Script

Optional: Enrich partner list with Apollo (script) — If your partner list has a domain column (company website, e.g. acme.com), you can fill missing hq_city, employee_count, and industry before mapping:

$env:APOLLO_IO_API_KEY = (op read "op://Brainforge AI Team/Apollo.io API/credential")   # or set in env
python enrich_partner_list_apollo.py input/snowflake_rep_list_2026-02-26.csv

This writes input/snowflake_rep_list_2026-02-26_enriched.csv. Then run the mapping script with --partner-list input/snowflake_rep_list_2026-02-26_enriched.csv.


From the Snowflake partner-mapping folder (same folder as partner_account_mapping_automation.py):

First time only:

From the repository root (or cd into this folder):

cd knowledge/sales/partners/Snowflake/partner-mapping
pip install -r requirements.txt

Every run (replace the partner filename with yours):

python partner_account_mapping_automation.py --partner-list input/snowflake_ae_jones_2026-02-26.csv

The script will:

  • Auto-detect my-data/my_accounts.csv (and any of contacts, case studies, campaigns)
  • Print what it found
  • Score each row on the partner list and write output/MAPPED_.xlsx with 7 sheets: Partner List, My Accounts, My Case Studies, My Campaigns, My Contacts, CONFIG, MAPPED OUTPUT (same structure as the 7-tab template).

6. After the Run

  • Open output/MAPPED_<your_input_name>.xlsx. Tier 1 = highest priority (green).
  • Fill manual columns if needed: Funding/Growth Signal, Next Step, Action Owner, Action Date.
  • Use the file for the Snowflake call or paste into the 7-tab template for ongoing tracking.

7. Optional: Context Briefs (Step 4 — Cursor)

Step 4 (Enrich with AI) runs in Cursor using web search and (optionally) an Apollo MCP agent/subagent. No extra API key; use your Cursor subscription.

  1. Generate tasks:
python partner_account_mapping_automation.py --partner-list input/snowflake_ae_jones_2026-02-26.csv --enrich
  1. Open output/ENRICH_TASKS.md in Cursor. In Composer (Cmd+I) or Agent, paste the prompt from enrichment-agent-prompt.md. The agent will use web search to research each company and fill the Context Brief between the START/END markers with the 8 signal types (leadership changes, industry news, funding, hiring, earnings, tech, event presence, competitive moves). You can also ask: “Run an Apollo-focused agent/subagent to enrich these accounts using Apollo MCP (org enrichment, job postings, contacts); merge that with web research into the Context Brief.”

  2. Merge back into Excel:

python partner_account_mapping_automation.py --partner-list input/snowflake_ae_jones_2026-02-26.csv --merge-enrichment output/ENRICH_TASKS.md

How to use Cursor subagents or AI agent to enrich

You can use Cursor’s Composer (Cmd+I) or Agent to fill Context Briefs in output/ENRICH_TASKS.md. Optionally use a subagent so one agent focuses on research while you do something else.

Option A — Single agent (Composer / Agent)

  1. Generate tasks: python partner_account_mapping_automation.py --partner-list input/<file>.csv --enrich
  2. Open output/ENRICH_TASKS.md in Cursor.
  3. In Composer or Agent, paste the prompt from enrichment-agent-prompt.md (or say: “Research each company in this file and fill the Context Brief between START and END with the 8 signal types”).
  4. The agent uses web search to research each company and fills only the empty <!-- START --> / <!-- END --> sections.
  5. Merge: python partner_account_mapping_automation.py --partner-list input/<file>.csv --merge-enrichment output/ENRICH_TASKS.md

Option B — Subagent

  • In the same Composer/Agent chat, you can say: “Run a subagent to research each company in this file and fill the Context Brief sections with the 8 signal types (leadership, industry news, funding, hiring, earnings, tech, event presence, competitive moves). Use web search. Do not repeat any enriched leads — only fill sections that are still empty.”
  • The subagent will work through the list; when it’s done, run the merge command above.

Options for how many leads to enrich

  • Default: tiers 1, 2, 3 only → --enrich
  • Include Tier 4 and cap at 5 leads → --enrich --enrich-tiers 1,2,3,4 --enrich-max 5
  • Include all tiers, no cap → --enrich --enrich-tiers 1,2,3,4

Important: Do not repeat enriched leads — only fill sections that are still empty between START and END. Skip companies that already have content there.


8. Apollo MCP (optional)

The core process does not use Apollo. You can run the full flow (HubSpot CSV → my-data/, partner list → input/, run script → mapped Excel) without Apollo.

StepUses Apollo?
Partner list in input/No
HubSpot → my_accounts.csv / my_contacts.csvNo
Run the scriptNo
Optional enrichment in CursorYes

When Apollo is useful (optional):

  • Enrich the partner list — e.g. add missing hq_city, employee count, or industry by company domain (Apollo organization_enrichment).
  • Enrich contacts — find decision makers at partner-list companies to fill or extend my_contacts.csv (Apollo people_search / people_enrichment).
  • Context briefs — when you use --enrich and open ENRICH_TASKS.md in Cursor, the agent can use Apollo (and other tools) to research accounts and fill briefs before you run --merge-enrichment.

Apollo MCP must be set up in Cursor and APOLLO_IO_API_KEY configured (see Apollo MCP setup). Use it only when you want this extra enrichment; the mapping script never calls Apollo itself.


Quick checklist

  • Partner list CSV in input/ with required columns (company_name, industry, hq_city, employee_count, partner_priority)
  • HubSpot companies exported and mapped to my-data/my_accounts.csv with account_status = Customer | Active Opportunity | Prospect | Target
  • (Optional) Contacts in my-data/my_contacts.csv
  • pip install -r requirements.txt done once
  • Run: python partner_account_mapping_automation.py --partner-list input/<your_file>.csv
  • Open output/MAPPED_<your_file>.xlsx (7 sheets: Partner List, My Accounts, Case Studies, Campaigns, Contacts, CONFIG, MAPPED OUTPUT)

For full column specs and 12 match layers, see cursor_automation_guide.md.