Skip to content
bigrobot.
B2B distribution · Industrial · 2026

Industrial components distributor

Orders moved out of inboxes and fax machines into a store that knows every customer's price list — 61% of order lines now go through with no sales rep involved.

Scope of work
Custom e-commerceWeb & mobile appsSEO
Stack
Next.jsTypeScriptPostgreSQLComarch ERP XLRabbitMQAlgoliaDocker
61%
of order lines self-service
22 → 6 min
order processing time
+18%
average order value
34,000
SKUs synced from the ERP

Where we started

The company served 9,200 active industrial customers — maintenance departments, production plants, workshops — and took roughly 640 orders a day by email, phone and, for a dozen or so accounts, fax. Every order was re-keyed by hand into Comarch ERP XL, with someone checking availability, the customer's individual discount and their credit limit along the way. A measurement across 400 orders gave an average of 22 minutes per order and 2.3% of lines with the wrong part number, which meant returns, credit notes and follow-up calls. Twelve people in customer service were effectively transcribing data rather than selling.

An online store had existed since 2016 and was treated internally as a misunderstanding. It listed 1,200 of 34,000 SKUs, showed neither prices nor stock, and after login led to a quote request form — the same email, by a longer route. Customers ordered from PDF price lists refreshed once a quarter, so sales reps regularly had to explain the gap between the list price and the system price. The discount policy did the rest: 480 discount tables mapped to customers and product groups, plus individually negotiated contract prices for the 140 largest accounts.

Product data was the main reason the two previous attempts at launching a store had stalled. In the ERP a record looked like BRG.BALL.6205 2RS SKF — name, symbol and some attributes glued into one text field, with no structure, no images and no datasheets. Around 40% of records had duplicates created by different buyers over 20 years of trading, some carrying separate stock figures. Nobody in the company wanted to own the cleanup, because changing a part number ripples into sales history and inventory accounting.

What we did

  1. 01

    A PIM layer between the ERP and the store

    We left the ERP records untouched and instead stood up a separate product database that pulls raw records and enriches them with structure without changing anything on the accounting side. A parser split the text fields into attributes — type, bore, outer diameter, width, sealing, manufacturer — with about 78% automatic accuracy, and the product team filled in the rest by hand. Duplicates were merged into parent records visible to customers while keeping separate part numbers in the ERP, which resolved the cleanup standoff without touching sales history. In the first phase we enriched the 12,400 best-selling records covering 87% of turnover, and published the remaining 21,600 as searchable by symbol only, without images.

  2. 02

    Comarch ERP XL integration through a queue

    The store never queries the ERP directly, because at 640 orders a day with a spike at eight in the morning the production database could not take it. Stock levels arrive incrementally every 5 minutes, prices and credit limits are computed on demand with a short session-scoped cache, and orders travel through RabbitMQ with delivery guarantees and a status the customer can see. What lands in the ERP is a complete document with correct part numbers, so customer service approves it instead of typing it. The biggest delay in the project — four months over plan — was the ERP interface: some operations had to be closed through stored procedures written jointly with Comarch's implementation partner, because the standard API did not handle special contract pricing.

  3. 03

    Customer-specific pricing and trade credit in the interface

    Once logged in, a customer sees their own net price — the same one a sales rep would quote — rather than a list price with a note about discounts to be agreed. The pricing engine reproduces the ERP logic: contract price first, then the discount table for the product group, then the customer's general discount, with a hard minimum margin floor that blocks below-cost sales on unusual combinations. The credit limit and its utilisation sit in the header, and exceeding the limit does not block the cart — it routes the order to finance for approval with an email notification. That single decision, queueing instead of blocking, saved roughly EUR 80,000 of orders in the first half year that would previously never have been placed.

  4. 04

    A client portal, not just a checkout

    Alongside the catalogue, customers got order history with one-click reordering, a quick order pad that accepts part numbers pasted from Excel, and CSV import for purchasing departments working from their own lists. The portal also holds invoices, delivery notes, tracking numbers and warranty claims with attachments — the full set of things people used to phone customer service about. Company accounts have roles: a buyer can submit a cart for approval and a manager signs it off, which mirrors the purchasing procedure most larger customers already follow. Reordering now accounts for 44% of all portal orders and was by a wide margin the cheapest thing we built in the entire project.

  5. 05

    Migrating customers through reps, not through a mailshot

    We started with the 300 largest accounts, which sales reps visited in person with the account already set up, purchase lists pre-loaded and an hour of training on site. Commission was restructured so a portal order pays one percentage point more than an order taken by email — without that the project would have stalled, because to a rep the portal looks like a threat. Later customer groups went live in waves, with a clear message that the PDF price list would stop being updated on a specific date. The smallest accounts, ordering two or three times a year, mostly did not convert and still order by email; we deliberately left that channel open, because shutting it down costs more than it saves.

Results after 9 months

Nine months after launch, 61% of order lines are created without customer service involvement, and average order processing time fell from 22 to 6 minutes, counting portal orders and the ones still arriving by email together. Lines with an incorrect part number dropped from 2.3% to 0.4%, and almost all of the remainder come from phone orders. None of the twelve customer service staff were made redundant — six moved into technical support and product selection advice, which was the condition on which the board approved the project.

Average order value rose 18%, mostly because customers now see the full 34,000 SKUs instead of a few hundred lines from a PDF, and buy things they previously sourced from another supplier. Twenty-three percent of orders are placed outside office hours, an argument nobody inside the company had considered and one of the stronger ones in hindsight. What we did not achieve was enriching the catalogue as quickly as planned: 21,600 records still have no images or datasheets, and it shows in search, where organic traffic to thin categories grows noticeably slower than to the enriched ones.

  • 61% of order lines placed self-service after 9 months
  • Order processing time: 22 → 6 minutes
  • Average order value +18%
  • Incorrect part numbers on order lines: 2.3% → 0.4%
  • 23% of orders placed outside office hours
  • 34,000 SKUs in the catalogue against 1,200 in the old store
The two previous attempts at a store died because nobody would touch the data in the ERP. This time we simply did not have to. The longest part was still convincing our own sales reps that the portal was not taking their commission away.
Grzegorz Wiśniewski · Board Member, Sales

It starts with an audit

Tell us in two sentences what you want to achieve. We reply within one business day.