Carrefour Pricing System
Internal pricing control and management system for Carrefour Spain, built with Sencha JS. Enabled real-time price updates, audit trails, and multi-store management for the retail chain's pricing operations.
Stack
Retail pricing at scale is an operational problem most people don’t think about until they’re inside it. Carrefour Spain operates hundreds of stores with tens of thousands of SKUs, promotional campaigns that change weekly, and regulatory requirements that differ by product category. The pricing system is the operational layer that sits between headquarters’ commercial decisions and the point-of-sale terminals in every store.
This project was a freelance engagement to build and extend Carrefour’s internal pricing control and management system — the tool used by commercial and pricing teams to manage price changes across the store network.
The Tool and Its Users
The users of this system are not developers or analysts — they’re commercial coordinators and pricing managers running time-sensitive operations. A promotional price change might need to hit 200 stores simultaneously at a precise time. A regulatory pricing cap applies to certain product categories in certain regions but not others. A supplier contract change ripples through hundreds of linked SKUs. The interface had to make these operations precise without requiring technical knowledge.
What Was Built
The system was built with Sencha JS (ExtJS), the enterprise frontend standard at the time for internal tooling of this complexity. ExtJS’s grid and form components are well-suited to data-dense operational interfaces: configurable columns, inline editing, multi-row selection, and server-side pagination all work out of the box, which mattered given the volume of SKU data involved.
The core modules covered: bulk price update workflows (upload a CSV, preview changes before commit, apply with rollback capability), multi-store assignment (which stores receive which price, with overrides for regional differences), promotional pricing with activation and deactivation scheduling, and audit trails that record who changed what, when, and from which value to which.
The audit trail was a hard requirement: Spanish retail regulation requires pricing change documentation. The system logs every write operation with a timestamp, user ID, before/after values, and the store scope of the change.
Integration with POS Infrastructure
Price changes don’t live only in the management system — they have to propagate to the point-of-sale terminals in each store. The system integrates with Carrefour’s existing POS data distribution infrastructure via REST API calls that trigger store synchronization after a pricing update is committed.
Stack Note
Sencha JS / ExtJS is not a common choice today, and for most new projects I wouldn’t recommend it. For internal tooling in this enterprise context, it was the right fit: it handled the data density requirements, the browser compatibility requirements of the period, and the form complexity without extensive custom component work. The right tool for the context.