Custom quoting system for a truss manufacturer — from 2 hours to 5 minutes per quote

· 8 min read · Case study
IndustryWood construction — roof trusses
Size30 people
ServiceCustom software
Time to go-live3 months
StackASP.NET Core · React · PostgreSQL · QuestPDF · Azure

A roof truss manufacturer — wooden roof structures sized for a specific roof, a specific rafter spacing, a specific snow load. Every quote bespoke, every one calculated separately in Excel by a sales rep. Three months later, instead of two hours in Excel it takes five minutes in the browser — and zero wrong quotes.

Context: a product that does not fit a price list

The client has been making roof trusses for eighteen years. Thirty people, two production halls, deliveries to construction sites within a 300 km radius. A truss is not a shelf product — it is a roof structure designed for a specific build, with a specific roof geometry, angles, spacing, climate-zone snow load, span length and timber class.

Every quote is unique. The customer (developer, design office, individual investor) shows up with a roof PDF or a parameter list. The sales rep analyses the structure, picks truss types, calculates quantities, checks current timber and gangnail prices from the supplier's price list, applies a margin tuned to the customer type and packs it into a quote.

We started working together in 2025. The client came to us after trying to buy an off-the-shelf product from a foreign vendor — only to find out it was structural design software (for stress calculations), not quoting software. Quoting was supposed to stay in Excel. The client said: "I don't want another Excel. I want a tool that takes parameters and spits out a PDF I can send to a customer in 5 minutes."

Starting point: 2 hours in Excel, 5 versions of "the current" file

The status quo looked like this. Each of the five sales reps had their own copy of the "main" Excel, modified to taste. The timber price list lived in a different Excel, updated by hand by the procurement manager. The gangnail price list — in a third Excel. Margins — from memory, "because Mr Janek knows what to give to which customer."

The consequences were painful and measurable:

What we considered and what we ruled out

The first idea was "let's improve Excel." We could build a complex sheet with VBA, macros and cell protection. We talked the client out of it: every such sheet becomes unmanageable after a year, nobody knows who changed what, no new sales rep ever learns it.

The second option was an off-the-shelf CPQ (Configure-Price-Quote). We evaluated three. All were aimed at distribution firms with a product catalogue — not at a manufacturer sizing a structure to a specific roof. The domain logic would have to be written as customisation; licence + customisation costs exceeded the cost of a bespoke solution.

We chose a bespoke web system. Three reasons: (1) the domain logic needed a precise model (truss types, geometry, loads) — easier to write from scratch than to bolt onto a CPQ schema; (2) the client wanted the system to grow — adding a B2B portal and a production integration in later phases; (3) build cost was lower than the 3-year TCO of an off-the-shelf CPQ.

Solution: configurator + price lists + PDF generator

Step by step

— 4 stages · 5 minutes instead of 2 hours
1
Input
Sales rep enters parameters
Roof geometry, rafter spacing, snow zone, timber class. Customer's PDF or a parameter list.
Sends
2
Quoting engine
SilverData Engine
Domain logic covered by unit tests. Picks truss type, calculates quantities, applies pricing and margin.
  • Truss selection
  • Supplier price lists
  • Margin rules
  • Versioning
Generates
3
Customer-facing output
Quote PDF
Roof drawing, truss table, cost breakdown, delivery terms — ready to send.
4
After approval
Production export
Bill of materials, cutting plan, labels — a package for production with no manual re-entry.
Every quote saved with its price-list version. Three months later the customer asks "why was it priced like this" — the system shows the price list from the day it was issued. Full history, end of disputes.
What you gain
5 minutes per quote — instead of 2 hours in Excel, 24× faster.
What you eliminate
Pricing errors — 0 mistakes after rollout, down from ~6 a month.
What you control
Full history — every quote tagged with its price list and margin.

The most important part was the quoting engine. We designed it as a separate domain module with unit tests covering every truss type. The sales rep enters roof parameters (geometry, rafter spacing, snow zone, timber class), the system picks the right truss type from the library, calculates the number of boards, the number of gangnail plates, lengths, sections, weight and finally the price.

Timber and gangnail price lists are pulled once a day from supplier Excels (we kept that format, because the suppliers will not change it — middleware reads them and loads the data into the database). Margins and discount policy are encoded as rules: customer type A → margin X%, customer type B → margin Y%, winter season → bonus Z%.

The sales rep generates a quote with one button. The PDF (QuestPDF) contains: a roof sketch (rendered from parameters), truss tables with dimensions and weight, the cost breakdown, delivery terms, lead time, the company's address and the rep's contact details. Company branding, clean layout, ready to email in one click.

Three decisions that paid off

Rollout: 3 months, 4 sprints, one team

We worked in four two-week sprints. Sprint 1 — domain model and quoting engine (engine only, no UI, covered by tests using real examples from the client's Excels). Sprint 2 — configurator UI and basic end-to-end calculation. Sprint 3 — PDF generator, price-list integration, authorisation, audit. Sprint 4 — production export, migration of historical quotes (the 300 most recent into the database), training the sales reps.

Every sprint ended with a demo for the sales reps and the board. Several important tweaks (e.g. simplifying the geometry-input screen) came from those demos — sales reps saw the thing early and reported specifics nobody would have thought of around a desk.

Results 9 months after rollout

5 min
per quote instead of 2 hours — 24× faster on average
0
wrong quotes caught in review — down from ~6 a month before rollout
3 mo.
from idea to production — without major slippage

The client increased the number of enquiries handled by about a third without growing the sales team — sales reps now have time to talk to customers instead of sitting in Excel. Response time on enquiries dropped from 2–3 days to same-day, which noticeably improved conversion to orders (the customer does not have time to ask a competitor).

The value did not arrive when the code was written. It arrived the first time a sales rep sent a quote 8 minutes after the customer's phone call and the customer replied "wow, that was fast."

What's next

The system is live and the client keeps growing it. In 2026 we are planning phase two: a customer portal where developers and design offices submit enquiries themselves and get an instant indicative quote (the sales rep just approves and sends the PDF). Plus an integration with the client's production system so that an accepted quote drops in as a production order.

This is a good example of a project that starts with one, very specific pain point (quoting) and ends up tidying up the whole front-office along the way. We do not rewrite the ERP. We do not change the processes. We pick the most painful point and automate it — and the rest grows around it in subsequent phases.

Does your firm price products to the customer's spec, by hand? Let's talk for 30 minutes about what could be automated — no commitment.

Book your free consultation →

← All case studies