Let's talk
operations

Who quotes in a fabrication shop? Often the owner

We built a quoting tool for fabricators from a list that looked like research. Two rows described the wrong company, and the list taught us who really quotes.

· · updated

A laptop under a desk lamp in a fabrication shop office showing the quotations list in Sazinga Quote.

If you run a fabrication shop, the person who prices a job is very often you, or your son. You do it from a phone as much as from a desk, between other things, and you have no patience for a screen that asks you to configure something before it will give you a price.

That is an easy thing to say and a costly one to get wrong. A quoting tool built for a dedicated estimator at a desk, with a dozen setup screens, looks fine in a demonstration and then sits unused in the shop. We wanted to know who quotes before we built for them, and the first attempt at finding out nearly pointed us at a customer who does not exist.

What was actually going on

The starting point was a shortlist of fabrication businesses collected by a scraper. Each row had a name, a phone number and a website. It also had several columns that were the real point of the exercise: what the business probably struggles with, a score for how good a fit it was, and a suggested opening pitch. Those last three were written by an AI model from the scraped pages.

Two rows were wrong in a way that made the whole file suspect. On one, the scraped website text belonged to a different company on the list, so every column written from it described somebody else’s business. On another, the “website” was a page on a business directory, not the firm’s own site, so the pain points were inferred from a directory template.

Neither problem shows in a spreadsheet. Both rows were complete, with sensible-looking text in every cell. If the wrong company is described in confident full sentences, nothing on the screen warns you.

What we changed

We did not just delete the bad rows. We sorted every column into one of two kinds and applied that to the whole file.

Observed columns came from somewhere with a trail: the name, the phone number, what the firm’s own site says it makes, whether the site looks recent or a decade old. Generated columns were the pain points, the fit scores and the pitches. Those were relabelled as unverified guesses and kept out of every decision. Each row got a flag saying what about it could be trusted, and the two bad rows were dropped with a written reason rather than quietly removed.

The generated columns were then meant to be replaced by telephone calls, built around one rule. The product is not mentioned until well into the conversation. The call opens with a single question, “walk me through the last quotation you made”, and then silence, with no suggested answers. The thing recorded from each call is whether the person described the problem unprompted or only agreed with it once prompted. Agreement after a prompt is worth nothing, because everybody politely agrees that the thing you just described sounds annoying.

The plan also has a written failure condition. If most of these businesses quote in ten minutes from a rule of thumb and feel no pain, the premise is wrong, and no product work repairs that.

With the guesses set aside, the observed columns did say something useful. Size does not predict how modern a firm’s software is. One of the larger, long-established businesses on the list, decades old with more than a hundred staff and institutional customers, had a website that was an unmodified agency template. Another, founded in the seventies, had a site that had plainly not been touched in years. The most current site in the set belonged to one of the smaller shops.

That is checkable from public information, and it contradicts the idea that a big manufacturer must have big software. It pointed the product at the owner or the owner’s son, working from a phone. It lines up with what our quoting product ended up doing: material pickers hidden unless somebody asks for them, dimension fields shown only where an entry is genuinely needed, fixed lists instead of free-text units, and reordering controls that work on a phone.

What it did not fix

The list is still a list of guesses wherever it was not checked. Nothing in this article reports what the phone calls found, and the observed facts are about a sample of websites, not about every fabricator. Separating observed from generated does not make the generated columns true. It only stops them being mistaken for facts.

The pattern, for anyone buying or building from a list like this

Ask of every column in a prospect list, or a market study, or an AI-written summary, where the value came from. If the honest answer is “a model inferred it”, it is a guess, and a score built from guesses and sorted from highest to lowest is a confident ordering of guesses.

Then check the guesses directly, without mentioning what you sell, and decide in advance what answer would tell you that you are wrong. Ten conversations can say no to you. An enrichment column cannot.

Where this ends up

The tool those conversations were meant to inform is Sazinga Quote, built so that the person pricing a job can do it from a phone without being asked to set anything up first.

This came out of building Sazinga Quote

The pricing formula, out of the spreadsheet and under control. The problem above is one we met while building it, and what we did about it is in the product.

If you run something like this, there is one thing you can do without a call: send one quotation you have already sent a customer.