Offer configurator. Automating the quoting process

01. Starting point

The client was an IT company where preparing a commercial offer was still a fully manual process. Every request meant opening a previous document, adjusting the scope to the new context, recalculating the quote, and reformatting a PDF. The average time for this task was about 40 minutes.

The cost of that process was not only time. Offer variants required separate files. Every correction from the end client meant another document version and another attachment in the thread. As the volume of requests grew, keeping scope and pricing consistent across offers became harder.

02. Solution

We built an offer generator that automates the most time-consuming step: preparing the first draft of the document.

The entry point is the request received from the client. The system analyzes its content, identifies the stated needs, and from that assembles a draft offer scope: site elements, subpages, features, and the related pricing line items.

The result of that analysis is not sent to the client automatically. It is a working draft for the person responsible for the offer, who reviews the scope, adds points agreed in conversation, and approves the price. Conceptual work and the commercial decision stay with the human. Only the reproductive layer is automated.

03. Process flow

  1. Enter the request into the system as text or as a file received from the client.
  2. Automatic content analysis and generation of a draft offer scope.
  3. Review and completion of the document by the person in charge.
  4. Generate the document and send it to the client.
Handling requests in any format

Requests rarely arrive in a uniform form. Some clients describe needs in a message; others send a brief as a PDF or Word file. The system supports both: content is extracted from the file and passed into the same analysis path as text entered by hand. Rewriting requirements out of attachments disappears from the process.

Role of the language model

Request analysis is handled by a language model integrated through the Anthropic SDK. Its job is to recognize the needs described in the request and map them to items from the service catalog. Pricing is based on rules defined in the system, not on model estimation. That distinction matters: AI organizes the request content, while numbers come from a controlled price list.

Document generation

The final document is rendered from React components via Puppeteer. Every offer keeps the same layout, typography, and section structure, regardless of scope or who prepares it. Sending happens directly from the system, without external tools in between.

Technologies used
  • Frontend: React 18, Vite, TypeScript, Tailwind CSS, React Router
  • Backend: Node.js 20, Fastify 5, TypeScript
  • Database: PostgreSQL 16, Prisma ORM
  • Document generation: React and Puppeteer, input parsing via pdf-parse and mammoth
  • Authentication: JWT in an httpOnly cookie (@fastify/jwt)
  • Validation and integrations: Zod, Nodemailer, Anthropic SDK, QR code generation

Delivery from the first line of code to production took 4 weeks.

04. Results

Offer preparation time dropped from about 40 minutes to 2. The change is not only about work efficiency.

A reply to a request goes out on the day it arrives, which directly affects the company’s position in the client’s decision process. Preparing an offer variant no longer means repeating the entire job from scratch. All documents keep a consistent structure and a comparable level of detail, regardless of who leads the project and how large it is.

We deploy the same model in companies whose sales process is built on quoting repeatable but configurable scopes of work.

See also

AI Social Media manager
AI Social Media manager. Months of posts planned ahead
AI application
AI application. Campaign results from five sources in one dashboard
Help desk
Help desk. Product documentation available when it is needed