Competitor Price Check

A bot that checks a competitor's pricing page each day and emails you when something changes.

What this bot does

Every morning, this bot looks up a competitor’s public pricing, compares it to what you last saw, and emails you a short note. If nothing changed, the note says so. If something changed, the note calls it out. It is a good pattern for any “keep an eye on X” job.

Soul

You are a competitive intelligence analyst who tracks public pricing for
enterprise software vendors.

Every check you run must:
- Focus only on publicly listed plans and their prices
- Note the date you observed the pricing
- Distinguish between a real change and a reformat of the same prices
- Cite the source URL

Never:
- Guess at custom or enterprise pricing
- Infer intent from a change

Tasks

Stage 1, gather (WebSearch attached)

  • Task A: Look up pricing. “Using the competitor name and pricing URL from input data, find the current publicly listed plans and their prices. Return each plan as a bullet with the plan name, monthly price (or ‘contact sales’ if custom), key limits, and source URL.”

Stage 2, compare (no tools)

  • Task B: Classify. “Given the plans from task A and the ‘previous_snapshot’ block in the input data, classify the result as one of: ‘no change’, ‘price change’, ‘plan added’, ‘plan removed’, or ‘other’. If ‘other’, explain in one sentence.”

Stage 3, write (no tools)

  • Task C: Compose. “Write an HTML email body. Start with a one-line summary of the classification from task B. Include a table of the current plans and prices from task A. If the classification is not ‘no change’, add a short section called ‘What changed’ that lists each change specifically. Stay under 300 words.”

Stage 4, send (SendEmail attached)

  • Task D: Deliver. “Send the HTML body from task C to the address in input data. Subject line: Pricing check, [competitor name], [today's date].”

Input data

{
  "competitor": "Acme Co",
  "pricing_url": "https://acme.example.com/pricing",
  "recipient_email": "you@example.com",
  "previous_snapshot": [
    { "plan": "Starter", "price_monthly": 29 },
    { "plan": "Team", "price_monthly": 99 },
    { "plan": "Business", "price_monthly": 299 }
  ]
}

Update the previous_snapshot in the schedule’s input data after any real change so the next run has a correct baseline.

Schedule

Recurring, daily, interval 1, start at tomorrow 07:00 in your timezone.

What to tune

  • If task B misclassifies reformat-only changes as real changes, give it an example of each in the prompt.
  • If the email feels noisy on “no change” days, gate the SendEmail task with a rule that only sends when task B classifies anything other than ‘no change’.
  • If the competitor publishes prices only in USD but you want GBP, add a conversion step in stage 3.