All projects

Back-office tool

One place for data that lived in four

Bexio for the books, an Excel sheet for the price tiers, a folder per product on someone's desktop, and Shopify for the shop. The same wine existed in all four, and keeping them in step was a manual job nobody owned. I built a desktop tool that holds the product data once, syncs it to Bexio and Shopify, and says out loud when the three disagree.
Role
Design & development
Period
2026 – today
Stack
Python, SQLite, Shopify Admin API, Bexio API
Built with
Claude Code, almost end to end

Four systems, one wine

Nothing here was broken on its own. The problem was the seams: a price corrected in Excel did not reach Shopify, a wine renamed in Shopify no longer matched its Bexio entry, and the PDF fact sheet from the producer sat in a folder that only one person knew the path to. Every new wine meant doing the same work four times and hoping the four results agreed.

Before
Four islands, synced by hand
Back-office tool
The product record lives here
Bexio
Bookkeeping, article numbersImport & export
Shopify
The shopAdmin API, both directions
Excel
Price tiers per SKU
Media store
960 files, one convention
Desktop folders
Fact sheets, images
PDF export
Generated on demand
…kept in step by hand
Data integrity

What it found on day one

The first job of the tool was not syncing anything — it was looking. Pointing one consistent view at data that had been maintained in four places turned up a backlog nobody had been able to see before. The dashboard still leads with it, because the list is how the work gets prioritised.

0
Products
0
in the Bexio catalogue
0
in Shopify
0
Producers
0
Media files
0.0 GB
Total size
The tool's dashboard, with catalogue counters and a queue of data problems
The product record

One record, two systems

Every product screen shows both sides at once: the Bexio name next to the Shopify name, and a padlock on each field that is owned by Shopify. The sidebar keeps the link state, which direction the last sync ran, a version count and how many fields currently differ — so "these two disagree" is a thing you can see rather than something you find out weeks later.

  • Bexio and Shopify names side by side, with per-field ownership
  • Metafields the shop reads — producer, region, wine type, vintage, lab values — edited in one form
  • Price tiers on one card: retail, restaurant, wholesale
  • Last sync, direction, version count, and a field-level diff against the live shop
  • New products push straight to Shopify over the Admin API
A product record showing Bexio and Shopify fields side by side
Vall'doAido Backoffice — Produkte
The product list, filterable by producer, type, Bexio and Shopify state
249 products in one list, filterable by producer, type and sync state — and exportable as a catalogue from the same screen.
PDF export

The book that finishes itself

In 2023 I started a printed catalogue in InDesign: one page per wine, laid out by hand. It was never finished — new wines arrived faster than pages did. The same layout is now a PDF export. Pick a selection or take everything, choose which price tier to print, and the book builds in minutes: cover, contents, a divider per producer, then a fact sheet per product using the same icons the print catalogue used.

Generated catalogue — Cover
Cover
Generated catalogue — Contents
Contents
Generated catalogue — Producer divider
Producer divider
Generated catalogue — Fact sheet
Fact sheet

Three years, one fact sheet: typed by hand in InDesign, then turned into a schema for the shop, and now generated from a database that keeps three systems honest.