Sales Teams

At a glance

PersonaRevOps lead coordinating deals across HubSpot, Slack, email
GoalStop doing pipeline archaeology every Friday
PrerequisitesHubSpot connector authorized; HubSpot registered as a custom Loop channel
OutcomeDeal signals flow into the queue, drafts are approval-gated

A RevOps lead at a B2B company used to spend half the week chasing context — opening HubSpot to check a deal stage, scrolling Slack to find the last conversation with a prospect, drafting the same follow-up email for the fifth time. The other half of the week was supposed to be pipeline strategy and forecast calls.

By Friday afternoon, all that could be remembered was that Acme's stage changed Tuesday, Sarah's been quiet for two weeks, and the proposal promised to the partner from Berlin never got written.

The shortfall isn't discipline. It's the cognitive load of holding 80 active deals + the last conversation with each one at the same time.

The user doesn't want another chatbot that waits to be asked. They want an AI assistant that genuinely fits a RevOps lead's week: it watches the CRM continuously, organizes the prospect context, and only finds them when there's a deal decision that genuinely needs to be made.

Honest about what Loop ships built-in: Email / Calendar / GitHub / Slack / Linear are the five built-in sources. HubSpot, Salesforce, and Pipedrive aren't in that list — but they can be registered as custom channels via the openloomi-loop skill, and once registered Loop pulls deal-stage signals alongside email and Slack the same way Loop picks up Linear.


Problem 1: Pipeline archaeology every Friday

The painful part of RevOps isn't the forecasting — it's the visibility. The exchange used to go like this:

  • Open HubSpot, filter to deals, sort by last activity date
  • Scroll the 30 deals touched this week
  • Try to remember "which of these have I emailed this week vs which are sitting"
  • Open Slack, search for each prospect's name, find the last DM
  • Open Gmail, search the same prospect, find the last email thread
  • Stitch the "what's actually happening with this deal" together from memory

If the week was busy, this got pushed to the next Monday. By then, half of what was wanted to act on had already gone cold.

This is exactly what AI should be doing. The actual hard part of pipeline management isn't the prioritization — it's gathering the scattered deal context and reorganizing it into something a RevOps lead can act on.

So HubSpot is registered as a custom channel in chat:

Register a custom channel called "hubspot_deals" that polls my HubSpot deals every 30 minutes.
Wrap the Composio HubSpot toolkit's "list deals" tool.
Pull the deal name, stage, owner, close date, and last activity date.

The skill writes the record to ~/.openloomi/loop/custom-channels.json and the next Loop tick picks it up. State is per-user, local, human-readable.

If the CRM is Salesforce or Pipedrive rather than HubSpot, it is registered the same way — any Composio toolkit works as a Loop source.


Problem 2: Generic mass-sent templates

For warm replies the lead had Loop. For outbound — first touch, follow-ups, re-engagements, proposals — there was no incoming signal yet for Loop to surface, and the templates being sent out were starting to read like templates.

The old approach: a doc of "templates" collected from other RevOps leads was opened, one copied, the blanks filled in with the prospect's company name, and sent. The result always read like a template because it was a template. Reply rates were in the 5–10% range, and the few replies that came back were usually "please remove me from your list".

Drafts are now started in Chat with the agent. The agent reads past messages and the matching contact note from ~/.openloomi/data/memory/people/sarah_chen.md, the matching project note, and the prior thread cluster — so the draft references what the user and the prospect actually discussed, not generic boilerplate.

The cold-email skill is the public packaging for personalized B2B outreach; the revops skill helps track lifecycle stages; the hubspot-automation skill can update HubSpot properties on the user's behalf.

Try:

  • "Pull everything we discussed with Sarah Chen from memory and draft a proposal in our standard template."
  • "Write a 5-touch follow-up sequence for the Acme deal — each touch should add new value, not just 'checking in.'"
  • "Update Sarah Chen's HubSpot deal stage to 'Proposal Sent' and log today's outreach."

For a proposal that used to take 2 hours of context-hunting, it's now 30 minutes of refining a draft the agent already grounded in the actual conversation.


Problem 3: Cross-channel prospect context loss

The other failure mode that kept being hit: the same prospect would email Monday and DM on Slack Wednesday, and the mental model of them was the same person — but the system treated them as two different conversations. A Slack reply would be written that contradicted what was said in the email, and the prospect would notice.

Loop handles this through the memory layer. Per Loop's memory contract:

Loop reads from memoryLoop writes after Approve
Prospect profile, prior thread cluster, project tiesUpdated thread cluster, refreshed contact note

The same Sarah Chen who emails Monday and DMs on Slack Wednesday is one person in people/sarah_chen.md — Loop doesn't re-learn her per channel. The im_reply card on Slack and the email_reply card on Gmail both read from the same memory slice, and both write back to the same memory after approval.

None of this needs to be curated. A daily analytics refresh surfaces the contacts and projects actually engaged with; a weekly compaction archives stale entries instead of deleting them — so context never silently disappears. The longer it's used, the sharper the draft gets — and it works the same way across every connector.

The contact_update card handles the public-signal side of prospect context. When a prospect's bio changes — a promotion, a new role, a link in their company bio — Loop surfaces a card with the proposed update to people/<name>.md in memory. Approve is tapped and the contact profile gets refreshed; next time they email, the email_reply card carries the new context.


What this workflow really solves isn't a few automation scripts

At first the goal was just to save the 2 hours every Friday being spent on pipeline archaeology. But after a few weeks, the realization hit: the real problem isn't a few missing automation scripts — it's that sales work is fundamentally a cross-channel context problem:

  • The deal lives in HubSpot, the conversation lives in email, the follow-up lives in Slack
  • The same prospect appears in all three with the same context that has to be reloaded each time
  • Action signals are buried under 200 other CRM rows
  • By the time it's noticed that a deal has gone cold, the close date is two weeks away

In the past, all this context had to be found and pieced together by actively searching. The change OpenLoomi brings is inverting that relationship: instead of constantly searching across systems, AI keeps watching the CRM and the conversations and comes back with the full memory slice at the right moment.

  • If a deal stage changes, the hubspot_deals channel surfaces a typed card with the new stage and the last activity date.
  • If a prospect emails, the email_reply card lands with the draft grounded in what was discussed last quarter.
  • If a prospect DMs on Slack, the im_reply card carries the channel context and a grounded draft.
  • If a prospect's public signal changes, the contact_update card proposes the memory refresh.

All that's needed is to focus on the parts that genuinely need judgement — the actual message content, the proposal terms, the deal strategy.


From "Friday archaeology" to a continuously running sales loop

To make this work, two kinds of working patterns are configured in OpenLoomi.

One is event-driven:

TriggerWhat happens
HubSpot deal-stage change (via custom channel)Typed todo or contact_update card surfaces with the new stage, last activity, and matching memory slice
Inbound email from a prospect + action word + past reply windowemail_reply card with draft grounded in memory; four-gesture flow
Inbound DM from a prospect (Slack / Telegram / Lark / iMessage)im_reply card with channel context and draft
Public signal on a prospect (promotion, new role, link in bio)contact_update card proposes the memory refresh

The other is scheduled:

TaskSchedulePurpose
Brief (Today's To-Do)Every day at 9 AMPulls today's calendar + open decision cards + deal signals that landed overnight
Wrap (Today's Done)Every day at 6 PMLists the outreach Loop handled for you today + what got parked

Together they form a loop that runs continuously across HubSpot, email, and Slack:

Continuously watch → Organize prospect context → Propose draft or update → Human decides → Send and remember

Compared to configuring an isolated per-channel workflow, the preference is to have OpenLoomi keep understanding "what's actually happening with each deal right now, and which of them needs a touch today."

💡 Outbound isn't in this table because there are no incoming signals yet for cold outreach. It lives in Chat. The main OpenLoomi window is opened, the agent is asked to draft using the cold-email skill, then it's refined and sent via the matching connector.


What changed

AspectBeforeAfter
Pipeline visibilityOpen HubSpot, scroll, manually re-checkLoop surfaces typed cards as deal stages change
Outreach qualityGeneric mass-sent templatesDrafted in chat with the agent, grounded in past phrasing and prospect notes
Proposal writingHours per proposal, hunting for contextAgent pulls conversation history from memory, drafts in your template
Follow-up cadenceDrop after one touchFollow-up drafts prepared in chat, grounded in what was actually discussed
Cross-channel contextProspect is a different person in every toolOne memory, one queue — Sarah's Slack DM has the same memory slice as her email

What OpenLoomi saves isn't just the 2 hours every Friday. More importantly, there's no need to keep switching between HubSpot, Gmail, and Slack, re-finding the last conversation with each prospect, and worrying about which deal went cold.


How to set this up

Path A: Connect HubSpot (one-time)

In OpenLoomi Desktop → Settings → Connectors, HubSpot is found and Connect is clicked. The browser pops up the matching OAuth page. After authorizing, verification runs with list-accounts in chat — once HubSpot shows active, the connector is wired.

Then in chat, the deal signal source is registered:

Register a custom channel called "hubspot_deals" that polls my HubSpot deals every 30 minutes.
Wrap the Composio HubSpot toolkit's "list deals" tool.

X lives in Composio's app catalog; the connect skill installs Composio on the fly if not already installed. Verification runs with list-accounts — once HubSpot shows active and the hubspot_deals channel appears in chat, Loop picks them up on the next tick.

Path B: Add the skills needed

In chat, the skills matching the workflow are asked for:

Add the cold-email skill for B2B outreach drafting.
Add the revops skill for pipeline lifecycle tracking.
Add the hubspot-automation skill for CRM property updates.

Each skill installs on the fly the first time it's asked for.

Tune Loop

Loop is on by default at a 10-minute scan. To tune trusted contacts, source toggles, and brief/wrap times, Settings → Loop is opened. To tune when Loomi bubbles appear, Settings → Attention Agent is opened.

💡 HubSpot isn't in Loop's five built-in sources, so the deal signals show up only after the custom channel has been registered. Once registered, the next tick picks them up — and they appear in the Brief and Wrap rollups alongside everything else.

OpenLoomi's audit log records every execution — how many times Loop has polled, which deal signals surfaced, which Approves were tapped, which drafts were edited. This way repetitive triage can be handed off to AI while every action it took remains visible.


  • Loop — the deal-signal engine
  • Connectors — wiring HubSpot + Slack + email
  • Memory — the prospect history drafts are grounded in
  • Automation — schedule the weekly pipeline rollup
  • Attention Agent — where high-value deal signals bubble