A non-technical guide to understanding how our automated price matching works
Imagine you're running a store and want to make sure your prices are competitive with other stores in the mall. Instead of manually checking every competitor's price every day, you hire a team of assistants to:
- Check competitor prices hourly across all your products
- Compare prices and find the best deals
- Apply smart business rules to decide if you should match those prices
- Update your prices automatically when it makes business sense
That's exactly what this system does for Mumzworld - but for thousands of products across UAE and Saudi Arabia, 24/7.
- UAE Store: mumzworld.com for UAE customers
- Saudi Store: mumzworld.com/sa for Saudi customers
- Amazon (UAE & Saudi versions)
- Noon (UAE & Saudi versions)
- FirstCry (UAE & Saudi versions)
- Nahdi Online (Saudi only)
- Example: Baby stroller SKU "ABC123"
- Cost Price: What we paid for it (including shipping, taxes)
- Current Selling Price: What customers see on our website
Let's follow a single product through the entire process:
graph TD
A[β° Every Hour] --> B[π Get All Products]
B --> C[π― For Each Product & Country]
C --> D[π€ Send Scouts to Check Prices]
D --> E[πͺ Check Our Own Website]
D --> F[π Check Amazon]
D --> G[ποΈ Check Noon]
D --> H[πΆ Check FirstCry]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
What happens here? Every hour, our system creates a "to-do list" of all products that need price checking. For each product, it sends out "scouts" (automated checkers) to visit competitor websites and our own website to see current prices.
sequenceDiagram
participant S as System
participant A as Amazon Scout
participant N as Noon Scout
participant F as FirstCry Scout
participant M as Mumzworld Scout
S->>A: Check price for Baby Stroller ABC123
S->>N: Check price for Baby Stroller ABC123
S->>F: Check price for Baby Stroller ABC123
S->>M: Check our current price
A-->>S: Found: $150 (was $180)
N-->>S: Found: $155 (no discount)
F-->>S: Out of stock
M-->>S: Current: $165 (was $170)
What happens here? Each scout visits their assigned website and reports back:
- What's the current price?
- Is there a discount active?
- Is the product in stock?
- When did they check this information?
graph LR
subgraph "Completion Tracker"
A[β
Amazon: Done]
B[β
Noon: Done]
C[β FirstCry: Checking...]
D[β
Mumzworld: Done]
end
E[β³ Wait for All Scouts] --> F{All Done?}
F -->|No| E
F -->|Yes| G[π Start Price Analysis]
What happens here? The system waits until all scouts report back (or timeout after trying). Only when we have complete information do we move to the next step. This ensures we make decisions based on complete data.
This is where the magic happens! Our system applies business rules in a specific order:
flowchart TD
A[π Start Price Analysis] --> B{Is product on<br/>Exception List?}
B -->|Yes| C[β Skip - No Price Matching]
B -->|No| D[π° Find Cheapest Competitor Price]
D --> E{Do we have a<br/>Preferred Competitor?}
E -->|Yes| F[π― Use Preferred Competitor Price]
E -->|No| G[π΅ Use Cheapest Price Found]
F --> H{Is this a<br/>Price Increase?}
G --> H
H -->|Yes| I{Is product blocked<br/>from Price Increases?}
H -->|No| J[π Check Profit Margin]
I -->|Yes| K[β Block - No Price Increases Allowed]
I -->|No| J
J --> L{Will we still make<br/>minimum profit?}
L -->|No| M[β Block - Margin Too Low]
L -->|Yes| N[β
Approve Price Change]
style C fill:#ffcdd2
style K fill:#ffcdd2
style M fill:#ffcdd2
style N fill:#c8e6c9
What it is: A list of special products we never want to automatically price match.
Example: Limited edition items, products with complex pricing, or items where we have exclusive deals.
Why: Some products require human judgment and shouldn't be automated.
What it is: For some products, we always want to match a specific competitor regardless of who's cheapest.
Example: For premium baby formula, we might always want to match Amazon's price (even if Noon is cheaper) because customers trust Amazon's pricing for sensitive products.
Why: Strategic positioning and customer perception matter more than just being cheapest.
What it is: Some products are marked as "never increase price automatically."
Example: Popular items during sales seasons, or products where price stability is important for customer trust.
Why: Price increases can hurt customer relationships and should be done carefully by humans.
What it is: Every product must maintain a minimum profit percentage.
Example: If a baby stroller costs us $100, and our minimum margin is 15%, we'll never sell below $117.65.
Math: If price = $117.65, then profit = $17.65, margin = $17.65 Γ· $117.65 = 15%
Why: We need to cover operational costs and make reasonable profit.
Understanding our lock system is like understanding how meeting room bookings work in an office:
graph TB
subgraph "Lock System Analogy"
A[π’ Office Building<br/>Meeting Room System]
subgraph "Room 1: Dispatch Lock"
B[π
65-minute booking<br/>'Checking Prices Room']
C[Prevents double-booking<br/>price checks for same product]
end
subgraph "Room 2: Matching Lock"
D[π
50-minute booking<br/>'Decision Making Room']
E[Prevents two people<br/>making pricing decisions<br/>for same product]
end
end
A --> B
A --> D
What it does: Prevents us from starting multiple price checks for the same product at the same time.
Real-world analogy: Like having a "Reserved" sign on a conference room. Once someone books "Baby Stroller ABC123 UAE Price Check," nobody else can book the same room until the meeting is over.
Why we need it: Without this lock, we might accidentally send out 5 different teams to check the same product's prices, wasting resources and potentially getting confused results.
Duration: 65 minutes (slightly longer than our hourly checks to prevent overlap)
What it does: Prevents multiple pricing decisions for the same product happening simultaneously.
Real-world analogy: Like having an executive decision room where only one pricing decision can be made at a time for each product. If someone is already in the room deciding about "Baby Stroller ABC123 UAE," everyone else has to wait.
Why we need it: Imagine two people trying to change the price of the same product at the exact same time - chaos! This lock ensures orderly, one-at-a-time decision making.
Duration: 50 minutes (shorter than dispatch lock, as decisions happen faster than price collection)
gantt
title Lock Coordination Timeline: Baby Stroller ABC123 UAE
dateFormat HH:mm
axisFormat %H:%M
section Dispatch Lock (65min)
Dispatch Lock Active :active, dispatch, 10:00, 11:05
Send Price Scouts :milestone, scouts, 10:00, 0m
section Price Collection
Gather All Prices :gather, 10:00, 10:15
section Matching Lock (50min)
Matching Lock Active :active, match, 10:15, 11:05
Price Decision :decision, 10:15, 10:20
Log Results :milestone, log, 10:20, 0m
section Status
Ready for Next Hour :milestone, ready, 11:05, 0m
Timeline Breakdown:
- 10:00 AM: π Dispatch Lock acquired, scouts sent out
- 10:15 AM: π All price data collected, π Matching Lock acquired
- 10:20 AM: β Decision made (Match Amazon's $150), π Matching Lock released
- 11:05 AM: π Dispatch Lock released, ready for next hourly cycle
Let's walk through a real example:
- Product: Baby Stroller Model ABC123
- Country: UAE
- Our Cost: $120 (what we paid including all expenses)
- Current Price: $165
- Minimum Margin Required: 15%
Store | Original Price | Discounted Price | Status |
---|---|---|---|
Our Store | $170 | $165 | β Active |
Amazon UAE | $180 | $150 | β On Sale |
Noon UAE | $160 | $155 | β Regular |
FirstCry UAE | $175 | - | β Out of Stock |
Step 1: Check Exception List
- β Is ABC123 on the "don't auto-match" list?
- β No, proceed to next check
Step 2: Find Target Price
- β Do we have a preferred competitor for this product?
- β No preference set
- π― Target Price: $150 (Amazon's discounted price - cheapest available)
Step 3: Check Price Direction
- β Is $150 higher than our current $165?
- β No, this is a price decrease (good for customers!)
Step 4: Check Profit Margin
- π° New margin = ($150 - $120) Γ· $150 = 20%
- β Is 20% β₯ our minimum 15%?
- β Yes, we'll still make good profit
Final Decision: β APPROVE - Change price from $165 to $150
graph LR
A[π° Old Price: $165] --> B[π― New Price: $150]
B --> C[π΅ Customer Saves: $15]
B --> D[π Our Profit: $30 margin = 20%]
B --> E[π Competitive with Amazon]
- Always Competitive Prices: Never pay more than necessary
- Real-time Updates: Prices reflect market changes within hours
- Transparent Pricing: Consistent pricing strategy across all products
- Automated Efficiency: No manual price checking needed
- Protected Profits: Never sell below minimum margins
- Strategic Control: Business rules ensure smart decisions
- 24/7 Operations: Works around the clock across all markets
- Complete Audit Trail: Every decision is logged and traceable
- Performance Reports: Clear metrics on price changes and impacts
- Risk Management: Multiple safeguards prevent costly mistakes
- Scalability: Handles thousands of products across multiple countries
Multiple Checkpoints: Every price change goes through 4+ business rule checks
Profit Protection: Mathematical guarantees we never lose money on a sale
Human Override: Exception lists allow manual control over sensitive products
Audit Trail: Complete records of every decision for review and analysis
Time Limits: Locks prevent system conflicts and ensure orderly processing
Scout Fails: If a competitor's website is down, we use the last known price or skip that competitor
All Scouts Fail: No price changes happen - we maintain current prices
Business Rule Conflict: The most restrictive rule wins (e.g., if margin check fails, no price change)
System Overload: Lock system prevents chaos by ensuring orderly processing
graph TD
A[β° Hourly Trigger] --> B[π Acquire Dispatch Lock]
B --> C[π€ Send Price Scouts]
C --> D[β³ Wait for All Results]
D --> E[π Acquire Matching Lock]
E --> F[π§ Apply Business Rules]
F --> G{Approve Price Change?}
G -->|β
Yes| H[π° Update Price]
G -->|β No| I[π Log Reason for Blocking]
H --> J[π Release All Locks]
I --> J
J --> K[π Generate Reports]
K --> L[β
Ready for Next Hour]
In Simple Terms:
- Every hour: Check all competitor prices
- Collect data: Get complete pricing picture
- Apply rules: Use business logic to decide
- Make changes: Update prices that make sense
- Stay safe: Multiple protections prevent mistakes
- Keep records: Track everything for analysis
- Repeat: Do it all again next hour
This system ensures Mumzworld stays competitive while protecting profits and maintaining business control - all automatically, 24 hours a day, across thousands of products in multiple countries.