{
  "id": 14665529,
  "title": "Your competitor's price is not a float",
  "url": "https://urgent.news/2026/10/15/your-competitors-price-is-not-a-float",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-15T10:00:01.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/anakin_writers/your-competitors-price-is-not-a-float-5hng"
  },
  "original_language": "en",
  "account": "Retailer pricing on a dashboard can be straightforward, tracking SKU, competitor, and price. However, when comparing products sold at different prices across various platforms, the issue lies not in the scraper but in the assumption that a single product has only one competitor price. Prices are observations, not static properties. For popular, widely available products, customers may encounter different prices on your website, major marketplaces, grocery delivery services, or even local stores. These prices are set by various systems – your own, the marketplace, the retailer, the delivery app, etc. Each system applies its own rules, fees, and markup, leading to disparities in the final delivered price. Storing prices in a simple database model like price (numeric(10,2)) fails to capture the complexity of real-world pricing. A more accurate approach is to create a price_observations table, tracking key details such as SKU, competitor SKU, sales channel, ZIP code, timestamp, subscriber context (e.g., Prime membership), item price, delivery fee, service fee, surcharge, currency, and raw data source. This allows for a more nuanced analysis of pricing discrepancies. When comparing prices, it's crucial to consider the entire fee stack, as fees can either narrow or widen the competitive gap depending on the shopping context. For example, a $7.29 grocery delivery price might appear 17.8% higher than a competitor's $5.99 item when considering only the base item price. However, when including delivery and service fees, the actual checkout price difference could be significantly smaller, around 9.1%. This highlights the importance of tracking delivery fees, service charges, and other factors that affect the final price customers pay. A common mistake is to use a national average price for delivery apps, which ignores local variations. Factors like local store premiums, platform-specific fees, and address-specific delivery rules can cause substantial differences in the final delivered price. For delivery apps, a more precise approach is to group prices by SKU, ZIP code, and other relevant factors. This ensures that pricing decisions reflect the actual customer experience across different locations.",
  "summary": "You add competitor pricing to a dashboard and start with the obvious model: SKU, competitor, price. It works for retailer pages. Then someone asks why the same product costs $6.49 on one site, $7.29 on a delivery app, and $14.74 at checkout. The bug is not in your scraper. The bug is the assumption that a product has one competitor price. A price is an observation, not a property For a nationally…",
  "key_points": [
    "Prices are observations, not static properties.",
    "Store prices in priceobservations table with SKU, competitor SKU, channel, timestamp, fees.",
    "Consider full fee stack for accurate competitive gap analysis."
  ],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}