About the project

Inspiration

Keeping up with competitor news is a full-time job: blog updates, social posts, funding rounds, job listings, app-store reviews… yet most teams still rely on manual Google searches, Slack pings, and scattered spreadsheets. We knew there had to be a smarter way to surface only the signals that matter—on the channels teams already use. Enter Competitor Pulse: built for fast-moving startups that need AI-powered competitive intelligence in real time.

What we built

Competitor Pulse automatically:

  1. Crawls a watch-list of URLs (company sites, blogs, social feeds) via a Firecrawl MCP server
  2. Uses Claude (Anthropic API) to classify relevance and urgency
  3. Compiles structured digests via Gumloop MCP
  4. Delivers actionable notifications to Slack, Email, and Notion

A lightweight React frontend lets you manage your watch-list, preview digests, and tweak filters. Under the hood, a Node.js/Express API orchestrates MCP calls, stores metadata in Supabase, and handles webhooks for Slack and Notion.

What we learned

  • MCP orchestration: Chaining Firecrawl → Claude → Gumloop taught us how to design robust, retry-safe pipelines.
  • Prompt engineering at scale: Balancing precision (don’t miss anything important) with recall (don’t overload users) required iterative A/B testing of classification prompts.
  • Integrations: Building secure, low-latency webhooks into Slack and Notion APIs sharpened our understanding of enterprise-grade delivery.

Challenges we faced

  • Authentication scopes: Ensuring our service keys had just the right permissions across two MCP servers without over-privileging was tricky.
  • Rate limits: We hit Anthropic rate caps during heavy crawls—so we implemented exponential backoff and batched requests.
  • Deduplication: Many companies publish the same update across multiple channels; de-duplicating on semantic similarity took extra tuning with embedding-based hashing.

Built With

Share this project:

Updates