TL;DR: Manual quotation and BOQ preparation is a time problem, not a pricing problem. Estimators re-key the same rates into every quote, and consistency depends on who happens to build it. The fix is not another master template or another estimator. It is a system that parses incoming scope, holds every approved rate in one structured store, drafts the document constrained to those rates so it never invents a price, routes it through a human approval gate, versions the output, and syncs the accepted quote to your ERP.
The Quotation Bottleneck Most Contractors Have Learned to Live With
Walk into the estimating desk of almost any UAE maintenance, MEP, or facilities management contractor and the workflow looks the same. A request for quotation arrives, and it arrives in every format imaginable: an email with a scope sheet attached, a photograph of a hand-marked drawing sent over WhatsApp, a PDF pulled from a client tender portal, or a few lines typed after a site walk-through. The estimator opens the closest previous quotation, saves a copy, deletes the old client name, strips the old line items, and begins rebuilding the document line by line.
To price each line, the estimator reaches for rates that live in a master spreadsheet, an older quote, or their own memory of what the firm charged last time. They format the bill of quantities, apply markup, export a PDF, and email it back. Then the next RFQ arrives and the whole ritual repeats from a blank-ish starting point. Nothing carries forward except the estimator's experience. The document is rebuilt every single time.
Two structural weaknesses sit underneath this. First, the rates are not owned by the company; they are owned by whoever holds the spreadsheet or remembers the number. Second, there is no shared definition of what the correct quotation for a given scope looks like. Ask two estimators to price the same quarterly preventive maintenance scope and you will get two different documents, priced differently, worded differently, with different exclusions. That is not a discipline failure. It is what happens when the system of record is a person.
The Real Cost Is Measured in Hours, Not Dirhams
It is tempting to frame this as a cost problem, but the honest framing is time. Every quotation consumes the calendar of a senior estimator or quantity surveyor, the exact person whose judgement the business most needs on tenders, negotiations, and site risk. Instead they spend hours as a typist, transcribing rates they already know into a format they have produced a hundred times.
The bottleneck is that estimator's availability. When RFQs cluster, and they always cluster around budget cycles, contract renewals, and mobilization season, the queue lengthens and the firm's response time slips. In competitive tendering, a quotation that arrives two days late is often a quotation that arrives too late. The opportunity is lost not because the price was wrong but because the price was slow.
Underneath the lost time sits a quieter risk: inconsistency. When pricing lives in individual memory, the same scope can be quoted at materially different rates depending on who is at the desk that morning. Some of that variance shows up as margin leakage, some as quotes that lose on price because they were built cautiously high, and some as disputes later when a client compares two quotations from the same firm. None of it is visible on a spreadsheet, which is exactly why it persists.
Why the Obvious Fixes Do Not Hold
Most contractors have already tried to solve this, and the standard fixes fail for reasons worth naming precisely.
ERP quoting modules assume a catalogue, not a scope
The quoting and sales-order modules inside systems like SAP Business One, Zoho, Oracle NetSuite, and Microsoft Dynamics 365 Business Central are built around an item master: a catalogue of SKUs, each with a defined unit price. That model fits a trading or distribution business perfectly. It fits a maintenance BOQ badly. Facilities and MEP scope is not a list of products; it is a set of composite, scope-driven rates, "supply, install, test and commission" or "quarterly PPM of air handling units across G+4," each built up from labour, material, plant, and markup that shift with building type, access difficulty, and contract term. Force that into a fixed SKU catalogue and you either explode the item master into thousands of near-duplicate entries or you flatten away the very detail estimators depend on. Neither is usable, which is why the module usually ends up bypassed in favour of Excel.
Master templates drift
The common in-house answer is a shared master quotation template with rates baked in. It works for about a quarter. Then someone copies it to their own drive, someone else updates a rate in one version and not the others, and within months there are five templates in circulation and no way to know which one is current. A template is a snapshot of your rates at one moment. It is not a source of truth, because nothing keeps the copies synchronized. Drift is not a risk with shared templates; it is the default outcome.
Hiring another estimator scales the problem, not the solution
When the queue gets long enough, the instinct is to hire. Another estimator adds throughput, but they also add another interpretation of the rates, another set of formatting habits, and another private spreadsheet. You have bought capacity and, with it, more inconsistency surface. The manual process does not get better with more people running it; it gets wider. The bottleneck is architectural, and you cannot staff your way out of an architectural problem.
How to Build Quotation and BOQ Automation Properly
The system that actually works is a pipeline of narrow, auditable stages. The single most important design principle is this: the language model does language work, and deterministic code does the pricing. Keep those two responsibilities strictly separate and the system becomes safe to trust. Blur them and you get a machine that confidently invents prices, which is worse than no machine at all.
1. Ingestion and scope parsing
The front door accepts RFQs from every channel the business already uses: email inboxes, messages arriving through the WhatsApp Cloud API, files downloaded from tender portals, and scanned or photographed scope sheets. Scanned documents pass through OCR; unstructured text passes through a language model whose job is extraction, not pricing. It turns "clean and service twelve fan coil units quarterly across ground plus four floors" into structured line items with normalized fields: description, quantity, unit, location, and frequency. This is where AI genuinely earns its place, absorbing the mess of real-world input and producing clean, structured scope that the rest of the pipeline can reason about.
2. A structured rate and line-item store, the single source of truth
At the centre sits one database of approved rates, and it is the asset the whole system is built to protect. Each rate carries its description, unit, composite build-up (labour, material, plant, and markup), validity period, and the conditions under which it applies. A relational store such as Postgres holds it. Because incoming scope wording never matches your catalogue exactly, semantic matching using vector embeddings, for example with pgvector, maps each parsed scope line to the closest approved rate rather than relying on brittle exact-text matching. This store is the thing the business governs. Update a rate once, and every future quotation inherits it automatically. The rates stop living in a person and start living in the company.
3. Template-driven generation constrained to approved rates
With scope parsed and rates matched, the generator assembles the BOQ and quotation document. The rule that makes this trustworthy is absolute: the model formats and arranges, it does not invent prices. Every number is pulled from the rate store by lookup. The language model may draft the scope narrative, the assumptions, and the exclusions, because those are text and text is its job. But the priced quantities are deterministic, sourced from the governed store, never generated. This is the honesty boundary of the whole design, and it is what separates a system a QS can sign off on from a plausible-looking hallucination engine.
4. Flag unknown scope, do not guess
When a parsed scope line has no confident match in the rate store, the system does not fabricate a rate. It flags the line for a human to price. This is non-negotiable, because a guessed rate is more dangerous than a blank one: it looks authoritative and slips through review. The estimator prices the genuinely new item once, and that decision can then be promoted into the rate store so the next quotation matches it automatically. The catalogue improves through use instead of decaying.
5. A human review and approval gate
No quotation leaves the building without an estimator or quantity surveyor reviewing it. The division of labour is clean: the system does the re-keying, and the human does the judgement, the commercial strategy, the markup decision for this particular client, the risk read on this particular scope. Approval is an explicit, recorded action, capturing who approved and when. Automation here is not about removing the expert; it is about pointing the expert's time at the decisions only they can make.
6. Versioned output
Every revision is stored as a distinct version. When a client comes back asking for a revised BOQ with two lines removed and a discount applied, you produce version two without destroying version one. For tender submissions this audit trail matters, because you can prove exactly what was sent, at what price, and on what date. Nothing is overwritten into ambiguity.
7. ERP sync
When a quotation is accepted, the system pushes it into your ERP or accounting platform, SAP Business One, Zoho Books, NetSuite, as a sales order or job, so finance and operations work from the same figure the client agreed to. This is standard integration against the ERP API, frequently orchestrated with a workflow tool like n8n. It closes the loop and removes the re-entry step that normally sits between winning work and invoicing it, a step that matters more now that the UAE is phasing in a mandatory e-invoicing regime and clean, structured records are becoming a compliance requirement rather than a nicety.
What Changes at the Desk
The estimator stops being a transcriptionist and becomes a reviewer. Rates are governed in one place, so a single update propagates to every future quote instead of requiring a hunt through old files. New staff produce consistent quotations from day one, because the store enforces consistency rather than relying on them to have absorbed years of tribal pricing knowledge. Turnaround compresses, because a first draft is generated in the time it used to take to open the last quote and start deleting. The same rate spine that powers day-to-day quotations also underpins heavier tender document preparation, where the volume and formatting demands make manual assembly even more punishing.
Where This Fits and How to Start
The correct starting point is almost always the rate store, because you cannot automate on top of rates that live in a person's head. Consolidating and structuring your approved rates is the foundational task, and often the most clarifying one, since it forces the business to decide what its rates actually are. From there, you add ingestion for your highest-volume RFQ channel, then generation, then the approval gate and ERP sync. Each stage is bounded, testable, and delivers value before the next one is built.
This is standard, disciplined AI automation work: narrow stages, auditable behaviour, honest boundaries between what the model drafts and what the system looks up, and tight integration with the platforms you already run. If your estimating desk is the bottleneck between a request and a response, a purpose-built quotation automation system for contractors is the structural fix rather than another headcount. Soluvide scopes each build against your channels, rate complexity, and ERP, and sends a fixed-fee proposal rather than a headline number, because the honest answer to "what will this cost" depends entirely on the shape of your rates and the mess of your inbound scope.
Questions
Frequently asked.
BOQ automation is a system that takes an incoming request for quotation, matches each scope line to your approved rates, and generates a bill of quantities and priced quotation without an estimator re-typing it. The estimator reviews and approves rather than builds from scratch. Prices come from a governed rate store by lookup, so the document stays consistent no matter who prepares it.
Where this applies
What we build for this.
- SolutionQuotation & BOQ automationYour estimator spends three days a week formatting quotations.
- ServiceAI automationDocuments, invoices, quotations, reports — done by software.
- ServiceAI integration & consultingFind where AI pays off, then wire it into what you already run.
- ServiceWhatsApp & CRM automationEvery lead answered, routed, logged and followed up.