HubSpot partner load — source sweep & handoff (2026-04-07)
Purpose: One place for what we pulled from Gmail, Google Drive, and public Slack to finish loading partner context into HubSpot, plus a repeatable runbook for Uttam (or anyone) using the same agent + CLI pattern.
HubSpot companies: All 14 partners underknowledge/sales/partners/*/PARTNER_CONTROL_CENTER.mdalready have a Company record (create/--if-not-existsrun 2026-04-06). Next step is Contacts + timeline notes, not duplicate companies.
1. What’s already in HubSpot
| Partner (Control Center name) | HubSpot company ID (for linking) |
|---|---|
| Snowflake | 25074717772 |
| Talisma | 32490367821 |
| Superposition | 32765866016 |
| Polytomic | 25093310219 |
| OpenBB | 316936626878 |
| OneSource | 317038076612 |
| Omni | 31070515754 |
| MotherDuck | 26782292829 |
| Mixpanel | 34891757692 |
| Glimpse | 36655028744 |
| GSV | 317056151271 |
| Freshpaint | 136661210814 |
| CorralData | 28559087426 |
| Amplitude | 34906218519 |
MoEngage is active in email + Slack but does not yet have a dedicated folder in knowledge/sales/partners/ — decide whether to add a Control Center + company or keep as pipeline-only.
2. Gmail (robert.tseng@brainforge.ai) — partner-facing emails to mirror in HubSpot
Use these as Contact creates (work emails only), associated to the Company above. Prefer npm run partner-hubspot -- create contact … --company-name "…" --if-not-exists so you don’t duplicate.
Snowflake (company-name Snowflake)
| Role (from headers / thread) | |
|---|---|
j.khan@snowflake.com | Snowflake — thread “Insomnia onsite” |
john.ranaudo@snowflake.com | Snowflake — Cc same thread |
chase.growney@snowflake.com | Snowflake — calendar / onsite |
josh.brown@snowflake.com | Snowflake — calendar Cc |
jarred.clifford@snowflake.com | Snowflake — Summit Cc (relationship) |
Skip automated senders (summitcontent@, PartnerProgram@) unless you want them as generic contacts.
MoEngage (company record TBD — create company MoEngage first if missing)
| Notes | |
|---|---|
karthik.baile@moengage.com | Primary thread: “Brainforge x MoEngage Follow Up” |
archana.leo@moengage.com | Global Partner Marketing |
jomy.joy@moengage.com | |
raghav.shukla@moengage.com | |
sanjay@moengage.com | |
nick.ippel@moengage.com |
Amplitude (company-name Amplitude)
| Notes | |
|---|---|
emily.knippa@amplitude.com | Webinar / partner planning |
brandon.wong@amplitude.com | Cc on webinar thread |
Mixpanel / Amplitude marketing
Newsletters (no-reply@mixpanel.com, insights@amplitude.com) — do not create as people; optional company note only if you care.
Gmail search queries to reuse:
from:snowflake.com OR to:snowflake.com newer_than:365d · from:moengage.com newer_than:365d · from:amplitude.com newer_than:180d
3. Google Drive — artifacts (context, not auto-imported to CRM)
High-signal items for partner ops (not exhaustive):
| Asset | Link / purpose |
|---|---|
| GTM Review sheet | Brainforge: Weekly / Monthly / Quarterly GTM Review — pipeline / partner proxy columns |
| Eden External Partner Performance Tracker | Partner performance tracking |
| Robert — Snowflake Summit 26 session scratch pad | Session / Snowflake marketing alignment |
| Q2’26 Brainforge x GTM Lead Opportunity | Doc — may name partner motions |
Use Drive to enrich Control Centers and one HubSpot company note per partner when something material changes (“see GTM Review week of …”).
4. Slack (public search) — #sales-partnerships & Snowflake motion
#snowflake-partners returned no hits for the logged-in user (may be private, renamed, or not indexed) — rely on #sales-partnerships and DMs for Snowflake.
Themes useful for HubSpot company notes (summarize, don’t paste threads):
- Snowflake: Weekly checklist posts, quarterly PM session, champion AE intros, “inbox from Snowflake” nudges, Cortex memo / partner network docs.
- MoEngage: Thread for partner movement; Archana Leo / ShopTalk / white paper; deck to Nick.
- Omni / other: Early NA service partner push; partner OS / Loom walkthrough.
Internal owners: Uttam (partnerships), Robert (orchestration), Luke / Holly / Hannah as referenced in threads.
5. Uttam: run the same “agent + HubSpot” setup
Prerequisites (one-time)
- Repo:
brainforge-platform— pull latest;tools/hubspot-api-servicehasnpm run partner-hubspot. - HubSpot: Private app token with companies + contacts + notes + tasks + associations write (see
tools/hubspot-api-service/README.md). Use 1Password team item or your own PAT:export HUBSPOT_ACCESS_TOKEN=… - Cursor skill:
.cursor/skills/partner-hubspot-ops/SKILL.md— tells the agent to read Control Center → resolve company → create/update contacts → CLI. - Google MCP (optional but recommended): Authorize Gmail + Drive for
uttam@brainforge.ai(same OAuth flow Robert used). Then searches useuser_google_email=uttam@….
Repeatable sequence
- Pick partner folder:
knowledge/sales/partners/<Name>/PARTNER_CONTROL_CENTER.md. - Company:
npm run partner-hubspot -- create company --name "<PARTNER NAME>" --if-not-exists - Contacts: For each work email from Gmail or Control Center:
npm run partner-hubspot -- create contact --email … --firstname … --lastname … --jobtitle … --company-name "<PARTNER NAME>" --if-not-exists - If contact exists without company:
npm run partner-hubspot -- associate contact-company --email … --company-name "…" - Timeline: Log reality with notes/tasks:
note company/note contact/task company/task contact(see README). - Control Center §8: Paste HubSpot company URL (from HubSpot UI or
https://app.hubspot.com/contacts/<portal>/record/0-2/<companyId>).
Prompt you can paste to Uttam’s Cursor chat
Use the partner-hubspot-ops skill. Load knowledge/sales/partners/ops/hubspot-partner-data-load-handoff.md.
For each partner in knowledge/sales/partners with PARTNER_CONTROL_CENTER.md: ensure HubSpot company exists (--if-not-exists),
then create partner contacts from Uttam’s Gmail (user_google_email uttam@brainforge.ai) for messages from/to that partner’s domain,
associating to the correct company. Add a short company note summarizing last 90d engagement. Do not create contacts for noreply addresses.Supabase audit (optional)
If BF_SUPABASE_URL + BF_SUPABASE_SERVICE_KEY are set and migration 011_partner_agent_crm_log is applied, CLI writes also log to partner_agent_crm_log.
6. Related docs
| Doc | Use |
|---|---|
| partnership-ops-system.md | Repo vs HubSpot roles |
| partnership-manager-playbook-slack.md | Slack cadence + HubSpot pointer |
| SKILL.md | Agent instructions |
| README.md | CLI reference |
Next review: After Uttam’s first pass, tighten MoEngage (company + Control Center?) and backfill Mixpanel / Polytomic emails from his inbox if Robert’s mail missed them.
8. Loaded in HubSpot (2026-04-07)
CLI: create contact --if-not-exists + associate contact-company for every row in §2, then company notes on Snowflake, MoEngage, and Amplitude documenting the sync.
| Partner company | Contacts | Notes |
|---|---|---|
| Snowflake | Javeria Khan, John Ranaudo, Chase Growney, Josh Brown, Jarred Clifford | Existing + new; all associated to company 25074717772 |
| MoEngage | Karthik Baile, Archana Leo, Jomy Joy, Raghav Shukla, Sanjay Kupae, Nick Ippel | Associated to company 264034935518 |
| Amplitude | Emily Knippa, Brandon Wong | Created + associated to company 34906218519 |
Ongoing: Use partner-hubspot note contact / task contact with --email after outbound mail; or connect Gmail → HubSpot BCC so sends attach to these contacts automatically.