Every supplier delivers their stock feed differently, and that's not changing. The question is whether your team handles all three shapes, or just the one that's convenient. The platform handles all three.
Hits the supplier's authenticated portal nightly, downloads the CSV, parses it, pushes inventory levels into Shopify. The catch: the supplier blocks VPS IP ranges. Solution covered below — runs from a residential IP.
Supplier shares a Google Sheet that they update manually. Hub polls the Sheet via the Google API on a schedule, diffs against last-known state, pushes only changed SKUs. Quiet when nothing changes.
Supplier emails an Excel file weekly. Staff drag it onto the dashboard. The hub parses every relevant sheet (the file has multiple tabs), maps supplier SKUs to your SKUs, and pushes the diff. One click, one minute.
Plenty of suppliers protect their distributor portals with Cloudflare. Most of them configure it to block known VPS provider IP ranges (DigitalOcean, AWS, Google Cloud, Linode — all flagged by default). Your hosted automation script gets a 403 every time.
The fix isn't proxies — those get flagged faster. The fix is to run the inventory sync from the residential IP you already have: the warehouse PC. Windows Task Scheduler kicks off the Python automation at 06:00 daily. The supplier sees a request from an Australian residential ISP, treats it like any other browser session, returns the CSV.
This is the operational reason the whole platform is local-first. Cloud-hosting the automations would mean fighting Cloudflare every night — and losing.
Each feed sync writes a status JSON when it finishes — current run state, summary counts, last-success timestamp, log path. The dashboard renders one card per feed with traffic-light status.
If a supplier's CSV format changes overnight, the sync logs the parse error and the card turns red. Nobody finds out two days later because a customer complained.
Re-running is always safe. The "manual upload" pattern in particular is designed to be drop-the-file-twice-by-accident-tolerant: identical uploads produce identical Shopify writes, which Shopify accepts as no-ops.
Build it once per supplier; reuse the platform's auth, logging, and dashboard. Adding your fourth, fifth, and sixth supplier is a Python module each — not a project each.
Every page on this list is drawn from the same Raw Blend build — different problems, same operating model.
The headline win — pull labels from ShipStation, write the tracking number onto the matching QB invoice, hourly, with idempotency.
One credential surface, one dashboard, one set of automations covering every store. The seventh store is a 30-minute job.
How to migrate brittle workflows to a custom Python platform without losing the speed advantage you bought no-code for.
OAuth refresh, sparse updates, the PrivateNote-not-queryable gotcha, and how to query invoices reliably at scale.
One URL to bookmark, one-click triggers, one-click log access, zero recurring SaaS. The kind of dashboard staff actually use.
Tell us what your suppliers send and how. CSV, Sheets, Excel, hand-typed — we've shipped against all of them. Discovery is free and we'll quote a specific feed in 48 hours.
Discovery is free · Quote in 48 hours · No retainer required