Work Integration & migration
Supplier price sync
A desktop app that pulls prices and stock from eight suppliers, re-prices them, and bulk-updates the store and its marketplace feeds.
- Client
- Informatica
- My role
- Sole developer · employee
- Period
- 2024 — present
| Supplier sources | 8 | |
|---|---|---|
| Sync path | suppliers → re-price → Shopify bulk API | |
| Feeds regenerated | Rozetka + Google Merchant | |
Problem
The catalogue's prices and availability come from eight suppliers, each in a different format — some an API, some a Google Sheet, some only a web page behind a login. Keeping the store current by hand was a daily few hours and still always slightly stale.
Constraints
Runs on the store operator's own machine, against the live store. A bad bulk update is expensive, so a run has to be reviewable before anything is pushed.
Hard part
Reconciling eight supplier catalogues against the store's products when SKUs and naming don't line up between any two of them.
Stack
- Electron
- React
- TypeScript
- GraphQL Admin API (bulk operations)
- Puppeteer
- Google Sheets API
The run
Each supplier has its own adapter — a direct API call, a Google Sheets read, or a Puppeteer session against a login-gated page — behind one interface. A run fetches the store’s products, pulls each supplier’s current data, merges them, and applies the pricing rules: margins per category, an exchange-rate setting, rounding. The result is written out as an Excel sheet and a JSONL file for the operator to look at before it goes anywhere.
Pushing it back
Approved changes go to Shopify through GraphQL bulk operations rather than per-product calls, which keeps a full-catalogue update inside the rate limits, and the same merged data regenerates the Rozetka and Google Merchant feeds so the marketplace listings don’t lag the store.
Why it’s a desktop app
It’s an operator tool, not a store feature: it runs occasionally, needs a folder of credentials, produces files to review, and belongs on the machine of the person who owns the decision. A hosted service would have been more infrastructure for something one person runs a few times a week.