← Back to work
ManufacturingManufacturing · Enterprise Software · 6-week build, ongoing retainer

From 4 hours to 12 minutes per order

From 4 hours to 12 minutes per order

The situation

The client is a ceramics manufacturer in Gujarat, exporting tile and sanitaryware fittings to distributors across the Middle East and East Africa. Orders came in the way they always had: a phone call, a WhatsApp voice note, or a message with a photo of a sample tile and a scribbled quantity. One person — the owner — turned each of those into a quotation, because he was the only one who knew the current pricing, the material costs, and which specs had changed since the last price list went out.

That worked when the business handled fifteen orders a month. It stopped working when two new export accounts signed in the same quarter, both expecting quote turnaround measured in hours, not days. The constraint wasn't a technology budget — it was that the entire pricing and specification logic lived in one person's head and a notebook only he could read.

The problem

Every quotation was rebuilt from scratch, even for near-identical repeat orders. Nobody but the owner could tell, at a glance, whether a quote had already been sent, revised, or was still sitting in a WhatsApp thread waiting on a reply.

  • Quotes retyped by hand from a paper price book never fully reconciled with three separate spreadsheets
  • No shared record of what had been quoted, to whom, or when
  • Pricing errors from manual copying, occasionally undercutting margin on export orders
  • The owner personally in the loop on every enquiry, capping how many orders the business could take at once

What we built

We built a small internal web application that sits on top of the WhatsApp Business API the client already used, rather than asking staff to adopt a new customer-facing channel. Incoming enquiry messages — including the mixed Gujarati-English phrasing staff actually use — are parsed to pull out product type, quantity, size and finish, then matched against a structured pricing and material-spec table we built with the client over several working sessions.

We deliberately split the system in two. Understanding a freeform inbound message is an LLM's job — it's good at extracting structure from messy human text. Calculating the actual price is not: that step runs against the reconciled pricing table with plain arithmetic, so a quote can never be a hallucinated number. The system drafts a quotation as a PDF and puts it in front of a staff member for a one-tap approval before it goes back to the customer. We rejected a fully autonomous send — the liability of an unreviewed quote going out wrong on an export order was worse than the extra ten seconds a human glance costs.

The stack is a Next.js internal dashboard, a Postgres database holding the pricing and order history, and the parsing step calling an LLM through the same provider setup we use across our own products. Staff log in through the same tool they already had open.

The hard part

The pricing data itself was the real project. The notebook, the memory, and three Excel files disagreed with each other on a meaningful number of line items, and reconciling them took longer than writing the parsing logic. We ran that reconciliation as its own short phase before touching code, sitting with the owner to settle each discrepancy — because a system that automates a wrong price is worse than the manual process it replaces.

The second complication was the input itself: enquiry messages arrived with missing quantities, ambiguous product names, and finishes described differently by different customers. We built a fallback path — if the parser isn't confident, it drafts a clarifying question instead of guessing, and a staff member sends it. That single change removed most of the early misfires.

The result

Based on the client's own tracking, a typical order quote now takes roughly 12 minutes from enquiry to sent PDF, down from an estimated 4 hours when it depended entirely on the owner's availability. The two new export accounts were onboarded without adding anyone to the order-handling team.

~4 hrs → ~12 minQuote turnaround
0, across 2 new accountsHeadcount added

We used to wait for one person to be free. Now anyone on the floor can get a quote out before the customer's even put their phone down.

Operations lead, ceramics manufacturer

What happened next

They're still a client. The order and quotation tool now runs on a small monthly retainer, and we've since added a second internal tool for reconciling incoming stock against the same pricing table — the kind of follow-on work the partnership model is built for.

Working on something similar?

Book a call. We'll listen, tell you what we'd do, and say so if the answer is “not us.”

Book a call