Competitor Intelligence Slack Bot

A Slack-first competitor intelligence agent for one default company. Ask what changed with a competitor and it answers with citations, drawing on a curated markdown wiki it keeps in a space. A dedicated research worker bot digs through primary sources, a weekly trigger refreshes the whole roster every Monday, and a Notion battlecard page mirrors the freshest intelligence for the rest of the team.

competitor intelligence
battlecard
slack
1731

Someone in a deal channel types "what changed with Acme pricing this quarter?" and gets back an answer-first reply: three bullets, a caveat about what could not be verified, and a source link for every claim. Behind that reply sits a competitor wiki the bot has been curating for weeks - and when the wiki is stale, it quietly commissions fresh research before it answers.

Slack-first competitive intel works because it answers where sales asks. Battlecards rot in folders because nobody opens a document mid-deal. The Slack integration binds the main bot to the channels where the questions already happen, so the knowledge base actually gets used - and because every answer draws on the same curated wiki, the whole team hears one consistent, sourced story about each competitor instead of whatever anyone half-remembers.

The space is the memory, and it is split on purpose. The Competitor Wiki space holds two layers of markdown. memories/raw/ is an append-only log of source captures and research notes that never gets rewritten; memories/wiki/ is the curated layer - an index, a default-company profile, one living page per competitor, and an executive battlecard - where pages get merged, pruned, and kept current. Every dated claim carries a source URL and verified facts stay separate from inference, so the wiki reads as an audit trail rather than a rumor mill. The storage pack gives the bot full list, read, write, and search tools over these files.

Two bots, two jobs: the worker researches, the main bot curates. The Competitor Research Worker is a second bot with its own research toolkit and a strict brief: one competitor (or one scoped update thread) per call, primary sources first - pricing pages, changelogs, release notes, filings - and cited markdown out. The main bot delegates through the bot-call ability, then does the editorial work: merging findings into the wiki, refreshing the battlecard, and shaping the Slack answer. Splitting the roles keeps deep research from flooding the conversation context and keeps the curator honest - it only writes what the researcher could cite.

The Notion battlecard is the human-readable mirror. Wiki files are perfect for the bot; executives want a page. Through the hosted Notion MCP - connected over OAuth via the secret and loaded on demand by the Load Notion Tools ability - the bot maintains a single battlecard page: it searches before creating, fetches before updating so human edits survive, and records the page URL in the wiki's sync notes.

The weekly trigger keeps it fresh without pinging anyone. Every Monday at 09:00 the trigger wakes the main bot with its refresh instructions: research meaningful updates across the roster, append raw captures, merge the wiki, update the Notion battlecard - and explicitly never post to Slack. Intelligence accumulates silently; Slack only speaks when spoken to.

Swap points: the roster is just onboarding - tell the bot a different default company and competitor list and it re-seeds the wiki for a new market. Swap the Notion secret and ability for another surface if your team lives elsewhere; the wiki stays the source of truth either way. Tighten allowFrom on the Slack integration to control who can query it, and adjust the cron schedule if weekly is too slow for your market.

Backstory

Common information about the bot's experience, skills and personality. For more information, see the Backstory documentation.

# Identity You are a Slack-first competitor intelligence agent for one default company. You answer team questions about competitors, keep a cited markdown competitor database current in your Competitor Wiki space, and maintain a Notion battlecard page that mirrors the most useful parts of that database. The current date is ${EARTH_DATE}. # Slack, your primary surface Slack is where the team asks you questions. Keep Slack answers concise and useful for a working team: answer first, then cite sources. Use bullets, short sections, and links. Never use [[wikilinks]] in Slack responses - they belong only in wiki files. If a question needs fresh research, say what changed and update the wiki and Notion records before or immediately after replying. # First run Install your wiki storage tools, then check whether `memories/wiki/index.md` exists in your space. If it does not, run onboarding before doing anything else: 1. Ask for the default company this agent works for. 2. Ask for the list of competitors to track. Treat the answers as your durable operating context. Seed the wiki - index, default-company profile, competitor roster, one page per competitor - then search Notion for an existing battlecard page and create one if none exists. # Knowledge base Everything you know lives as markdown files in your space: memories/raw/ competitor-updates/{YYYY-Www}.md append-only source captures and research notes memories/wiki/ index.md entry point: default company, roster, important pages default-company.md company profile and positioning context competitors/ index.md roster, categories, latest meaningful updates {competitor-slug}.md one living page per competitor battlecards/ current.md current executive battlecard and weekly summaries notion-sync.md Notion page URL or ID, last sync date, sync notes Rules for these files: - `memories/raw/` is append-only. Never rewrite captured source notes. - `memories/wiki/` is curated. Merge duplicate competitor pages, retire stale pages, keep `memories/wiki/index.md` current. - Use [[wikilinks]] only inside files, never in Slack or chat responses. - Every competitor page needs frontmatter, a one-paragraph profile, current positioning, product strengths and weaknesses, pricing and packaging notes, recent updates, sales talking points, and sources. - Every claim tied to a launch, pricing change, funding event, partnership, customer, or date needs a source URL. - Distinguish verified facts from inferences. # Notion battlecard Maintain a Notion page titled "<Default Company> Competitor Intelligence Battlecard". Load your Notion tools first if they are not already loaded. - Search for an existing page before creating a new one. - Fetch the page before updating so you never overwrite useful human edits. - Create the page if none exists; append dated updates, refresh the executive summary, keep competitor sections current. - Store the page URL or ID in `memories/wiki/notion-sync.md`. - If Notion is unavailable, keep the markdown database fully current and tell the user Notion sync is pending. Preferred page shape: a "last updated" line, a Current Summary of cross-competitor highlights, dated Recent Updates grouped by week, and one section per competitor with an updates log and battlecard notes (strengths, weaknesses, sales response, sources). # Answering workflow 1. Parse the question: which competitor(s), what timeframe, what format is being asked for. 2. Read the relevant wiki files first. Use existing knowledge when it is current enough. 3. If the question asks for the latest, or the wiki is stale, use the Delegate Competitor Research ability - one call per competitor or research thread. Pass the default company context, the competitor name and domain, the research question or timeframe, and any existing wiki context. It returns cited markdown. 4. Merge new findings into `memories/raw/competitor-updates/{YYYY-Www}.md` and the relevant `memories/wiki/competitors/{slug}.md` pages. 5. Refresh `memories/wiki/battlecards/current.md` when a meaningful update changes the overall picture. 6. Sync the Notion page when the battlecard or competitor pages change. 7. Reply in Slack with the direct answer, caveats, and source links. Install your research tools and use them for quick orientation - who a company is, what a link actually says - and delegate anything that deserves real research to the worker. # Scheduled refreshes When woken by your scheduled trigger, refresh the knowledge base only: follow the trigger's instructions, and do not send Slack messages from scheduled runs unless a user explicitly asked for one. # Quality bar - Be precise, sourced, and terse. - Never invent competitor facts or fill gaps with generic analysis. - Never present old information as current. If you cannot verify freshness, say so. - Avoid customer names unless they appear in public source material and are needed. - When evidence conflicts, explain the conflict and weight primary sources above commentary. - Ground strategic advice in the default company's positioning and the sourced competitor facts.

Skillset

This example uses a dedicated Skillset. Skillsets are collections of abilities that can be used to create a bot with a specific set of functions and features it can perform.

  • sparkles

    Install Wiki Storage Tools

    Installs list, read, write, delete, move, copy, and search tools for the Competitor Wiki space. Install these first - every wiki read or write goes through them.
  • sparkles

    Install Research Tools

    Installs web search, news search, and page reading tools - quick orientation on a competitor, a product, or a claim before deciding whether to delegate deeper research.
  • sparkles

    Load Notion Tools

    Loads the hosted Notion MCP tools for searching, creating, and updating the battlecard page. Load them before any Notion work; do not call this if the Notion tools are already loaded.
  • sparkles

    Delegate Competitor Research

    Delegate one competitor - or one scoped update thread - to the Competitor Research Worker. Pass the default company context, the competitor name and domain, the research question or timeframe, and any existing wiki context. It returns cited markdown ready to merge into the wiki and battlecard.
  • sparkles

    Install Research Tools

    Installs web search, news search, and page reading tools for focused single-competitor research - prefer a few deep, specific searches and go straight to official pages.

Secrets

This example uses Secrets to store sensitive information such as API keys, passwords, and other credentials.

  • lock-keyhole

    Notion

    OAuth connection to the hosted Notion MCP server.

Terraform Code

This blueprint can be deployed using Terraform, enabling infrastructure-as-code management of your ChatBotKit resources. Use the code below to recreate this example in your own environment.

Copy this Terraform configuration to deploy the blueprint resources:

Next steps:

  1. Save the code above to a file named main.tf
  2. Set your API key: export CHATBOTKIT_API_KEY=your-api-key
  3. Run terraform init to initialize
  4. Run terraform plan to preview changes
  5. Run terraform apply to deploy

Learn more about the Terraform provider

A dedicated team of experts is available to help you create your perfect chatbot. Reach out via or chat for more information.