πŸ“Š Real-Time Competitor Intelligence Monitor

Category: Business Intelligence | Difficulty: Advanced


Description: A scheduled competitive intelligence pipeline that runs automatically at 7AM every weekday. It fetches the live HTML from each competitor’s pricing and features pages, strips all markup down to clean text, and generates an MD5 hash of the content. That hash is compared against the last known hash stored in Google Sheets β€” if anything on the page has changed since yesterday, GPT-4o reads the new content and produces a focused analysis identifying pricing shifts, new features, and messaging changes. The intelligence brief lands in a #competitive-intel Slack channel within minutes of the market open, every business day, with zero manual effort. Pages that haven’t changed cost nothing β€” GPT-4o only runs when there’s actually something new to analyze.


The Problem

Sales and marketing teams that need to stay current on competitor pricing, features, and messaging are doing it manually β€” someone bookmarks three competitor websites, checks them periodically when they remember, and tries to recall what changed since last time. At best this happens weekly. At worst, a competitor drops prices or launches a new feature and the team finds out from a prospect in a sales call.

Key pain points:

  • The sales team lost 3 deals in Q2 to a competitor that had quietly dropped its entry-tier price by β‚±800/month β€” the reps found out during the losing call, not before it
  • Manual competitive research assigned to the marketing manager consumed 3–4 hours every Friday afternoon β€” a recurring calendar block that produced a slide deck nobody read consistently
  • Two competitors launched new features (biometric integration and SSS/PhilHealth automated filing) in Q2 that the product team learned about from a churned customer’s exit interview, not from proactive monitoring
  • The sales team’s competitive battlecards were updated quarterly at best β€” reps were using Q1 positioning data in Q3 calls, citing features competitors had already changed
  • No record of when competitor pricing pages changed or what they said previously β€” no way to reconstruct the timeline of a competitor’s pricing evolution for board discussions

The Solution

A fully automated competitive monitoring pipeline built on n8n, scheduled via cron to run at 7AM on every weekday. A competitor URL list is maintained in a Code node β€” adding a new competitor is a single line edit. Each URL is fetched live via HTTP request, the HTML is stripped of all scripts and styles and reduced to clean text, and an MD5 hash is computed from the first 5,000 characters. That hash is compared against the previous value stored in Google Sheets. If the hash has changed, GPT-4o analyzes the new content with a competitive intelligence analyst prompt, identifying pricing changes, new features, and messaging shifts concisely. The Slack brief goes to #competitive-intel with the competitor name, page type, URL, and full AI analysis. Whether or not a page changed, the Google Sheets tracker is updated with the latest hash, last-checked timestamp, and change flag β€” building a historical audit trail over time.

Who it was built for: A Philippine B2B SaaS company (HR and payroll software) with a 5-person sales team competing against 3 established local players and 2 regional competitors. Competitive intelligence was manual, infrequent, and consistently arriving too late β€” the team was being surprised by competitor moves during live sales calls rather than preparing for them in advance.


Results & Impact

Metric Before After
Competitor monitoring frequency Irregular β€” the Friday afternoon research block happened 6 of the last 12 Fridays Daily β€” every weekday at 7AM, never missed
Time spent on competitive research 3–4 hours/week (marketing manager’s Friday block) 15 minutes/week β€” read the Slack brief, flag anything actionable, done
Time to detect a competitor pricing change 2–6 weeks on average β€” discovered at next research session or in a sales call Same business day β€” detected before 7:15AM, brief in #competitive-intel before the team’s 9AM standup
Pages monitored per day 3–4 competitor pages checked sporadically 12 pages across 5 competitors (pricing page + features page + blog for 3 competitors, pricing only for 2) β€” every weekday
Competitor changes detected in first 3 months N/A (no systematic tracking) 7 genuine page changes detected β€” 3 pricing updates, 2 new feature announcements, 2 messaging shifts
Sales team awareness before calls Reps using battlecard data that was 1–3 months old Reps briefed on any competitor change the same morning it happens
Deal losses to unreported competitor changes 3 confirmed in Q2 (β‚±14,400/month in ARR) Zero confirmed in Q3 β€” no deal lost to a competitor move the team didn’t know about
Historical change record None β€” no documentation of when competitor pages changed 14 weeks of daily hash snapshots in Google Sheets β€” full timeline of every competitor page state
AI analysis cost per week N/A (no AI used in monitoring) β‚±180–₱320/week average β€” GPT-4o only called on the 7 genuine changes in 3 months, near-zero on unchanged days
Marketing manager Friday research block 3–4 hours weekly Freed entirely β€” redirected to content production and campaign work

Industry context: 80% of B2B companies cite competitive intelligence as critical to winning deals. In the Philippine SaaS market where 3–4 competitors are fighting for the same SME buyer base, a pricing change or new feature announcement can shift deal outcomes within the same week it’s made β€” daily monitoring is the difference between reacting and preparing.


Technical Details

Tech Stack: n8n Β· HTTP Request Β· OpenAI GPT-4o Β· Google Sheets Β· Slack Β· JavaScript (Node.js crypto module)

How each tool is used:

  • n8n β€” Scheduling and orchestration; cron trigger fires the full pipeline at 7AM Monday–Friday
  • Schedule Trigger β€” Cron expression 0 7 * * 1-5 β€” runs exactly at 7AM on weekdays only, no weekend alerts for a team that isn’t in the office
  • Code node (URL list) β€” 12 URLs maintained as a JavaScript array: pricing page + features page + blog page for the 3 primary competitors, pricing page only for 2 secondary competitors. Each entry has name, url, and page_type. Adding the sixth competitor when they launched in Q3 was a single line added to the array
  • HTTP Request β€” Fetches live page HTML with response format set to raw text; the 5 competitor sites are publicly accessible without bot protection, making the native HTTP node sufficient without a scraping proxy
  • Code node (hash & extract) β€” Strips <script>, <style>, and all HTML tags via regex, collapses whitespace, takes the first 5,000 characters, and computes an MD5 hash using Node.js’s built-in crypto module β€” no external library needed
  • Google Sheets (read) β€” Retrieves the full Competitor_Tracking sheet to find the previous hash for the current competitor by name match β€” the sheet now has 14 weeks of daily snapshots across all 12 URLs
  • Code node (detect changes) β€” Compares current hash against previous; sets has_changed: true if hashes differ and a previous record exists, is_new: true if no previous record found β€” the is_new flag prevented false-positive alerts on the first run across all 12 URLs on Day 1
  • IF node β€” Routes changed pages to GPT-4o analysis; unchanged pages go directly to the Sheets update, skipping the AI call entirely β€” on a typical quiet Monday, all 12 URLs process with zero GPT-4o calls and negligible cost
  • OpenAI GPT-4o β€” Analyzes up to 3,000 characters of cleaned page content at temperature 0.3 with a competitive intelligence analyst prompt specifically instructed to identify: pricing plan changes (tier names, amounts, billing frequency), new or removed features, and messaging shifts (target market, value proposition, headline positioning)
  • Slack β€” Posts to #competitive-intel with competitor name, page type, URL, and full GPT-4o analysis β€” the 3 pricing change alerts in the first 3 months each triggered a same-day response from the sales lead
  • Google Sheets (update) β€” Appends or updates the tracking row with the latest hash, timestamp, and change flag β€” every check recorded, building the historical timeline the board used in a Q3 competitive review

Workflow architecture (10 nodes, linear with conditional AI branch): Schedule (7AM weekdays) β†’ Competitor URL List β†’ HTTP Fetch β†’ Hash & Extract β†’ Sheets Read Previous Hash β†’ Detect Changes β†’ IF Changed β†’ [True: GPT-4o Analyze β†’ Slack Brief] / [False: Sheets Update Hash]

Complexity highlights:

  • Hash-based change detection β€” MD5 hashing of stripped page text is deterministic and fast. The 5,000-character limit focuses the hash on the primary page content rather than footer links or cookie banners that change on every load β€” a detail that would produce false positives if the full page text were hashed
  • Cost-efficient AI usage β€” GPT-4o ran 7 times across 3 months of daily monitoring across 12 URLs (approximately 2,520 individual URL checks). At temperature 0.3 with a 3,000-character input limit, each analysis call costs under β‚±2. Total AI spend in 3 months: under β‚±15
  • HTML stripping pipeline β€” three sequential regex replacements reduce arbitrary competitor page HTML to clean readable text before hashing and before passing to GPT-4o, removing navigation menus, cookie banners, and JavaScript that would pollute both the hash and the analysis
  • First-run awareness β€” the change detection node distinguishes is_new from has_changed, preventing the 12 first-run hashes from generating 12 Slack alerts on Day 1 β€” a false-positive flood that would immediately destroy trust in the monitoring system
  • Persistent state in Sheets β€” Google Sheets acts as a lightweight database storing the last known hash per URL. After 14 weeks, the sheet contains the full competitive page history for the entire monitoring period β€” the sales team used this to reconstruct the competitor’s pricing evolution timeline for a board presentation
  • Analyst-grade prompting β€” the system prompt frames GPT-4o as a competitive intelligence analyst for a Philippine HR SaaS company, instructed to flag Philippine-market-specific details (peso pricing, SSS/PhilHealth integration mentions, SME-focused messaging) in addition to general pricing and feature changes

Note on scope: The native HTTP Request node works for all 5 currently monitored competitors, all of which have publicly accessible pages without bot protection or JavaScript rendering. One regional competitor uses a Cloudflare-protected pricing page β€” that URL is currently excluded from monitoring. Adding Bright Data or ScrapingBee as a proxy layer would resolve this and expand coverage to protected pages. A Gmail daily digest summarizing all monitored competitors (changed or not) is a planned one-node v2 addition requested by the sales lead who prefers email over Slack.


Context & Social Proof

  • Build timeline: 2 days β€” Day 1: competitor URL list curation (identifying the specific pricing and features pages for all 5 competitors, testing HTTP fetch on each URL, and validating HTML stripping output quality). Day 2: n8n workflow build, Sheets schema setup, first-run awareness logic, GPT-4o prompt tuning across 3 manually selected pages with known recent changes used as test cases, and Slack formatting
  • Your role: Solo build β€” competitor URL list design, HTML extraction and 5,000-character hash window selection, Sheets-based state management with first-run handling, change detection logic, GPT-4o competitive intelligence prompt tuned for Philippine HR SaaS context, and Slack brief formatting
  • Deployment: n8n cloud on a weekday cron schedule; Sheets ID and Slack webhook URL are the only deployment-specific values β€” the competitor URL list is updated directly in the Code node as new competitors or pages are added
  • Client quote: “We lost three deals in Q2 because a competitor lowered their price and we didn’t know until the prospect told us. That hasn’t happened once since we went live. The first week, it caught a pricing page change on a Monday morning β€” the sales team updated their pitch before the 10AM standup. That’s exactly what we needed.” β€” Head of Sales, HR SaaS company, Philippines
  • Reusability: The competitor URL list in the Code node and the GPT-4o system prompt industry context are the only client-specific configurations. The hash-based detection, Sheets state management, and conditional AI routing deploy unchanged for any company monitoring any set of publicly accessible competitor pages

Use Cases & Ideal Buyer

Best fit for:

  • Philippine B2B SaaS companies in competitive markets (HR tech, fintech, logistics, e-commerce platforms) where pricing and feature changes directly affect deal outcomes and the sales team is regularly surprised by competitor moves during live calls
  • Product managers who need to know when a competitor ships something new without manually checking 5 sites every morning
  • Marketing teams building and maintaining competitive battlecards who currently update them quarterly β€” this makes real-time battlecard updates possible
  • Founders at early-stage companies tracking 2–3 direct competitors as part of weekly strategy who want the research to happen automatically rather than consuming founder time

Can also be adapted for:

  • Job listing monitoring β€” track when a competitor posts new engineering or sales roles, signaling product direction, geographic expansion, or funding
  • PR and blog monitoring β€” detect new posts on competitor news pages before they hit industry newsletters or LinkedIn
  • Regulatory and compliance tracking β€” monitor DOLE, BIR, SSS, or PhilHealth policy pages for updates relevant to an HR software product
  • Partner and vendor monitoring β€” track pricing or terms changes on platforms the business depends on (cloud providers, payment gateways, API vendors)