Dimensions and features already sit on a quote line. Turning them into geometry needs an archetype layout and a registry keyed by code, not a modelling pipeline.
Converting forty key columns to a single id format, three of them had to be reverted, because what they held was a handle, a display name and a mixed bag.
The clients hardcoded language, timezone and currency everywhere. The only endpoint holding the real values needed a permission a sales rep never gets.
Auditors ask why invoice 41 is missing. A database sequence will make holes, and a number allocated at draft becomes a hole the moment the draft is discarded.
The first model was a person, a certificate and an expiry date. Then came a register of 184 obligations across 15 domains, almost none of them certificates.
Two suites invited members and never removed them. Nineteen accumulated, the seat limit tripped, and unrelated suites started failing on a rule they never touched.
A credential row carried both an expiry date and a status label. Only the date changes meaning as time passes, so every query had to distrust the label.
A field-force product where a rep could not take an order on the phone. The API was complete, the module was marked done, and the flow did not exist on any client.
Statutory real-time invoicing turns each sale into a distributed transaction with a regulator. The first design put the network call inside the sale transaction.
A draft function set a row's identifier after inserting it. The table had UPDATE revoked, so the schema would have rejected code that every review had passed.
Every pricing rule assumed inches. The customer wanted to enter millimetres. Converting at the API boundary was the only change that could not corrupt old quotes.
A comment said the numbering scheme avoided race conditions. The loop underneath it retried on duplicate key ten times, which is what you write when it does not.
A reorder level of zero means alert me when it runs out. No reorder level means never alert me. The empty string coerces to zero and the distinction is gone.
A phone out of coverage for a day burned its retry budget on failed connections and parked a valid order as rejected. That is the loss a queue prevents.
What auditing a fabricator's quoting workbook revealed about how bespoke pricing really works, and which parts of it a person was silently holding together.
The output document is a specification. Reading real ones confirmed eight pending requests, produced several more, and settled two arguments about tax.
Knowing what to charge is not knowing whether the job is worth taking. Two evaluations through the same rules give per-feature margin without a second engine.
One building held a press, a store and a shop. A type column forces a choice; a capability set does not, and the check reading it used the wrong operator.
Deleting a product left 211 orphaned price entries and 104 orphaned variants. Fixing the product path missed the variant path, which orphaned exactly the same rows.
Keeping the full evaluation trace on the quote line paid for itself twice — in explaining old quotes, and in a bill of materials nobody had planned for.
The received quantity could not exceed the ordered quantity. That is a policy, not a fact, and the warehouse hit it the first time a supplier sent a full pallet.
A helper decided a stored value was a fraction if it was between zero and one. The one organisation that most needed the alarm got a perfect score instead.
Four places asked "is this about to run out" and four expressions answered. Two excluded today, one included it, and one forgot to exclude revoked records.
The CAD files looked like the authoritative source for dimensions and geometry. They were neither. What they were useful for was checking the formulas.
A completeness dashboard counted every variant of every feature as required. The import was fine; the counting rule was wrong, and it hid the real gaps.
Offline delivery capture was a fiction, because the screen that records it could not be opened without a connection. The queue worked. Nothing could reach it.
Rows written in one transaction share an update time to the microsecond. A greater-than cursor drops them and a greater-or-equal cursor repeats them forever.
Three fallbacks in one expression, ending in a statutory rate typed into a route handler. A zero-rated sale skipped the first two and got taxed at the third.
Seventeen layout tests passed against a stylesheet that made the assertion impossible to fail. Fifty-one screen tests passed on a portal that was entirely read-only.
Hand-written audit calls get forgotten, and a forgotten one makes the whole log untrustworthy. Capture centrally, label by registry, and mine the unlabelled.
A salesperson pitching a campaign that starts next quarter does not care what is free this morning. Availability needs a date argument, not a boolean column.
A test proved expired discounts still applied. The test was wrong, the bug was real, and both came from treating a business date as an instant in time.
A proposal is a slide deck and a cost sheet. Generating both from the same records that produce the booking removes an afternoon of retyping per pitch.
Who is this leg assigned to? Nine places answered it independently. Eighty-one legs got an arbitrary answer and eighteen invented a driver who was not there.
The data was a chain and the interface was a set of dead ends. No record linked forward to the one it produced, so every step meant going back to a menu.
Every invoice had to reference a booking. The business raised invoices without bookings all the time. The constraint had encoded an assumption nobody checked.
An application calling its own API by public hostname consumed two workers per request. At five workers, five simultaneous visitors deadlocked it permanently.
A counter charge and an upstream re-price added the same 1,593 rupees an hour apart. Both stood, and the ledger held back the customer's deposit for it.