Back to Portfolio Engagement Case Study

Month-end close: 3 days to 4 hours.

The client: a $15M D2C home-goods brand. Shopify, Amazon, 12 wholesale accounts, one 3PL, and six data sources that never agreed. Every month, three days disappeared into reconciling them.

Three days, every month

Day 1Pull six exports. Fix date ranges. Re-key wholesale invoices. 38 copy-paste steps into the master workbook. Something breaks.
Day 2Reconciliation disputes. Shopify says shipped, the 3PL says not left, Amazon settlements match nothing. The monthly "net sales" argument.
Day 3Rebuild what Day 2 broke. Publish the pack. At least one number changes after publication. "final final v3.xlsx".

WHAT THAT COSTS, MEASURED

6sources that never agreed: Shopify, Amazon, 3PL, freight, payouts, returns log
38manual copy-paste steps per close
15 hrsa week of the same consolidation motion between closes
3versions of "net sales", depending on who built the tab

EXHIBIT 01 · THE CLOSE, HOUR BY HOUR

The old close as three day-columns of hour blocks, pain points tagged FROM THE ENGAGEMENT EXHIBITOpen full exhibit →

The full document sets the three old days against the new four-hour checklist, and names how each of the six sources disagreed.

Not an effort problem. A definitions problem.

The team was not slow. They were reconciling six systems that each spoke a different language, through formulas nobody fully trusted, toward metrics nobody had agreed on.

The fix was 14 definitions argued once and signed by the founder and the CFO, then encoded in a pipeline that never sleeps.

The instinct was to hire a controller. A controller closes books. This was operating numbers nobody agreed on: the definitions workshop plus the pipeline cost less than a controller's first quarter.

Definitions first, then plumbing

Four parts. The accounting ledger stays untouched; this is the operating layer above it.

PART 01 · THE METRIC DEFINITIONS LAYER

Full system design →

The argument that ended the metric wars

A two-hour workshop. Fourteen contested metrics argued once, written down, signed by the founder and the CFO, and encoded as SQL views. Samples:

net_salesGross sales minus refunds, discounts, and marketplace fees. One number, all three channels.
true_freight_per_orderAll freight cost, inbound allocation included, divided by shipped orders. No more allocation by guess.
sellable_inventoryOn-hand minus damaged, reserved, and aged-out. What you can actually promise.

PART 02 · THE NIGHTLY PIPELINE

Full system design →

Six sources in, one truth out, every night

A small ingest service, built code-first, pulls all six sources into a PostgreSQL warehouse nightly. The 14 definitions live as views on top. AI-assisted development shipped it in weeks; code is easier to deploy, version, and test. Clients who want a visual tool get the same design on n8n.

Nightlyall six sources ingested while everyone sleeps
7:00amdaily ops dashboard, fresh every morning
Wk 1-3build; first assisted close in week 4
0changes to the accounting ledger. It stays the ledger

PART 03 · THE RECONCILIATION AGENT

Full system design →

An agent that flags. A human who decides.

Nightly cross-source reconciliation, human-reviewed

TriggerNightly source loads complete.
ActionCross-source checks run; a discrepancy note is drafted for every mismatch.
GuardrailNothing auto-corrects. Ever. Flags only.
Human roleThe CFO reviews flags in about 10 minutes a day.
Failure modeFalse-positive flags after a source changes its export format.
RollbackFlag rules pause per source; that feed reconciles manually until fixed.

PART 04 · THE NEW CLOSE

Open the close pack →

Four hours, on day one of the month

  1. 7:00am. The close pack has drafted itself overnight from the same views.
  2. Two hours. CFO reviews the month's reconciliation flags and annotates.
  3. One hour. Founder and CFO walk the pack. Decisions get made on numbers both trust.
  4. One hour. Published with commentary. No "final final v3".

The pack itself: six pages: summary, channel table, inventory position, fulfillment ops, reconciliation appendix, and a decisions page where three calls get made with the numbers that back them. Read the sample pack →

The close, 60 days apart

MetricBeforeAfter
Close duration3 days4 hours, day one
Weekly consolidation labor15 hoursAbout 2 hours of review
Manual steps per close380, replaced by a 12-point review checklist
Versions of "net sales"31, signed
Number freshness at decision timeAbout 3 weeks staleDaily, 7:00am
Post-publication correctionsEvery monthNone in the first three closes

How stale are the numbers you decide with?

Builds like this follow a diagnostic. Send 3 to 5 recent examples where the numbers were late, wrong, or argued about, and I'll tell you whether the audit is the right fit. dan@diazovate.com

Book the Audit Starts at $2,500, scoped on the intro call.