neesh Inc.
Case Studies

Your competitor changed their pricing. You found out three days later.

Every morning, Alex Nguyen — Ridgeline Outdoor Co.'s buying manager — opened the same four bookmarks, checked the same competitor pages, and updated the same spreadsheet. Then a competitor ran a 3-day flash sale on expedition packs that pulled 30% of Ridgeline's weekly organic search traffic. The spreadsheet said: no changes. PriceWatch monitors those pages every day, filters the noise automatically, and delivers a plain-language briefing — so the next time something matters, you find out in hours, not days.

Composite scenarios: fictional companies, written to illustrate what our platform is designed to do. The figures are design targets, not measured client results.

Python FastAPI PostgreSQL + pgvector Claude Haiku HuggingFace Transformers Playwright AWS ECS Fargate
Book Free Assessment

Screen recording coming soon

4 days pre-warning on Black Friday pricing Design target — competitor move detected Tue 18 Mar; Ridgeline adjusted by Thu
< 2 hrs first competitive response time Design target — down from 3 days, or missing the window entirely
45 min saved per day Design target — eliminating the morning manual check across 4 competitor sites
$0.04 AI cost for the week that caught it Design target — 47 changes detected; 3 narrated; 44 filtered silently by ML

What Manual Monitoring Actually Costs

Ridgeline Outdoor Co. had been monitoring competitors the same way since 2019: a bookmark folder, a morning routine, and a shared spreadsheet. It worked — until it stopped working in the worst possible way.

The Buying Manager

  • Four competitor sites. Same four bookmarks, every morning. 45 minutes before the real work starts — and that assumes nothing changed overnight. If something did change, the real work is reconstructing when.
  • TrailHaven's sale started Tuesday at 6am. Alex checked at 9am Thursday. The spreadsheet showed no changes Wednesday — but the check was a visual scan, not a system. Alex missed the update on Wednesday entirely.
  • By Thursday, TrailHaven's sale was in its third day. Ridgeline had already lost the traffic window. The retrospective showed the sale ran from Tuesday to Thursday. The entry in the spreadsheet said: "prices similar to last week."
  • The question that followed the retrospective: what else did we miss that we just never found out about?

The Founder

  • This is a 4-person team. 45 minutes per day of manual monitoring is 10% of one person's working week. On a task that produces uncertain results on good days and wrong results on bad ones.
  • We didn't lose the sale because we didn't have the information. We lost the sale because the information arrived too late to act on. That's a different problem — and a solvable one.
  • The next Black Friday is in eight months. I'd rather know what's happening with our competitors' pricing four days before it matters than four days after.
  • The question was never whether to monitor. It was whether to do it manually.

Four Stages From Pages to Intelligence

Most of the monitoring process is free. Playwright scrapes pages at zero marginal cost. The diff engine compares snapshots locally. HuggingFace ML scores significance on the same machine. The LLM only fires when something genuinely matters — roughly 10% of detected changes. The infrastructure costs more than the intelligence.

The PriceWatch Pipeline

1

Scrape

Playwright headless browser visits each target page on its configured schedule — hourly, daily, or weekly. The scraper strips navigation, footers, and boilerplate to extract only the main content. The result is a clean text snapshot stored alongside a SHA-256 hash for fast change detection.

2

Diff

Each new snapshot is compared against the previous one using difflib line-by-line comparison. The diff engine extracts additions, removals, and modifications with their structural context — what changed, where it appeared on the page, and how much of the page was affected.

3

Score

A local HuggingFace pipeline scores each detected change on four weighted factors: diff size (15%), sentiment shift (20%), zero-shot change category (40%), and keyword presence (25%). Changes scoring below 0.4 are logged and discarded. No API call is made. No cost is incurred.

4

Narrate

Changes scoring 0.4 or above reach Claude Haiku with a narrow prompt: the diff text, the page category, and the target's configured keywords. The model produces two sentences — business impact and recommended action. The narration is stored in a pgvector semantic cache; similar future changes are served from cache at $0.

Your Weekly Intelligence Briefing

PRICEWATCH Weekly Intelligence Briefing
Ridgeline Outdoor Co. · Mar 17–24, 2025
8 targets monitored · 3 significant · 47 filtered · $0.04 AI cost
HIGH PRICING TrailHaven trailhaven.com
Detected Tue 18 Mar, 2:41 AM

"Expedition pack pricing dropped 15% across 6 SKUs, with new "limited time" callouts added to 4 product pages. Pattern is consistent with pre-event promotional positioning. Based on last year's cadence, the window is likely 2–3 weeks."

Match pricing on hero SKUs before Thursday
MED PRODUCT GearDepot geardepot.com
Detected Wed 19 Mar, 11:08 AM

"New "Winter Ascent" category page added with placeholder content and no inventory yet visible. Structural indicators suggest launch preparation — category added to nav, breadcrumbs live, no product listings."

Monitor weekly — watch for SKU additions
LOW HIRING Summit Supply summitsupply.com
Detected Thu 20 Mar, 7:22 PM

"3 new engineering roles posted, all platform-focused. No product page changes detected this week. Hiring activity suggests internal tooling investment rather than customer-facing product development."

No action required cached

This is what landed in Slack on Monday morning. The pricing change was detected on Tuesday.

The narration prompt is deliberately narrow

The LLM receives three inputs: the diff text, the page category, and the target's configured keyword list. It is asked to produce exactly two sentences — business impact and recommended action. It is not asked for a summary. It is not asked to be comprehensive or helpful in a general sense. A narrow prompt on ML-filtered input produces consistently useful output. A general prompt on unfiltered input produces noise — regardless of model quality. The first version of the narration prompt asked for a full summary. Half the output was descriptions of copyright year changes and footer updates. The ML filter and the narrow prompt are both required. Either one without the other produces a product you stop reading.

The System

The pipeline has four stages. Three of them are free. The ML significance gate is the product — not the narration.

PriceWatch architecture: 8 competitor URLs flow into a Playwright scraper, then into a Diff Engine, then into a ML Significance Scorer with a decision gate at score 0.4 — below threshold goes to "log and discard" (free), above threshold goes to a Semantic Cache check (pgvector), which either returns a cached narration at $0 or calls Claude Haiku, with output delivered via Slack, Email, and Webhook.

The ML gate is the wide path. The LLM is the narrow one. 90% of monitoring costs nothing.

Four Decisions That Define the Signal

A monitoring tool that fires on everything is a tool you stop reading. These four decisions are the difference between a weekly briefing you act on and a daily digest you unsubscribe from.

Local ML before the LLM

HuggingFace models run on the same machine as the scraper — no API call, no cost, no latency. Sentiment analysis and zero-shot classification score every detected change before anything external is contacted. The LLM fires on roughly 10% of checks. The other 90% are handled entirely within the deployment. Infrastructure costs more than intelligence — and that is by design.

The threshold is a risk policy, not a tuning knob

Ridgeline uses a significance threshold of 0.4 — balanced for eCommerce competitor monitoring. A legal firm monitoring regulatory pages would configure 0.25: catch everything borderline. A retailer monitoring competitor blogs might use 0.55: only fire on clear signals. The threshold belongs to the deployment, not the product. Treating it as a fixed parameter would make the same platform useless for half its use cases.

Semantic cache suppresses recurring noise

After a change is narrated, its embedding is stored in pgvector. When a new change matches a prior pattern — the same competitor running the same annual promotion, a footer updated with the new copyright year — the cached narration is returned at $0. After 90 days on the Ridgeline deployment, cache hit rate reached 58%. The platform gets cheaper as it accumulates history. That is the inverse of most software operating cost curves.

PriceWatch connects to FlowBase

An outgoing webhook fires on every significant change. FlowBase can subscribe to that webhook and trigger a downstream workflow: notify the buying team via Slack, draft a competitive response brief, update the pricing spreadsheet. PriceWatch detects the signal. FlowBase handles the response. The two platforms don't need to know anything about each other's internals — the webhook is the contract.

What We Learned

Lessons Learned

The demo is the sales call

PriceWatch doesn't need a slide deck. It needs one week and a prospect's three competitor URLs. The briefing — on real data, about their actual competitors — closes faster than any narrative. This is the only product in the portfolio where the first deliverable to a prospect is the pitch itself. Every other product has to explain what it does. PriceWatch shows you what your competitors did last Tuesday.

Noise filtering matters more than narration quality

The first version narrated every detected change. 47 changes a week became noise. After two weeks, the buying manager stopped opening the daily digest. The product had not failed technically — the narrations were accurate. It had failed as a communication product. The ML filter is not an optimisation. It is what makes the briefing trustworthy. A perfect narration of a copyright year update is worthless. A good narration of a pricing move, four days before Black Friday, is worth 45 minutes a day and then some.

Cost visibility is a trust feature

Showing '$0.04 AI cost this week' in the briefing footer was not a technical decision. It was a trust decision. Buyers with cloud cost anxiety need to see the number. '$0.04 versus 45 minutes every morning' is the ROI argument made self-evident, without a slide or a spreadsheet. The number should never be hidden. It is one of the most persuasive things in the briefing.

What I'd Improve

  • Screenshot comparison alongside text diff — detect layout changes and visual promotions that plain text extraction misses
  • CSS selector targeting — monitor specific page sections (pricing tables, product listings) rather than the full page, reducing noise from unrelated content changes
  • Multi-page correlation — detect when multiple competitors change simultaneously, signalling a market-wide shift rather than an isolated move
  • Authenticated page monitoring — extend coverage to behind-login competitor pages for clients with legitimate access

PriceWatch Connects to Everything

PriceWatch is one configuration of the monitoring platform. The detect-and-deliver pattern works the same way when the trigger is a regulatory page change, a competitor's new job listings, or a brand mention appearing on a third-party site. And when a significant change is detected, FlowBase can take over — notify the team, draft the response, update the records. The signal and the workflow are separate concerns.

PriceWatch composition diagram — PriceWatch at left detecting competitor changes, connecting via webhook to FlowBase (which triggers buying team notification, response brief draft, and pricing sheet update), and connecting to AskBase (answering "what is our margin on this SKU?" from the knowledge base)

PriceWatch detects the signal. FlowBase handles the response.

Book a call. We'll run this on your competitors this week, free.

Book Your Free Briefing