---
ref: workflow:competitor-intent
title: Follow up when accounts research a competitor
author: thedogwiththedataonit
tools: [tool:firecrawl/scrape-url, tool:g2/browse-product-buyer-intent, tool:attio/list-records]
tags: [capability:manage-crm, capability:scrape-web, capability:track-intent, channel:email, has:api, has:mcp, motion:outbound]
updated: 2026-09-29
---

# Follow up when accounts research a competitor

Reads a competitor's pricing and changelog, finds your open deals comparing them on G2, and drafts a comparison email for each owner.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

## Outcome

- A five-bullet summary of the competitor's current plans and recent changes.
- A drafted comparison email for each open deal whose company is researching the competitor, for its owner to send.

## Inputs

Ask the user for these before you start.

- `competitor_pages`: the competitor's pricing page and changelog URLs
- `competitor_name`: the competitor's product name as G2 lists it
- `our_differentiators`: what your product does better, e.g. native HubSpot sync, no per-seat pricing
- `g2_product_id`: your product's id on G2
- `open_stages`: the Attio deal stages that count as open, e.g. Discovery, Proposal
- `lookback_days`: how far back to look, e.g. 30

## Set up

### Scrape a URL (Firecrawl, tool:firecrawl/scrape-url)

Use the first option your agent supports.

#### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "firecrawl": { "url": "https://mcp.firecrawl.dev/v2/mcp-oauth" } } }
```

Call the MCP tool `firecrawl_scrape`.

#### CLI (official)

Install the command, then confirm it runs.

```sh
npm install -g firecrawl-cli
firecrawl --version
```

Run `firecrawl scrape`.

Set `$FIRECRAWL_API_KEY` in your environment first (get a key: https://www.firecrawl.dev/app/api-keys).

### Browse buyer intent for a product (G2, tool:g2/browse-product-buyer-intent)

Use the first option your agent supports.

Note: Needs the `buyer_intent.read` scope. Rows include competitor activity: when `left_product_id` differs from `subject_product_id`, the company was looking at the competitor named in `left_product_name`.

#### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "g2": { "url": "https://mcp.g2.com/mcp" } } }
```

Call the MCP tool `browse_product_buyer_intent`.

#### API (official)

- Base URL: https://data.g2.com
- Endpoint: `GET /api/v2/products/{subject_product_id}/buyer_intent`
- Auth: send the header `Authorization: Bearer $G2_API_KEY`
- Get a key: https://my.g2.com/developers

### List records (Attio, tool:attio/list-records)

Use the first option your agent supports.

#### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "attio": { "url": "https://mcp.attio.com/mcp" } } }
```

Call the MCP tool `list-records`.

#### API (official)

- Base URL: https://api.attio.com
- Endpoint: `POST /v2/objects/{object}/records/query`
- Auth: send the header `Authorization: Bearer $ATTIO_API_KEY`
- Get a key: https://attio.com/help/reference/apps/generating-an-api-key

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

## Steps

1. **Read their pages** with Scrape a URL (Firecrawl). Fetch each page in `competitor_pages` as markdown. Keep five bullets: the current plans and prices, and the changelog entries dated within `lookback_days`.
2. **Find who is comparing** with Browse buyer intent for a product (G2). For `g2_product_id`, list the last `lookback_days` of buyer intent with the `company_domain` and `left_product_name` dimensions. Keep the domains whose `left_product_name` is `competitor_name`.
3. **Match open deals** with List records (Attio). List the deals in `open_stages` whose company's domain is one of those. Keep each deal's name, stage, owner and main contact.
4. **Write the comparison** yourself. Using the bullets from step 1 and `our_differentiators`, draft one plain-text email per deal, for its owner to send to the main contact, that names one concrete difference that matters at the deal's stage. Show the drafts to the user.

## Rules

- Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
