It saves about a full person's worth of effort across 25 proposals a month. It also failed on its first five attempts — and the reason it failed was more valuable than the tool.
Around 25 proposals a month, each assembled by hand from prior documents.
Pricing lived in people's heads and in the last similar proposal someone could find.
Standard work — the same units of delivery, over and over — was being re-priced every time.
Senior time went into assembly rather than into the parts that needed judgement.
Consistency depended on who wrote it and what they remembered.
Turnaround was slow enough to cost deals that moved quickly.
The core idea is decomposition, not generation. Generation is the easy half.
A project is broken into known units of work — deinstall, reinstall, reverse logistics, a survey per N rooms, a router install, a device install. Each maps to a rate card. Past proposals were converted into those rate cards, part by hand and part with AI.
Standard work — routine, already priced, no need to go back to anyone — is generated end to end. Novel work is different: the pipeline is built to detect that it cannot price something and flag it, rather than produce a confident guess. Standard work is about 30% of proposals by count but 50% by effort, which is why automating it pays.
The parsed scope becomes primitives, primitives price against rate cards, and comparable past proposals are retrieved and injected for tone and structure. The document comes out in house format. Retrieval here is full-text search over a structured corpus, not a vector database — at this corpus size it is simpler, provider-agnostic, and scoping a query to one client is a plain database filter.
Resilience: a primary model with a self-hosted fallback, so an outage or an unparseable response degrades instead of failing.
The first five generated proposals were rejected at final approval by the senior salesperson signing them off. None reached a customer — the review step did its job — but the team lost confidence in the tool immediately.
They were not wrong in any absolute sense. They were faithful renderings of the scope document on file. They were rejected because the approver had actually run the client conversations, and could see scope that had been agreed out loud and never written down.
"The model was doing exactly what it was asked: generating faithfully from a source of truth that was not the truth."
The scope document a client sends is an opening position, not an agreement. The real scope gets reshaped across three or four sales calls — and those changes lived nowhere. In a salesperson's memory, and in meeting transcripts that were dutifully emailed to everyone and sat unopened.
So the fix was not a better prompt. It was building the capture layer underneath: a voice note at the car door, an email forwarded to a tagged address, each producing a scope addendum that keeps the working document current. Rework caused by stale scope fell from about 30% of proposal effort to about 10%. The generator started working once the documents underneath it stopped lying.
| Metric | Before | After |
|---|---|---|
| Effort on standard proposals | Assembled by hand, every time | ~1 FTE saved across ~25/month |
| Rework from stale scope | ~30% of proposal effort | ~10% |
| Where junior time goes | Document assembly | Scoping and pricing — the work that needs a person |
| Pricing consistency | Depended on who wrote it | Rate cards, applied the same way every time |
| Unpriceable work | Estimated, sometimes wrongly | Detected and flagged rather than guessed |
| Scope changes agreed verbally | Lived in memory and unopened transcripts | Captured as addenda against the deal |
"The artefact you trust is not where the decisions are."
When an AI system produces output people reject, the instinct is to fix the model — a better prompt, a bigger context, a different provider. That instinct is often wrong. This system's output was faithful to its inputs. The inputs were stale, because the process that should have updated them asked a busy person to do a small disciplined act at an inconvenient moment.
There is a second lesson underneath the first. The early version's specification could not have been written on a whiteboard, because the thing it needed to capture was only visible once the system had run and been seen to miss it. The early version's real job was not to be good. It was to generate the understanding that made a good version possible.
Any trade that quotes repeat work — fit-outs, installations, servicing. Break the job into priced units, generate the routine ones, flag the genuinely novel for a human to price.
Standard protocols assembled from a library, with the unusual presentation flagged rather than auto-filled. The value is in what the system refuses to guess.
Agencies and consultancies re-writing near-identical SOWs. The harder half is keeping the scope current after the conversations that changed it.
Retrieval over past submissions plus a priced component library, with commercial terms as structured data rather than prose someone has to re-read.
90-minute AI Opportunity Audit. No pitch — just findings you can act on.