Most competitive intelligence ends in a document. Someone tracks the rival's pricing page, writes up the changes, and circulates a battlecard. That work is real and it helps you win deals you are already in.
It does not create deals you are not in.
The other half of competitor monitoring is the half almost nobody instruments: your competitor's unhappy customers, in public, right now. They have the budget, the problem and the motive at once: they have already been through procurement, already won the internal argument that this category is worth paying for, and the only open question is who they buy from next. That question has a shelf life measured in weeks.
Two halves, and they answer different questions
| Question | Where it comes from | |
|---|---|---|
| Intel | What did they do? | A sweep job per tracked competitor |
| Chatter | What do their customers think? | rivals listeners, rolled up per rival |
Both join on the same competitor key, which is what lets you see them side by side rather than as two unrelated screens.
The watchlist is workspace-level, so a rival outlives any one listener: it can appear in several, and it accumulates state: complaints, themes, trend, rating drift. A competitor is an entity, not a search.
Why keyword-alerting a competitor's name does not work
The obvious version of this is an alert on your rival's name. It fails for a specific reason worth understanding before you buy anything:
A complaint shares no vocabulary with the product it is about.
"Waited forty minutes on hold, nobody ever picked up, and then they double booked us anyway."
That is the best lead a scheduling vendor will see this month. It contains the word "scheduling" zero times. It names the rival one comment earlier, not in that sentence. A filter built from your product vocabulary drops it; a filter built from the rival's name misses it too.
So a listener that works on this carries two vocabularies at once: the names, with the aliases people actually type ("hubspot", "HS", "SFDC", "monday.com"), and the language of the complaint itself, independent of the product category. Both are derived from your website and shown for review before anything runs.
Competitor names are retrieved, not remembered
This is the failure mode specific to AI-assisted competitive intelligence, and it is worth a paragraph because it is silent.
Ask a model to name your competitors from memory and it will produce a plausible list containing at least one company that does not exist or does not compete. That failure never errors. The fake rival returns zero complaints forever, and in a roll-up it is indistinguishable from a real rival having a quiet month.
So Openpulse searches before it generates. Four queries (X alternatives, X vs, X competitors, best alternatives to X) pull back the comparison listicles the market has already published about who you are measured against. They are SEO slop, and they are reliably full of real competitor names, which is exactly what is wanted. The model's job changes from remembering to reading.
Every name is then checked against that retrieved text and stamped:
| Provenance | Means | Shown as |
|---|---|---|
user | You typed it | yours |
retrieved | Found in published comparisons | (nothing, the normal case) |
model | Proposed, corroborated nowhere | unverified |
Unverified rivals are kept but labelled, so a thin evidence trail is visible at the moment you can act on it rather than two weeks later as an empty row you misread as good news.
The complaint is a comment, not a post
Nobody writes a post titled "I am frustrated with Vendor X". They write "what does everyone use for X?", and thirty people answer underneath, and four of those answers are the leads.
So this mode turns on two things the others do not pay for:
- Reddit comment search: one extra call per query, reaching the half of Reddit where people name a vendor and say what went wrong.
- Thread and video expansion: a busy thread (8+ replies) or a YouTube video becomes a container and a second call fetches what is inside it. Capped at three per query, because expansion is the one stage whose cost is multiplicative rather than additive.
Sources: Reddit posts and comments and Hacker News as full text, plus YouTube comments, G2, Trustpilot and X.
The roll-up is the deliverable
A stream of individual complaints is interesting. A ranked table is a decision.
GET /v1/rivals?listenerId=…&days=30One row per competitor: the count, the count for the window before it, a per-day series, themes ranked by frequency, and the strongest quote.
Trend is the column that matters. A rival with 41 complaints is a fact about how large they are. A rival whose complaint rate has doubled in thirty days is the one to aim your quarter at. Clicking a theme filters the signals beneath it, which is how "17 complaints about support response time" becomes the seventeen complaints, each with a link, a date and a quote.
It is aggregated on read rather than stored: a listener is capped at eight rivals, small enough that recomputing beats keeping a second collection in step, and a stale roll-up is worse than a slow one.
What you do with it
The label vocabulary is its own: switching, frustrated and comparing shown by default, with praise and noise filed behind tabs. In market mode a competitor mention is junk; here it is the headline, which is why it is a separate mode rather than a flag: you cannot express "a competitor mention is the signal" in a rubric whose premise is that it isn't.
Then: urgency alerts for the ones worth interrupting somebody for, a signed signal.urgent webhook into Slack, CSV export in HubSpot's own headers, and a drafted first message. For these signals the right channel is usually a reply in the thread: the person is already there, and they are already annoyed.
The honest limits
You will not get the complainer's work email. A Reddit or Hacker News handle is pseudonymous by design, and there is no legitimate route from it to a verified corporate inbox. That is not a roadmap gap; it is the shape of the source. The action here is to reply in the thread, which converts better anyway.
This is not battlecards. There is no CRM-embedded card, no win-loss programme, no approval workflow. If your problem is that reps lose to a named competitor and do not know how to handle the objection, buy a competitive enablement tool, which is a different product and a good one.
It is retrieval plus a classifier, not analysts. Cheaper, faster and auditable, with provenance labelled. Not the same as a person who read the thing.