Skip to main content
Trading, FinTech & Analytics — Case Study

Dynamic Pricing Optimization Engine

The client was an online retailer operating roughly twelve thousand SKUs across home goods and apparel on Shopify. Pricing was set weekly by a small merchandising team using a spreadsheet that combined gross-margin floors, competitor benchmarks, and gut feel. The result was meaningfully under-optimized — stockouts on top-performing SKUs at full price, deep markdowns on slow movers that already had thin margin, and no responsiveness to competitor moves between Monday refreshes.

+15%margin uplift
+8%monthly revenue
2hrefresh cycle
12kSKUs under management
Dynamic Pricing Optimization Engine
Category

Trading, FinTech & Analytics

Industry

Retail/E-commerce

Timeline

12 weeks from kickoff to full SKU base under management

Team size

4 specialists

Project Overview

The full story

The practical problem was that the merchandising team did not have time to act on the data they had. Competitor pricing was scraped daily but reviewed weekly. Stock levels were visible per SKU but not connected to pricing decisions. Demand signals from on-site behavior — view-to-cart ratios, cart abandonment by SKU — existed in the analytics tool but never flowed into pricing. The team was three people and could not run a daily pricing pass at the SKU count required.

We built a dynamic pricing engine that combined demand signals, competitive position, and stock level into a price proposal per SKU on a two-hour refresh cycle. The engine respected margin floors and brand-pricing rules set by the merchandising team, exposed the rationale per price change for review and override, and applied a velocity constraint so prices did not jump in ways that would surprise repeat customers. Markdown logic was unified with regular-price logic in the same engine, so slow movers were handled in a single framework.

What shipped was a pricing workstation where the merchandising team set rules and floors once, reviewed proposed changes hourly during the day, and accepted them in bulk or per SKU. Margin moved up while revenue grew, the team stopped running weekly pricing meetings, and the platform’s price refresh cycle dropped from weekly to two hours without expanding headcount.

The Problem

Weekly pricing meetings could not handle twelve thousand SKUs, and the data the team needed was scattered across three tools.

01Friction point

Competitive scrape data was collected daily and reviewed weekly, so competitor price moves caught the retailer off-guard for days.

02Friction point

Stockouts on top SKUs at full price represented direct lost margin that demand-aware pricing would have captured.

03Friction point

Markdown decisions on slow movers were rule-based and aggressive, often discounting margin that smaller markdowns would have preserved.

04Friction point

On-site demand signals existed in analytics but were not used in pricing, so view-to-cart and cart-abandon data went unrealized.

05Friction point

A three-person merchandising team could not run daily pricing on twelve thousand SKUs even with perfect data access.

Our Approach

How we structured the engagement

Built one engine that handled regular pricing and markdowns together, respecting human-set floors and brand rules.

  1. Phase 01Weeks 1-2

    Discovery

    Reviewed six months of pricing changes and outcomes by SKU category. Worked with merchandising on the floors, rules, and constraints that had to be preserved. Output: a per-SKU feature set, a constraint schema for floors and brand rules, and a refresh cadence of two hours plus a velocity-limit rule on per-day price moves.

  2. Phase 02Weeks 3-4

    Architecture

    Designed a pricing engine combining demand signals, competitive scrape data, and inventory levels under merchandising-set constraints. Built a price proposal generator with rationale per SKU and a bulk-review interface. Used Shopify API for price commits and a per-SKU change log for audit and rollback.

  3. Phase 03Weeks 5-9

    Build

    Shipped the feature pipeline first because the engine depended on clean inputs. Built the pricing engine and the proposal generator. Implemented the bulk-review interface with rationale visible per proposal and a one-click override. Wired the Shopify commit path with a per-SKU history log for audit and quick rollback if needed.

  4. Phase 04Weeks 10-12

    Launch

    Rolled out to a five-hundred-SKU pilot for three weeks with daily margin review, expanded to two thousand SKUs in week eleven once the proposal acceptance rate held above eighty percent, and reached full twelve-thousand-SKU coverage in week thirteen. Tuned velocity limits per category based on early surprise complaints from repeat customers.

System Architecture

What we built, component by component

  1. 01

    Feature pipeline

    Combines demand signals, competitive scrape data, and inventory levels into per-SKU feature vectors refreshed continuously.

  2. 02

    Constraint layer

    Enforces margin floors, brand-pricing rules, and velocity limits set by merchandising before any price proposal is generated.

  3. 03

    Pricing engine

    Combines demand, competition, and inventory into a price proposal per SKU on a two-hour refresh, with rationale per change.

  4. 04

    Markdown logic

    Unified into the pricing engine so slow movers and regular SKUs follow the same constraint and rationale framework.

  5. 05

    Review interface

    Bulk-review workstation for merchandising with rationale visible per proposal, one-click override, and history per SKU.

  6. 06

    Shopify connector

    Commits accepted prices to Shopify with a per-SKU history log for audit and one-click rollback if a change underperforms.

Data Flow

The feature pipeline refreshes per-SKU vectors continuously from demand, competitive, and inventory inputs. The pricing engine generates proposals on a two-hour cadence within constraint-layer floors and velocity rules. The review interface surfaces proposals with rationale, merchandising approves in bulk or per SKU, and the Shopify connector commits with audit history maintained for rollback.

Feature pipeline
Constraint layer
Pricing engine
Markdown logic
Review interface
Key Decisions

The trade-offs we made and why

Decision 01Lead trade-off

Unified markdown and regular pricing in one engine

Treating markdowns as a separate system would have produced inconsistent decisions on borderline SKUs and forced merchandising to keep two mental models. One engine with one constraint framework gave clean decisions across the SKU base and made the team’s mental model simpler.

Decision 02

Added velocity limits per category

Repeat customers noticed sudden price jumps and complained, even when the new price was justified. Velocity limits per category capped per-day moves and let prices reach their target over a couple of cycles instead of in one jump, which preserved customer experience without giving up the optimization.

Decision 03

Two-hour refresh, not real-time

Real-time repricing would have produced erratic customer experience and contributed nothing to margin given the demand-signal latency. Two-hour cycles matched the rate at which demand signals actually moved and gave merchandising a reviewable cadence without overwhelming the team.

Decision 04

Exposed rationale per proposed change

Bulk-approve without rationale would have made merchandising into rubber-stampers and erased their oversight. Showing rationale per change kept their judgment in the loop and gave them a way to spot bad model decisions before commit, which built trust faster than accuracy claims would have.

Outcomes

What changed for the client

margin uplift

Gross margin lift on the pilot SKU cohort across the first eight weeks after rollout completed, versus the prior pricing baseline.

monthly revenue

Month-over-month revenue growth sustained through the first full quarter of full-coverage operation across all SKUs.

refresh cycle

Replacement for the prior weekly cadence, with proposals generated every two hours and reviewed by merchandising in batches.

SKUs under management

Full SKU base under continuous pricing optimization at full rollout, up from the prior weekly manual coverage of a few hundred SKUs.

Tech Stack

The tools behind the system

Built with a deliberate stack chosen for production reliability and operational velocity.

4 componentsProduction-grade
PythonPandasAWSShopify API
What we’d carry forward

Lessons learned from the build

01Lesson

Unifying markdowns and regular pricing into one engine was the design choice that kept the system coherent. We sketched a two-engine approach in the first week and dropped it within a few days because the borderline cases would have been a constant source of friction. One framework, one constraint set, every SKU.

02Lesson

Velocity limits looked like a small feature and turned out to drive customer-experience outcomes meaningfully. Without them, the system would have produced margin gains and customer complaints in equal measure. We would build velocity limits into any consumer-facing pricing system from day one.

03Lesson

Rationale exposure was the trust feature merchandising needed. Once they could see why the engine proposed a change, they accepted proposals faster and overrode fewer of them. Hiding rationale would have produced the opposite cycle of skepticism and override fatigue.

Related Services

Similar delivery work usually starts in these service areas

If you are exploring a similar product, workflow, or implementation challenge, these are the service tracks that usually fit best.

Industry Context

Where this project sits in the bigger market picture

AI use cases for retail, commerce, personalization, pricing, and customer support.

Similar Project?

Build a result-driven AI product with a team that has shipped before

If you are exploring a similar product, workflow, or AI use case, we can help scope the right architecture, delivery model, and first milestone.

Start with clarity

Have an AI idea, messy workflow, or product vision? Let's make it buildable.

Bring the problem. We'll help shape the product, define the architecture, and show the fastest path to a serious first version.

  • A practical first roadmap in the discovery call

  • Architecture, timeline, and delivery options in plain English

  • Security, scalability, and reliability discussed upfront

Model registry

softus-rag-v4.2

live

187ms

Latency

128k

Context

$0.004

Cost / req

Evaluation suite

Faithfulness94%
Answer relevance97%
Citation accuracy99%

Deploy pipeline

prod / canary 25% — healthy