← All work
Production2026Purchasing automation

Supplier Price Sync

Keeps negotiated prices current across suppliers and accounts, and shows exactly what failed to update.

4suppliers on 4 different platforms
1self-contained adapter to add a supplier
Minutesper refresh, instead of hours of manual entry

The need

The same hardware is bought from several distributors, each with prices negotiated per account. Updating the comparison file meant logging in to every site, searching for every product and copying every price. Each site runs a different platform with no common API, and product references differ between them.

There was also a serious blind spot: when a product was not found, its old price stayed in place silently, so nobody knew what had failed to update.

A distributor's public panel catalogue. Each supplier has its own site, platform and references, and account prices sit behind a login.

What I owned

The whole system: the architecture, the supplier adapters, the matching logic, the reports and the packaging for unattended runs.

The solution

An orchestrator loops over accounts and suppliers, and writes each negotiated price in its own column. Everything that differs between suppliers is isolated in one adapter.

Input
Accounts per supplierProduct reference listConfirmed unavailable list
Orchestrator
Run loop and supplier registry
Adapters
WooCommerceShopwareOdooNetSuite
Output
Comparison workbookPrice change reportNot-found list
The system is generic. Only how to log in and search changes per supplier.

Key modules

Adapters

Each one implements login, resolve and close, from a real browser session for reCAPTCHA-protected sites to plain HTTP elsewhere.

Hybrid matching

Tries the supplier's own reference first as an exact shortcut, then falls back to the manufacturer reference, always matching the manufacturer's code and never the distributor's internal one.

Price checks

Detects pack quantities and flags prices as consistent, packaged or suspect, then highlights the cheapest supplier per product.

Reports

Each run produces a list of products not found and a comparison of price changes against the previous version.

How it was built

Failures are made visible by design. Products confirmed as not sold by a supplier appear in yellow, while real data gaps appear in red. Every run takes an automatic backup. An idempotent script installs the environment, runs the update and prints the report, so a monthly task can run it with no one watching.

Results

  • Negotiated prices refreshed in minutes instead of hours of manual entry.
  • The lowest price per product is visible immediately for purchasing decisions.
  • Full traceability through backups, change logs and a not-found list on every run.