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 have | Where it goes | Filename |
|---|---|---|
| List from Snowflake rep | input/ | 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.pyThis 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:
| Column | Description | Example |
|---|---|---|
| company_name | Account name | Acme Corp |
| industry | Vertical | Financial Services |
| hq_city | HQ city | New York |
| hq_state | (optional) State | NY |
| employee_count | Number | 1500 |
| partner_priority | H, M, or L | H |
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_name | Company name / Name |
| industry | Industry |
| hq_city | City |
| hq_state | State/Region (optional) |
| employee_count | Number of employees (numeric) |
| account_status | Map from lifecycle/dataset: Customer → Customer, open deal → Active Opportunity, lead/contact no deal → Prospect, else → Target |
| account_owner | Owner (HubSpot owner or your rep name) |
| Our column (optional) | HubSpot / typical source |
|---|---|
| revenue_range | Annual revenue band |
| tech_stack | Custom property or notes (e.g. “Snowflake, dbt”) |
| competitor_present | Custom property or notes (e.g. “Informatica”) |
| last_activity_date | Last activity / last modified (YYYY-MM-DD) |
| notes | Notes / 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_name | Company name (must match my_accounts / partner list) |
| contact_name | First + Last name |
| relationship_owner | HubSpot owner / your team member |
| relationship_strength | Must be: Strong, Medium, Warm, or Cold |
| Our column (optional) | HubSpot / typical source |
|---|---|
| contact_title | Job title |
| how_connected | Notes / source |
| last_interaction | Last activity date (YYYY-MM-DD) |
| notes | Notes |
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.csvThis 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.txtEvery run (replace the partner filename with yours):
python partner_account_mapping_automation.py --partner-list input/snowflake_ae_jones_2026-02-26.csvThe 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.
- Generate tasks:
python partner_account_mapping_automation.py --partner-list input/snowflake_ae_jones_2026-02-26.csv --enrich-
Open
output/ENRICH_TASKS.mdin 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.” -
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.mdHow 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)
- Generate tasks:
python partner_account_mapping_automation.py --partner-list input/<file>.csv --enrich - Open
output/ENRICH_TASKS.mdin Cursor. - 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”).
- The agent uses web search to research each company and fills only the empty
<!-- START -->/<!-- END -->sections. - 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.
| Step | Uses Apollo? |
|---|---|
Partner list in input/ | No |
HubSpot → my_accounts.csv / my_contacts.csv | No |
| Run the script | No |
| Optional enrichment in Cursor | Yes |
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
--enrichand openENRICH_TASKS.mdin 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.csvwith account_status = Customer | Active Opportunity | Prospect | Target - (Optional) Contacts in
my-data/my_contacts.csv -
pip install -r requirements.txtdone 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.