Competitor war room board for weekly competitive reviews
Run your weekly competitive review from one board where every competitor page change lands as a card you triage, document, and share.
Build me a competitor war room board that our product marketing team runs the weekly competitive review out of, instead of scrolling back through a Slack alert channel. The board is organized as one lane per competitor domain, and inside each lane the page changes we pick up from Ahrefs Firehose arrive as cards.
Data source. Use Ahrefs Firehose. Firehose uses a two key model: the credential holds a management key, so first use List Taps to find an existing tap and its token, or Create Tap if there is none, and hold on to that tap token for everything else. Use List Rules with the tap token to read the rules that scope what we are watching, and show the user which competitor domains are currently covered. When the user adds a new competitor lane, write a domain scoped rule with Create Rule using Lucene syntax against the domain keyword field, for example domain:competitor.com, and optionally narrow it with url wildcard or regex patterns when the user only cares about certain sections of a site. Use Update Rule when the user edits a lane's scope. Read the change events with Stream.
Important storage constraint. The Firehose stream is Server Sent Events and there is no history endpoint, so nothing can be re-fetched after the fact. Every card the board has ever seen, its review state, the per lane and per type mute settings, and each user's last session timestamp must live in the app's own storage. Persist each incoming change event as a card row as it arrives, and de-duplicate on the source URL plus publish time so the same change does not land twice.
Card contents. Each card shows the page title, the URL as a clickable link, the text that was added and the text that was removed from the diff, the publish time, and an auto-assigned change type. Derive the change type from the URL path combined with the page_category and page_type labels that come back on the event, and classify into one of: pricing, product or feature, blog or press, careers, legal or terms, or investor relations. Show the change type as a visible label on the card so the user can scan a lane and immediately see the shape of what changed.
Review state. Every card carries a review state of New, Reviewed, or Material. The state persists per card and records who set it and when, and it is shared across the team so two people never review the same card twice. The board header shows, per competitor, how many unreviewed changes have arrived since that user's last session, and updates the user's last session timestamp when they leave the board.
Muting. Let the user mute an entire lane, and separately mute individual change types within a lane. Legal, careers, and press pages change constantly and are mostly noise, so muting has to be granular enough that the user can silence those without losing the pricing and product changes from the same competitor. Muted cards are hidden from the default view and excluded from the unreviewed counts, but stay retrievable behind a toggle.
Action one, document it. From any card the user can push the change into our Notion battlecard database using Create a Page, filling in the competitor, the change type, the quoted diff text, the source URL, and the date the change published. Let the user edit the fields in a small form before it is written, and mark the card as documented afterwards so it is obvious which changes have already been turned into battlecards.
Action two, share it. From any card the user can share the change to our #competitive Slack channel using the Slack Bot Send a Message operation. This is for material findings, so the message should carry the competitor, the change type, a short quote of what changed, and the source link. Let the user add a line of commentary before it sends.
Read back what we already know. Each lane also reads the Notion battlecard database with Query a Data Source, filtered to that competitor, and shows what we have already documented about them. This is the part that lets the user tell a genuinely new strategic move from a rehash of something we wrote up months ago, so surface the existing battlecard titles and dates next to the incoming cards rather than hiding them behind a click.
Weekly review mode. Build a dedicated mode that filters the board to changes published since a date the user chooses, defaulting to their last session, and then walks them card by card through everything unreviewed. In this mode each card is presented one at a time with the review state buttons, the document to Notion action, and the share to Slack action all immediately available, so a full weekly review is a single uninterrupted pass. Show progress through the queue and let the user exit and resume where they left off.
Nothing is written to Notion or Slack automatically. Every outbound action is triggered by the user from a card.
What does this prompt do?
- One lane per competitor, with page changes arriving as cards that show the page title, the link, what text was added and removed, when it published, and an automatic change type: pricing, product or feature, blog or press, careers, legal or terms, or investor relations.
- Mark every card New, Reviewed, or Material. The board remembers who set what, and the header shows how many unreviewed changes each competitor has piled up since your last session.
- Push a card into your Notion battlecard database or share it to your competitive Slack channel in one click, with the competitor, change type, quoted change, source link, and date already filled in.
- Each lane also shows what you have already documented about that competitor, so you can tell a genuinely new move from a rehash of something you wrote up months ago.
- Weekly review mode filters to everything since a date you pick and walks you through the cards one at a time.
What do I need to use this?
- An Ahrefs Firehose account for watching competitor websites
- A Notion workspace with a battlecard database, shared with your Notion connection
- A Slack workspace where the bot can post to your competitive channel
- The list of competitor website addresses you want to track
How can I customize it?
- Add or retire competitor lanes as your market shifts, and scope a lane to only the sections of a site you care about.
- Mute the change types that are pure noise for your team, such as careers or legal pages, and keep the ones that signal strategy.
- Point the share button at a different Slack channel, or send battlecards to a different Notion database.
- Change what counts as a material change and what gets written into each battlecard field.
FAQs
How is this different from a Slack alert channel for competitor changes?
How does the board decide what type of change something is?
Why does muting matter so much?
Can several people on the team use the same board?
Does anything get written to Notion or Slack automatically?
Related templates
See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.
One screen showing every social post waiting on approval, sorted by deadline, so reviewers can approve or reject without leaving the page.
Every Monday, find the past champions and closed-won contacts who changed jobs, update Attio, and get the moves worth chasing in Slack.
Staff submit what happened, your social manager edits the copy, picks the accounts and puts it on the calendar without a single spreadsheet.
Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.
Open one screen to find every unavailable, stale, or low-battery device in your smart home, see which hub is really at fault, and clear out the dead entries in bulk.
Stop scrolling back through a competitor alert channel.
Run your weekly competitive review from one board that remembers what you already reviewed and what you already wrote up.