AI pre-sales quoting and proposal tool
Quotes, offers and tender analysis with Claude in one tool, used by pre-sales in four countries. Disaster recovery quotes in 15 minutes instead of 2 days.
- Problem
- Pre-sales worked across three separate intranet pages: a circuit price calculator, a purchase request to Procurement and the customer offer. Data was retyped between them, offers were assembled by hand in PowerPoint and Word, and tenders were analysed manually, requirement by requirement.
- What I built
- I own it end to end: product, architecture, business and safety rules, evaluation criteria, releases and production. The code was written with Claude Code under my direction. The quote is the single record: the customer offer in Spanish, English or Portuguese, its versions, the Procurement order and the per-country register all come from it. On top sit the AI features: a tender analyser with go/no-go, requirement coverage, partner queries and cited answers; offer preparation and review with Claude; and CRM sync with Pipedrive.
- Result
- It absorbed my two earlier tools. Disaster recovery quotes went from about 2 days to 15 minutes, and the backup advisor is part of roughly 40% of pre-sales engagements. In production with 12 configured users in Spain, Portugal, Colombia and Chile. 59 production releases between 22 October and 6 November 2026, each one only after a green run of 2,428 automated checks.
01How a tender flows through it
step through it, or click any node- ○tender in
- ReaderLLM
- AnalystLLM
- ↳ Toolstools
- Validatorcode
- WriterLLM
- Human approvalhuman
- Applycode
- ○offer ready
Follow one tender through the system.
Press play to watch it at reading speed, or use next to go one step at a time.
Illustrative run of the real pipeline. Cost and time figures are measured.
02Where it runs
tap a step to light up its path- 1Opens a dealPre-sales engineeruser's deviceTeam appuser's device
The deal page holds everything: what we cover, quote, offer and order.
- 2Reads the tender from the deal folderTeam appuser's deviceDeal foldersGoogle Drive
Files through the browser File System Access API. Customer documents go to the model as data, never as instructions.
- 3Calls Claude through the proxyTeam appuser's deviceLiteLLM proxycompany network
Costs and margins are stripped by an allow-list. A test fails if a cost field or a canary value ever appears in a request.
- 4Routes each job to one modelLiteLLM proxycompany networkHaikuAnthropicSonnetAnthropicOpusAnthropic
Haiku reads the tender once; Sonnet does coverage, Q&A and quote; Opus writes only what the customer reads.
- 5Writes the outputsTeam appuser's deviceDeal foldersGoogle Drive
Quote, offer (PPTX or DOCX, in Spanish, English or Portuguese), Procurement order and register, all from one record.
- 6Syncs the CRM, with confirmationTeam appuser's devicePipedrive CRMSaaS
Compares quote status with the CRM and proposes won or lost. No deal amounts are read or stored.
- 7Team Claude Code, fenced inCode (team)user's deviceDeal foldersGoogle Drive
A pre-tool hook blocks writes outside the deal AI folder. Shell, web fetch and web search are denied.
- 8Ships only when greenCode (dev)releaseRelease gaterelease
Production gets new code only if all 2,428 checks passed on that exact code, and every release is zipped for rollback.
03How I know it works
Which model does the analysis
one test tender · cost at list price · chosen model in rust
Haiku stays as the reader: with it in front, 39 requirements found against 29 when Opus read alone, with 19% less input.
The last redesign, on a large tender
before (outline) and after (filled) · each row on its own scale
And 27 of 27 user decisions respected, 15 of 15 services with their own paragraph.
Splitting the instruction file
benchmark cost, same task · outline before, filled after
−36% cost, −25% tokens · accuracy 99% → 100%
The rule for every change
59 releases from 22 Oct to 6 Nov 2026, each behind 2,428 automated checks on that exact code
04What I would do differently
- Build the real evaluation baseline, with real tenders, before tuning models or prompts.
- Add adversarial tests from day one: hidden instructions in a tender, a key echoed back by the proxy.
- Write fewer emphatic rules. An audit of my own instructions found 89 bold rules and 15 contradictions.
- Stack
- Claude (Haiku, Sonnet, Opus) · Tool use · Structured outputs · Pipedrive API · Google Drive · Plain HTML and JS