Skip to content
← all cases
IN USEInternal · cloud and telecom provider

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

  1. ○tender in
  2. ReaderLLM
  3. AnalystLLM
  4. ↳ Toolstools
  5. Validatorcode
  6. WriterLLM
  7. Human approvalhuman
  8. Applycode
  9. ○offer ready
walkthrough12 steps

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

  1. 1Opens a deal
    Pre-sales engineeruser's deviceTeam appuser's device

    The deal page holds everything: what we cover, quote, offer and order.

  2. 2Reads the tender from the deal folder
    Team appuser's deviceDeal foldersGoogle Drive

    Files through the browser File System Access API. Customer documents go to the model as data, never as instructions.

  3. 3Calls Claude through the proxy
    Team 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.

  4. 4Routes each job to one model
    LiteLLM proxycompany networkHaikuAnthropicSonnetAnthropicOpusAnthropic

    Haiku reads the tender once; Sonnet does coverage, Q&A and quote; Opus writes only what the customer reads.

  5. 5Writes the outputs
    Team appuser's deviceDeal foldersGoogle Drive

    Quote, offer (PPTX or DOCX, in Spanish, English or Portuguese), Procurement order and register, all from one record.

  6. 6Syncs the CRM, with confirmation
    Team appuser's devicePipedrive CRMSaaS

    Compares quote status with the CRM and proposes won or lost. No deal amounts are read or stored.

  7. 7Team Claude Code, fenced in
    Code (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.

  8. 8Ships only when green
    Code (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

Opus
$1.60 · 267 s
Sonnet · chosen
$0.59 · 140 s
Haiku
$0.53 · rejected for analysis

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

Requirements found
39
45
Truncated answers
2
0
Texts cut in Word
7
0
Time (s)
485
411
Cost ($)
$1.50
$1.38

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

before
$15.02
after
$9.54

−36% cost, −25% tokens · accuracy 99% → 100%

The rule for every change

change
ships only if accuracy ≥ before and cost < before
release

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