Competitor radar
See every time a competitor engaged one of your target accounts, and exactly who reached out to whom.
A competitor commenting on your target account's post is a buying signal pointed at someone else. This playbook surfaces those moments so you can get there first.
It runs on a competitor watchlist: a reusable list of companies Sillage watches for you. When someone from that list comments on a post at one of your accounts, you get a detection.
What you need
A competitor watchlist bound to a competitor agent, with at least one run behind it. A watchlist is what any watchlist agent (competitor, customer, partner) reads from. If you don't have one yet, both paths below start by creating it.
The result
This week, competitors engaged 4 of your accounts:
Acme Jane Doe (AE at Rival Inc) commented on a post by Sam Lee (VP Sales, Acme)
Widgets Tom Ford (CEO at Rival Inc) commented on a post by Mia Ng (Head of Data, Widgets)Two ways to run it
Set up the watchlist once, then ask for the radar whenever you want. With the MCP connected or the sillage-api skill installed:
Create a competitor watchlist with Amplitude, PostHog, and BetterStack, then
watch my accounts for any activity from them.Once it has run:
Show me every time a competitor engaged one of my accounts in the last week.
Group by account, and for each one tell me which competitor, who from their side
engaged, and whose post at my account they engaged with. Rank the accounts by how
much competitor attention they got.Set up the watchlist and agent (once)
Create the list, add the companies by domain or LinkedIn, and bind a competitor agent to it. Skip this step if your watchlist already exists.
const key = { Authorization: `Bearer ${process.env.SILLAGE_API_KEY}`, 'Content-Type': 'application/json' }
const base = 'https://api.getsillage.com/api/v2'
const list = await fetch(`${base}/watchlists`, {
method: 'POST',
headers: key,
body: JSON.stringify({ type: 'competitor', title: 'Key competitors' }),
}).then((r) => r.json())
await fetch(`${base}/watchlists/company/${list.id}/entities`, {
method: 'POST',
headers: key,
body: JSON.stringify({ entities: [{ domain: 'amplitude.com' }, { linkedin_handle: 'posthog' }] }),
})
await fetch(`${base}/agents`, {
method: 'POST',
headers: key,
body: JSON.stringify({ name: 'Competitor tracker', type: 'competitor', watchlist_id: list.id }),
})Read this week's signals
const since = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString()
const { data: signals } = await fetch(
`${base}/workspace/signals?limit=100&detection_start_date=${encodeURIComponent(since)}`,
{ headers: { Authorization: key.Authorization } },
).then((r) => r.json())Keep the comment detections and read both sides
Watchlist comment types end in Comment (for example competitorInboundComment). The data.interaction side is the watched company's person; the data.post side is whoever they engaged at your account.
const comments = signals.filter((s) => s.signal_type?.endsWith('Comment'))
for (const s of comments) {
const them = s.data.interaction?.author // the competitor's person
const you = s.data.post?.author // whose post at your account they engaged
console.log(`${them?.full_name} (${them?.headline}) engaged ${you?.full_name} (${you?.headline})`)
}Group by company_id and resolve names with GET /companies/{id} for the per-account ranking in
the result above. See Watchlists and the
Signals reference for the full shapes.
Make it yours
- Add customer, partner, or influencer watchlists to widen the radar beyond competitors.
- Alert only when the engaged post is by a senior contact at the account.
- Draft a message to the person whose post was engaged, since a competitor just reminded them the problem is real.
Next steps
- Create an agent and Watchlists for the full setup options.
- Draft outreach from a signal turns a hit into a message.
- Signal reference covers the competitor signal, and the customer, partner, influencer, and champion signals that run the same way.