Most competitive intelligence programs are a shared folder nobody updates after the first week. This workflow pulls three real signal sources daily for every tracked competitor, pricing page content, public job postings, and news mentions, has AI diff each against the previous snapshot to filter out noise, and routes only genuine changes to the team positioned to act: pricing changes to pricing, hiring signals to strategy, news events to PR.
Workflow diagram
flowchart TD
A[Daily Schedule] --> B[Get Competitor List]
B --> C[Split In Batches]
C --> D[Scrape Pricing Page]
C --> E[Fetch Job Postings]
C --> F[Fetch News Mentions]
D --> G[Merge Sources]
E --> G
F --> G
G --> H[Get Previous Snapshot]
H --> I[AI Diff & Summarize]
I --> J{Change Detected?}
J -->|No| K[Store Snapshot Only]
J -->|Yes| L{Classify Change}
L -->|Pricing| M[Alert Pricing Team]
L -->|Hiring| N[Alert Strategy Team]
L -->|News| O[Alert PR/Marketing]
M --> P[Merge Alerts]
N --> P
O --> P
K --> P
P --> Q[Log Snapshot & Diff]
Q --> C
R[Weekly Schedule] --> S[Compile Week's Changes]
S --> T[AI Weekly Digest]
T --> U[Send To Leadership] Every branch shown here (IF/Switch outcomes) exists as a real conditional in the downloadable JSON, not a simplification for this diagram.
Why hiring data is the most underused competitive signal
Public job postings are one of the most reliable leading indicators of competitor strategy, and almost nobody systematically tracks them. A cluster of new senior engineering hires for a specific product area, or a sudden opening for a "VP of International Expansion," reliably precedes public announcements by months, because headcount planning happens long before a launch.
Fetch Job Postings pulls this directly from public ATS job board APIs (Greenhouse and Lever both expose these without authentication for public postings), and Alert Strategy Team fires specifically on hiring-classified changes so a hiring pattern gets noticed by the team that can act on the inference, not buried in a general newsletter nobody reads closely.
Diffing against history is what makes this sustainable
The naive version of this workflow re-summarizes the full pricing page and job board every day, which produces a flood of repetitive alerts and trains everyone to ignore the channel within two weeks. Get Previous Snapshot pulls yesterday's data before the AI does anything, and AI Diff & Summarize is explicitly instructed to report only what changed.
Change Detected? then gates the entire alerting path: most days, for most competitors, nothing meaningfully changed, and Store Snapshot Only logs the data with zero noise generated. This is the difference between a monitoring system people trust and one they mute.
The weekly digest closes the loop for leadership
Daily alerts serve the team that needs to react immediately. Leadership needs the pattern across a week, not a stream of individual events. The separate Weekly Digest Schedule branch compiles the week's logged changes across all competitors into one AI-summarized digest, giving executives the "so what" view without needing to follow the daily alert channel at all.
Node-by-node reference
| Node | Type | Role |
|---|---|---|
| Scrape Pricing Page / Fetch Job Postings / Fetch News Mentions | HTTP Request ×3 | Three independent, genuinely predictive signal sources |
| Get Previous Snapshot | HTTP Request | Pulled before analysis so the AI compares, not just describes |
| AI Diff & Summarize | HTTP Request | Reports only what changed since the last run |
| Change Detected? | IF | The noise filter that keeps this workflow sustainable long-term |
| Classify Change Type | Switch | Routes each change to the team actually positioned to act on it |
| Weekly Digest Schedule branch | Schedule Trigger + AI | Compiles the pattern across a week for leadership |
24 total nodes in the downloadable file, including sticky-note documentation embedded directly on the canvas.
Key logic, in code
Change classification logic (conceptual, inside AI Diff & Summarize response parsing)
const diff = $json.aiDiffResult;
return [{
json: {
...$json,
hasChange: diff.changes.length > 0,
changeType: diff.changes[0]?.category, // 'pricing' | 'hiring' | 'news'
changeSummary: diff.changes[0]?.summary,
}
}]; Before / after
| Metric | Before | After this workflow |
|---|---|---|
| Signal sources tracked per competitor | 0-1, usually just news alerts | 3, cross-referenced daily |
| Alert noise | High if monitoring exists at all | Only genuine changes trigger alerts |
| Time to notice a pricing change | Whenever a customer mentions it | Within 24 hours |
| Leadership visibility | Ad hoc, reactive | Weekly synthesized digest |
Prerequisites
- n8n v1.40+ with Split In Batches support
- Diffbot or equivalent web content extraction API
- Public ATS job board access (Greenhouse/Lever, no auth needed for public postings)
- NewsAPI or equivalent news search API
- Anthropic API key, Airtable PAT, Slack Bot Token
Common pitfalls
Respect robots.txt and terms of service when scraping
Pricing page monitoring should only ever pull publicly published content, not bypass access controls or scrape at a rate that burdens the competitor's infrastructure.
Tune the AI diff prompt to ignore cosmetic changes
A/B tested button colors and copy tweaks are not competitive intelligence. The prompt needs explicit instruction on what counts as a substantive change.
Job posting signal needs interpretation, not just detection
A new posting alone is a data point, not a conclusion. Alert Strategy Team should include enough context (role, seniority, past hiring pattern) for a human to interpret it correctly.
Want this deployed, configured and monitored?
The template is free. Wiring in your real credentials, tuning the logic to your business, and keeping it running when an upstream API changes is what we do.
Get my free automation plan →Frequently asked questions
Is scraping competitor pricing pages legal?
Publicly accessible pricing information can generally be monitored, but always check the specific site's terms of service and robots.txt, and avoid any scraping that requires bypassing authentication or rate limits.
Can this track private/enterprise pricing that is not published?
No, this workflow only monitors publicly visible information. Enterprise pricing typically requires sales conversations and cannot be automated this way.
How many competitors can this realistically track?
Split In Batches keeps this scalable to dozens of competitors; the practical limit is usually API rate limits on the news and job board sources, not n8n itself.