Two days of monthly copy-paste, replaced by a command that shows its work first
A costing workbook and two product sales monitoring sheets that never agreed, reconciled automatically by barcode with a full audit log of every write.
Built for: A consumer products business selling across multiple retail channels
The problem
Product costing lived in one Excel workbook that finance treated as the source of truth. Sales monitoring lived in two separate Google Sheets, one per brand. Every month someone had to make the second reflect the first — by hand, product by product.
The two sides did not share a key. Products were identified by barcode in one place, by Child ASIN in another, and by FBA SKU in a third, with none of the three complete. Columns moved around whenever someone restyled a sheet, so any positional approach broke within a month. The result was two days of reconciliation, and a persistent low-grade doubt about whether the margin numbers anyone was quoting were current.
How it was solved
Products are resolved fresh on every run by barcode, falling back to Child ASIN, then to FBA SKU. Nothing is cached between runs, so a product that gains a barcode next month simply matches on the better key without anyone reconfiguring anything.
Columns are located by reading their header text rather than by position. Either file can be reordered, extended or restyled freely and the pipeline keeps working — which matters enormously in practice, because the people using these sheets rearrange them constantly and should not have to think about a script when they do.
Making it safe enough to trust
Only the current month’s tab is ever writable. Closed months are a financial record, and the code has no path to reach them — that is enforced by the structure rather than by a rule someone could misconfigure.
Three read-only commands answer the questions people actually have: is this up to date, what is currently different, and what exactly would change if I ran it. The apply step refuses to run without explicit confirmation, refuses entirely if anything is blocking, re-checks every row immediately before writing, and logs a snapshot of every cell’s prior value.
The practical effect is that running it stopped being a decision. Nobody has to brace before pressing the button, because the button shows its work first and everything it does is reversible from the log.
Why this is on a page about websites and chatbots
Because it is the clearest proof of the thing that actually matters: software people trust enough to leave running. The subject happens to be spreadsheets, but the design decisions — show the work before acting, make destructive paths structurally unreachable, log every change with its prior value — are the same ones behind every chatbot and marketing agent built here.
Anyone can claim they build careful software. This is what it looks like in practice.
What was built
- Multi-key product resolution: barcode, then Child ASIN, then FBA SKU
- Columns found by header text — files can be reordered without recalibration
- Read-only status, diff and preview commands before any write
- Closed months structurally unreachable, not merely protected by convention
- Every written cell logged with its prior value
- Apply refuses to run without explicit confirmation or if anything is blocking
Not sure which piece to automate first?
Book a free 30-minute call. I will look at where your time actually goes and tell you honestly whether automation is worth it — including when it is not.