Sazinga
From the quotation to the cutting list, without rebuilding the job
Your quotation already knows what the job consumes. Turning that into a bill of materials and a nested cutting list without rebuilding it by hand.
Sazinga
Your quotation already knows what the job consumes. Turning that into a bill of materials and a nested cutting list without rebuilding it by hand.
Sazinga
Where transport and installation sit relative to GST on a fabrication quotation, CGST and SGST versus IGST, and the ordering that changes the total.
Sazinga
Cost a six-foot stainless work table step by step — sheet weight, tube, hardware, labour and margin — with every figure shown so you can check it against yours.
Sazinga
Margin on selling and markup on cost are not the same twenty per cent. The arithmetic, the conversion table, and what the confusion costs over a year.
Sazinga
SS 202 against 304 against 316 for fabricators — what differs in the metal, where each grade belongs, and the price spread on one identical table.
Sazinga
Quoting software for manufacturers mostly assumes a catalogue. Made-to-order work needs something else, and here are six tests to run on any vendor demo.
Sazinga
Estimating spreadsheets fail in predictable ways — copied files, stale rates, hidden assumptions. Where quoting in Excel breaks, and what fixes it.
Sazinga
What a hoarding, unipole, gantry and pole kiosk actually are, the sizes each is commonly built at, and why there is no single standard size.
Sazinga
The two kinds of outdoor advertising business, what each needs to start, the permissions involved, and the three numbers that decide if it works.
Sazinga
Card rate versus net rate, how agency commission is applied, what printing and mounting really cost, and how to quote so procurement cannot argue.
Sazinga
Why most billboard software solves the wrong problem, the eight things an out-of-home system must do, and the questions to ask before you buy.
Sazinga
Vacancy is the biggest cost in an out-of-home business and the one nobody counts. How to work out what your empty hoarding days actually cost.
Sazinga
Double-booking an advertising face is almost never carelessness — it is a hold nobody confirmed. How it happens, and how to make it impossible.
Sazinga
The proof-of-display photograph usually exists; finding it is the problem. What a client is really asking for, and how to answer in thirty seconds.
Sazinga
Out-of-home work is lost on turnaround and completeness, not on rate. What belongs in a proposal, and how to stop it taking a whole evening.
Sazinga
What hoardings, unipoles and gantries fetch across Indian markets, the five things that set the rate, and how to price your own inventory.
Sazinga
Payments freeze because the invoice and the purchase order describe different things. Where that mismatch comes from, and how to remove it.
Sazinga
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.
Sazinga
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.
Sazinga
The clients hardcoded language, timezone and currency everywhere. The only endpoint holding the real values needed a permission a sales rep never gets.
Sazinga
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.
Sazinga
Two endpoints silently discarded the customer filter and returned every customer's pricing. The framework was doing what it documents, on every route, forever.
Sazinga
Forty-seven error codes the API could emit had no copy in the portal, so users read raw key strings. Nothing in the stack treats that as a failure.
Sazinga
The gate proves you may perform a kind of action. It says nothing about which rows, and in eight handlers the row restriction was eight copied lines.
Sazinga
A no-login share link is a new way for internal costs to escape. Building it on the redaction the exporter already does removes a whole class of mistake.
Sazinga
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.
Sazinga
A backfill and a validator, both carefully written, both compensating for an aggregation job that was specified in a schema comment and never built.
Sazinga
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.
Sazinga
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.
Sazinga
Row-level security on the base tables does not protect a view over them. The default is owner privileges, and an aggregate leak looks like a slightly high number.
Sazinga
Designing a retrieval assistant to run on the same host as the application, on two shared cores with no accelerator, and to fail closed rather than fall back.
Sazinga
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.
Sazinga
A clean import run proves nothing. Reconciling every entity count against the source, and naming the cause of every difference, is what proves it.
Sazinga
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.
Sazinga
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.
Sazinga
One permission to import, and the target resource named in the request body. That combination lets a role create records it has no permission to create.
Sazinga
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.
Sazinga
The first release build of the mobile app failed on two configuration bugs weeks old. Development mode had never touched either code path.
Sazinga
A hundred and fifty multiple-choice questions all had the answer in the first position. Each one was right. The distribution was the defect.
Sazinga
Thirteen of 362 pricing rules needed to call other rules and branch on a dimension. Keeping the language to CALL and CASE is what kept it safe.
Sazinga
A scraped and model-enriched dataset looks like research. Separating observed fields from generated ones stops you building for a customer who does not exist.
Sazinga
A marker protocol let one reply carry both chat and a draft. Truncation delivered the opening marker without the closing one, and the raw marker reached the screen.
Sazinga
The build output was long, so it went through a pager. The pipeline reported the pager's exit status. The build had failed and the report said it succeeded.
Sazinga
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.
Sazinga
A tunnel makes a remote database answer on localhost. That is what it is for, and it is why every migration run that afternoon went to the live system.
Sazinga
There was a sessions table with a revocation column and a token hash. Nothing ever wrote a row to it, and nothing ever read one.
Sazinga
Every contract bug in the project so far had been between contributors rather than inside one, so the rebuild started by making the seams mechanical.
Sazinga
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.
Sazinga
Nine send points, each carefully guarded, firing into an empty token table because the app had never called either registration endpoint.
Sazinga
Tenant isolation is the easy half. If loading a customer's pricing rules needs a developer, your customer ceiling is your developer capacity.
Sazinga
Pre-push tests and post-deploy checks are usually two suites that drift apart. Parameterising one suite by base URL removes the drift and the second suite.
Sazinga
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.
Sazinga
One made-to-order product had 24 features and 62 variants. Pricing at product level is combinatorially hopeless; pricing per feature is not.
Sazinga
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.
Sazinga
The output document is a specification. Reading real ones confirmed eight pending requests, produced several more, and settled two arguments about tax.
Sazinga
The audit trail masked the request body and stored the before-and-after values in clear. Then the viewer rendered two masked values as "nothing changed".
Sazinga
Removing a child archived the row. Adding her back created a new one. Her whole history stayed behind, and her old tablet credential stayed live.
Sazinga
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.
Sazinga
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.
Sazinga
A stale closure in a loop created six rows where one was intended, and an unordered query picked whichever of them the database felt like returning.
Sazinga
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.
Sazinga
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.
Sazinga
A gap register sent two people to rebuild an offline layer that already existed. It was wrong six times, and each entry was wrong in the same specific way.
Sazinga
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.
Sazinga
A middleware validated that a site could take till transactions. It returned early for account owners, and owners were the only ones who could name the site.
Sazinga
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.
Sazinga
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.
Sazinga
A restart step that could not get the privilege it needed logged a warning and carried on. Every deploy reported success while changing nothing.
Sazinga
The CAD files looked like the authoritative source for dimensions and geometry. They were neither. What they were useful for was checking the formulas.
Sazinga
One dispatch per order was a scope decision. Removing it for partial shipments exposed a race where two dispatches could each ship the last unit.
Sazinga
A pinned model returned 404 for every newly created key while still appearing in the provider's own model list. Availability is a per-account fact.
Sazinga
Reviewing 362 business-authored pricing rules needed an ordering, not an oracle. Keeping the AI verdict in its own column is what made it safe to use.
Sazinga
A proxy metric that works on average can fail completely on one part of its domain, and the part it fails on is often the part you added it for.
Sazinga
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.
Sazinga
Seventy-five endpoints, all parent-facing. The child's half of the product had a schema, a plan and a design, and no server to talk to.
Sazinga
Twenty-five of thirty-five test suites went red with no code change. The shared tenant's trial had expired four days earlier and nothing had said so.
Sazinga
A sale, a production run and an adjustment all wrote the same inventory row. One took a row lock, one wrote a ledger entry, and one did neither.
Sazinga
Resetting the tenant data wiped every system role and every permission grant, because one nullable column made the roles table a child of the organisations table.
Sazinga
Ask a model for fifteen items and you may get twelve. The choice is between failing, quietly shortening the list, or returning the twelve and saying so.
Sazinga
Publish was a button. Assign was an item in an overflow menu on another screen. The child's tablet needed both, and said nothing when it had one.
Sazinga
The source workbook had two formula columns per row, one per grade. That single detail decides how a bespoke pricing engine has to resolve rules.
Sazinga
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.
Sazinga
A production output table had a nullable parent column, an old parent beside it, and two identical foreign keys — one migration, told three ways.
Sazinga
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.
Sazinga
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.
Sazinga
A fallback chain that advances on error codes but not on empty responses is not a fallback chain. It is one provider with extra configuration.
Sazinga
An unordered single-row lookup on a non-unique key is not a bug that throws. It is a bug where the user presses a button and the screen ignores them.
Sazinga
The same mistake bit a rental ledger three times in three months — a field naming an amount was read as proof the amount had moved.
Sazinga
A dashboard tile read 86 open jobs for one driver. Three were open. The other 83 had ended in ways the app was never told about.
Sazinga
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.
Sazinga
Hand-written audit calls get forgotten, and a forgotten one makes the whole log untrustworthy. Capture centrally, label by registry, and mine the unlabelled.
Sazinga
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.
Sazinga
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.
Sazinga
A malware scan that returns zero hits is not evidence of a clean site. Comparing files against the official distribution is what actually finds things.
Sazinga
Embedding existing labelled data into class prototypes gives you a classifier in an afternoon — and a confidence margin that knows when to ask a person.
Sazinga
Tenant isolation enforced by WHERE clauses depends on nobody forgetting one. Enforced by the schema, a cross-tenant row cannot be written at all.
Sazinga
An approval step no expense could reach. A module nobody opened. Rebuilding around the real workflow started by removing everything that was not it.
Sazinga
Two compromised sites were rebuilt as static HTML with no interpreter and no database. The attack surface did not shrink — it stopped existing.
Sazinga
Two tables held outstanding amounts. Nothing kept them in step with the invoices they came from. Pay an invoice and the ledger never noticed.
Sazinga
Nine modules named after data types. One job — book a hoarding and bill for it — spread across three of them. That is why software feels scattered.
Sazinga
362 pricing formulas, none of them in the source code. How to evaluate business-authored expressions without eval, and why that boundary matters.
Sazinga
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.
Sazinga
A mutable points column looks simpler for about a week, and then a retried request pays twice and nobody can explain where the balance came from.
Sazinga
A read followed by a check is not a guard. Two webhooks for one payment both passed it, and the customer's account was credited double the amount.
Sazinga
Fixed-precision money columns come back from the driver as strings. Add them with the wrong operator and the total is silently not a number.
Sazinga
A digital screen loops six to eight adverts at once. The system allowed one. That is a correctness defect, and it should be sequenced like one.
Sazinga
A shared password reused across every database on a server is not a weak password problem. It removes the boundaries you thought you had.
Sazinga
Shared hosting is usually presented as a cost decision. It is a blast-radius decision, and the bill arrives all at once when one site falls.
Sazinga
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.
Sazinga
Runs until the client stops" is a real commercial term. Storing it as a null end date breaks overlap checks, calendars and availability all at once.
Sazinga
A model that cannot see a tool cannot call it. Building a natural-language interface where authorisation is structural rather than a prompt instruction.
Sazinga
Replacing two hard-coded roles with 77 granular permissions, and the design bug that would have shown field staff the director's dashboard.
Sazinga
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.
Sazinga
Row-level security kept tenants apart. Nothing kept a branch-scoped user from exporting the entire organisation's customers, orders and payments.
Sazinga
A customer paid a five thousand rupee deposit and was immediately asked for it again, because the ledger recorded the receipt as a new row.
Sazinga
Offline-first only works if the client can tell "already applied" apart from "rejected". A single conflict status collapses both into one answer.
Sazinga
Certificate renewal had been dead for months behind a cron entry that looked like cover. A backup wrote nothing. Neither failure produced a single alert.
Sazinga
A hoarding is a location. What a client buys is a surface, for a window, at a rate. Conflating the two puts the overlap check on the wrong row.
Sazinga
A UUID compared against a list of strings is never equal. The check failed closed, denied everything, and looked exactly like correct behaviour.
Sazinga
Every invoice had to reference a booking. The business raised invoices without bookings all the time. The constraint had encoded an assumption nobody checked.
Sazinga
An application calling its own API by public hostname consumed two workers per request. At five workers, five simultaneous visitors deadlocked it permanently.
Sazinga
Keeping a husk row for the audit trail produced phantom drivers on eighteen legs. Deleting the row and logging the change was the safer design.
Sazinga
A driver dashboard counted work by a row's updated timestamp. The timestamp was stamped on insert and had never moved on any of 221 rows.
Sazinga
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.
Sazinga
A co-investor's profit share and an agency's introduction commission are both money out to a company. Everything else about them differs.
Sazinga
GEO is about being quotable by an answer engine rather than ranked by a search engine, and the two goals reward different things.
Sazinga
Why availability derived from live bookings prevents double-selling in asset businesses, and a spreadsheet inventory structurally cannot.
Sazinga
Designing field apps for staff with no signal: local-first writes, durable queues, idempotency and conflict rules decided by the business.
Sazinga
Where AI genuinely speeds up software delivery, where it quietly costs more than it saves, and why review discipline must not loosen.
Sazinga
Bespoke manufacturers price in spreadsheets for good reasons. A governed pricing engine keeps the flexibility and removes the drift.
Tell us what you are trying to fix and we will tell you honestly whether one of the applications fits, or whether this is a build.