Case file · [Manufacturing]

Built the one integration. Not the platform.

October 30, 2025 · Light manufacturing · ~40 on staff · Anonymised, the judgment is exactly as it ran
① What they came with

A failed ERP migration, eighty thousand already spent, and an operations floor still bleeding daily.

A family-owned light manufacturer, second generation, around forty people. Four months earlier, a consulting firm had walked the board through a full migration off their twelve-year-old on-prem ERP onto a modern cloud platform. The proposal was approved at roughly two hundred thousand over an eight-to-twelve-month schedule. By the time we were called in, the project had quietly died: the vendor had spent the first four months on discovery deliverables nobody read, the cutover plan kept slipping, the internal champion had left for a new role, and the project sponsor had stopped responding to email. The bill at that point was somewhere north of eighty thousand for documents and meetings. Nothing had shipped. Meanwhile the operational pain that had triggered the migration was still there, and worse, because the staff had spent four months being told the new system would fix it. The CFO wanted a working answer in a quarter, not another platform conversation. The operations manager wanted, in her exact words, “anything that ships.”

② The answer, first

Don't restart the platform play. Build the single piece of integration that closes the actual gap.

We opened the second hour with the conclusion. The migration had stalled because the migration was the wrong project. The pain that genuinely cost the business money was a single piece of double-entry between the production-floor system and the accounting tool: every completed work order had to be re-keyed by hand into QuickBooks within twenty-four hours so payroll and customer invoicing could fire on time. The job had grown to about twelve hours a week of a part-time bookkeeper's attention and produced a regular trickle of correction loops when entries didn't reconcile. None of the platform's headline features, cloud, AI-assisted quoting, supplier portals, touched that gap. A small custom integration did. So we proposed to build the integration ourselves, fixed-price, with a named delivery date, and walk away from the platform decision until the next budget cycle when the curve and the firm's appetite would both look different.

③ The working, shown

Sized small, priced fixed, and on the same page as the abandoned migration so the math was visible.

We spent half a day on the floor with the operations manager and the bookkeeper. We counted the actual double-entries that week (sixty-three), categorised them (forty-one were clean one-for-ones, fifteen needed minor mapping decisions, seven were genuine exceptions that required a human), and instrumented the time spent per category (one minute, four minutes, fifteen minutes). The math fell out: about twelve weekly hours collapsed to about ninety minutes of exception review once the clean and mappable cases moved through code. We scoped the build to two pieces: a webhook from the ERP into a small Cloudflare Worker that wrote to QuickBooks via its API, and a small internal web screen for the exceptions queue, on the same domain as the rest of their staff tooling. No new database, no installation, no app store, no native footprint. Two weeks of build, one week of pair-running against the existing manual process, one week of cutover. Fixed price: thirty-two thousand. We put the two options on the same page: Path A, the stalled platform play, another year, another two hundred thousand on top of the eighty already spent, real cutover risk to a running factory; Path B, this integration, six weeks, thirty-two thousand, no production risk, and ninety percent of the cost burden gone the day the cutover closed. The decision did not need a follow-up meeting.

④ The cut

We took the integration. We declined the platform, and the door to come back as the new vendor.

We signed the build, fixed-price, with the delivery date in the contract. We declined the obvious follow-on engagement: rerunning the platform-migration play with us as the new vendor in eighteen months. That work would have been five times the integration's contract. The honest call was that nobody knew what the AI-and-ERP curve would look like by then; quoting it now would be selling certainty we did not have. We named the conditions under which we would consider it (a clear regulatory or audit requirement that the existing ERP couldn't meet; a sustained period where multiple core processes, not one, were genuinely broken at the platform layer) and said that until those conditions arrived, the existing ERP was a perfectly working tool that the integration would extend by another five years. We shipped the integration on day thirty-eight of forty-two. The exceptions queue at week six had twelve entries a week, not twelve hours; the bookkeeper got Wednesdays back; the late-shipment rate halved by the end of the quarter. The platform decision was deferred. The next time someone walks into the founder's office with a proposal to replace what they own, the integration we built will be sitting in the middle of the slide deck as the reason the rebuild already paid for itself.

⑤ Signed

A named person signed the build contract, with the integration scope and delivery date in writing. Not a discovery phase, not a phased advisory, not a vague “let's see how it goes.” The signature is the product: the no on the platform meant something because the yes on the integration was specific, dated, and small enough to deliver. The bookkeeper, asked at the six-month review whether the call had been right, sent a one-line reply. The CFO has forwarded that reply to every vendor who has tried since.

← The full record
Sector and figures are generalised to protect the client; what we built and what we declined is unchanged. The record will include the work we sent away, and the small piece we shipped that made the rest unnecessary.