# Competitor battlecard workspace your reps open before calls

> One grid of competitor cards with current pricing, your own positioning notes, and a refresh button a rep hits minutes before a competitive call.

- Workflow type: app
- Services: Browserless, Google Sheets, Slack Bot
- Categories: Sales, Marketing
- Published: 2026-08-16

## What it does

- Shows every competitor you track as a card with their current pricing tiers, a picture of their pricing page, and the date you last checked them.
- Flags a competitor only when their real prices or plan names change, so nobody chases a redesign or a reshuffled banner.
- Opens into a full battlecard: the plan and price table, your team's positioning notes and objection handling, recent news about them, and a history of past pricing.
- Refreshes a single competitor on demand and shares the battlecard into a deal channel in Slack with one click.

## What you'll need

- A Browserless account, which is what reads competitor pricing pages and captures the page images for you.
- A Google account with a spreadsheet where the dated pricing history gets saved.
- A Slack workspace, if you want reps to share battlecards into deal channels.
- The pricing page web address for each competitor you want to track.

## Prompt

I want a competitor battlecard workspace my sales team opens before competitive deals. It is a reference surface people read and edit, not an alerting workflow, so nothing runs on a schedule and nothing gets pushed at anyone. Every rep sees the entire competitor set rather than only the competitors they added or own, and any rep can edit any battlecard.

The home view is a grid of competitor cards, one card per competitor we track. Each card shows the competitor name, their current pricing tiers as plan names with prices, a thumbnail image of their pricing page, the date we last checked them, and a flag when something changed since the previous check. Make that changed flag the most visible thing on a card so a rep scanning the grid immediately sees which competitors moved.

Opening a competitor card gives me the full battlecard on its own view. It shows the scraped plan and price table for that competitor, our own positioning notes and objection handling, a change history listing earlier pricing snapshots with the date each was captured and what differed, a full page image of the pricing page, and a sidebar of recent news about that competitor.

The positioning notes and objection handling are ours, not scraped. The team edits them inline on the battlecard and the app saves them, so the next rep who opens the card sees the current version. Keep those fields free text, persist them per competitor, and never overwrite them when a scrape refreshes the pricing data.

For the data handlers, use Browserless Scrape Elements against each competitor pricing page to pull the plan and price table into structured plan name and price pairs. Use Browserless Take Screenshot for both the card thumbnail and the full page image on the battlecard. When a pricing page does not yield a clean table from selectors, fall back to Browserless Get Page Content to fetch the fully rendered HTML and extract the plans and prices from that. Fill the news sidebar with Browserless Search Web on the competitor name.

Each battlecard has a Refresh button that re-scrapes just that one competitor on demand, so a rep can verify pricing minutes before a call. Refresh re-runs the scrape, the screenshot, and the news search for that competitor only, then updates the card in place and shows the new last checked date.

Only mark a competitor as changed when the extracted prices or plan names actually differ from the previous snapshot. Compare the structured plan name and price values, not the raw page HTML, so cosmetic markup churn, reordered attributes, rotating banners, and changed tracking parameters stay quiet. When nothing material changed, update the last checked date and leave the card unflagged.

Every refresh appends a dated snapshot row to a Google Sheet using Google Sheets Append Values, capturing the check date, the competitor name, each plan name and price, and whether it counted as a change, so the pricing history survives outside the app.

Each battlecard also has a Send battlecard to Slack button. It posts a summary of that card into a deal channel the rep picks, using Slack Bot Send a Message. The summary carries the current plans and prices, what changed since the last check, and our top positioning and objection handling points.

I need a way to manage the tracked set from inside the app: add a competitor with a name and pricing page address, edit that address, and remove a competitor. Adding one should run the first scrape right away so the new card has pricing and a thumbnail immediately.

## How to customize

- Add, edit, or remove competitors at any time by entering a name and their pricing page address.
- Decide what counts as a change, for example flagging only price moves and staying quiet about new plan names.
- Rewrite the positioning notes and objection handling for each competitor as your messaging evolves.
- Choose which Slack channel a battlecard gets posted into when a rep shares it.

## FAQ

### Does this run on a schedule, or do I check when I want?

It is a workspace you open, not an alert service. Nothing runs in the background. A rep hits Refresh on a competitor when they want current pricing, which is usually right before a competitive call.

### Will it flag a competitor every time they tweak their website?

No. It compares the actual plan names and prices it pulled off the page, so a redesign, a new promo banner, or reshuffled page code does not count. Only a genuine pricing or packaging move raises the flag.

### Can my whole team see and edit the battlecards?

Yes. Every rep sees the full competitor set rather than only the ones they added, and anyone can update the positioning notes and objection handling. The next person to open the card sees the latest version.

### What happens to the old prices when a competitor changes their page?

Every refresh saves a dated snapshot row to your Google Sheet and adds an entry to the change history on the battlecard, so you keep a record of what they charged before and when it moved.

### Do I need technical skills to add a competitor?

No. You enter their name and the web address of their pricing page, and the app pulls the plans and prices and captures a picture of the page on the spot.

### How is this different from a competitor alert that posts to Slack?

An alert tells you something moved yesterday. This is a reference workspace your reps read and edit, with your own objection handling saved alongside their pricing and a refresh they can run seconds before a call.

Use this prompt in General Input: https://www.generalinput.com/prompts/competitor-battlecard-workspace-your-reps-open-before-calls