build log · 2026 · 4 min

Automating the boring parts on purpose

a script doesn't complain about doing the same thing every Monday.

EEvery week, someone at MyRain Sprinkler Systems opened a supplier price list, compared it line by line against what was live on the store, and updated a few hundred SKUs by hand. It worked. It also ate an afternoon that could've gone to literally anything else.

So I wrote a script that does the boring part instead: downloads the supplier's price list, parses about a thousand SKUs with openpyxl, diffs them against the live Shopify catalog, and pushes the changes through Shopify's GraphQL API. It runs on a schedule via GitHub Actions and doesn't need me to be awake for any of it.

The best automation isn't clever. It's just the thing you'd do by hand, minus the part where it's you.

The part I underestimated was the audit log. Nobody asks for it until the one week a price looks wrong, and then everyone wants to know exactly what changed and why. Now every run writes a report (what updated, what didn't, what errored), so the answer is a file, not a memory.

$0 monthly hosting, about 1,000 SKUs updated per run, and no more spreadsheet comparisons eating my Mondays. I'm aware this makes me sound like I'm selling something. I'm not. I just really don't want to do that by hand again.

Mobina Tooranisama

written while a GitHub Action ran in the background, as intended