From options to an order in one system, with the customer signing off in between
One process end to end: configure, validate, price, generate the bill of materials, send the customer a link, and convert the accepted configuration into an order

This is a configuration and quoting layer for configurable machinery, built on Open Mercato. It takes a machine from a list of options to an order, and it does it inside the system that already holds the customer, the catalogue and the quote.
The sales rep configures. Rules block what cannot be built and say why. The specification, the bill of materials and the price come out of the same evaluation that drives the 3D model. The customer opens a link, sees the machine, and either accepts it or asks for a change. The accepted configuration becomes an order pointing at the same frozen snapshot.
The build is a demo. It came together over a weekend at the Open Mercato hackathon in Wrocław in September 2026, where it took first place in the Showcase track, and it has no production deployment or client outcomes behind it. What it shows is how much of a configurator is already standing once the platform underneath it is doing its job.
That makes it a reference for any manufacturer or dealer deciding where their configuration logic should live: in a separate product, or inside the system that already holds their customers, quotes and orders.
Business challenge
Plenty of configurable machines are still quoted by hand. The rep opens an option sheet, cross-checks a price list, and calls engineering to confirm that the combination can actually be built. Every one of those steps re-reads information the business already holds, and across a sales team the time adds up long before anyone counts it.
The expensive failure sits further down the line. A configuration that passes the quote and fails in production costs rework, a delayed handover and a conversation with the customer that no discount repairs. That is the risk the quoting step is supposed to absorb, and a spreadsheet cannot absorb it.
The alternative on offer is a packaged configurator product. Whether it fits depends on five answers that are easy to skip during a demo:
- →how the licence scales, given that a configurator is opened by people who are not full-time users of it
- →how much of the packaged path you will use, and what happens to the parts you need that are not in it
- →whether visualisation is included or priced as a separate line
- →how many integrations sit between a configuration in the tool and an order in your system of record
- →where customisation stops, and who decides where that is
Solution overview
We built the configuration and quoting layer directly inside Open Mercato, on the same data as customers, quotes and orders.
The platform supplied authentication, multi-tenancy with per-tenant branding, the back-office structure and navigation, company and contact records, the product catalogue, sales quotes with discounts, VAT and multiple currencies, orders, and dashboard widgets. None of that had to be designed or written.
Our layer is the part that only exists for a configurable product: the configuration model, the rules and their messages, the calculated specification, the price roll-up, the bill of materials, the 3D and 2D representation of the machine, and the handshake that puts a configuration in front of the customer and brings their answer back.
Key elements of the solution
A configuration model whose rules carry their reason
- →the demo machine has 19 options in six groups, from frame and running gear to attachment equipment, vision and safety, operator controls and finish
- →eleven rules govern them, and every rule has an identifier and a message written in plain language for the person looking at the screen
- →a rule can force a value, add a surcharge, warn the customer, or block the configuration outright
- →select hydraulic stabilisers on the standard frame and the configurator explains that the frame has no stabiliser mounts and names the frame that does, while the button that adds the machine to a quote stays disabled
- →switch on person detection and the rear camera is selected for you, with the reason shown beside it
- →behind the 19 options sit seven lookups, two formulas and 27 bill-of-materials mappings, so a change to a price or a part is a change in one place
One evaluation, so the picture, the parts and the price cannot drift apart
- →the model is published as an immutable version with a hash, and the configurator names the version it evaluated against at the bottom of the screen
- →the bill of materials grows from five lines to nine as options are chosen, each line carrying its own SKU, quantity and unit
- →the price rolls up in the open: net list, customer discount, net after discount, VAT, gross, with every surcharge pointing back at the rule that produced it
- →the calculated specification comes from the same evaluation, including engine and cab data, the attachment static moment and the load-chart utilisation
- →a read-only dependency map shows how features, lookups, rules and bill-of-materials lines reference each other, and an unresolved reference opens the validation report instead of shipping a broken model
The machine on screen, and a drawing when the drawing is the point
- →the configured machine renders live in 3D from five viewpoints, and every option that changes the machine changes the model
- →a 2D switch replaces it with a dimensioned technical view: maximum lift height, transport height, wheelbase and overall length
- →the rendering is procedural rather than imported from a CAD library, and the 2D view doubles as the fallback when hardware acceleration is unavailable
A customer who signs off without an account
- →the rep shares a link the customer can open on any device, with no account and no sign-in; the link is shown once, expires after thirty days, and sharing again replaces it
- →the customer sees the machine, the specification, the options and the price line by line, then either accepts the configuration or requests a change with a comment
- →the answer returns to the quote as a status, with the comment attached, so nobody has to reconcile an email thread against a document
- →superseded configurations stay on the quote with their timestamps, and the rep reopens any of them as a duplicate
- →the same configuration prints as a customer document with its own reference, so what was agreed survives outside the screen
Quote to order inside one system
- →an accepted configuration converts into an order that points at the same frozen snapshot
- →production reads what was sold rather than an interpretation of it, because the configuration, the bill of materials and the price came out of a single evaluation
- →quotes, orders and configuration activity all report from the same back office, including a dashboard view of open configurator sessions and finished configurations
- →quotes carry their own currency, so a machine priced in euros and a machine priced in dollars live side by side
The demo stops at a deliberate line. The customer approves a configuration rather than building one. Rules are edited in forms and in JSON rather than on a canvas. The 3D is procedural rather than the manufacturer’s own CAD. The bill of materials ends at the quote.

Operational improvements
The layer replaces a quoting loop, so the improvements are the ones that loop was costing.
What stops happening
- →the call to engineering disappears for every combination the rules already cover
- →an invalid machine cannot reach a quote, because the rule that blocks it also disables the button that adds it
- →the bill of materials, the price and the 3D come out of one evaluation, so there is nothing to reconcile between the quote and the shop floor
- →the customer answer arrives as a status on the quote, with the comment attached, rather than as an email somebody has to transcribe
- →a change request reopens the configuration it refers to, and the version it replaced stays on the quote with its timestamp
- →a new option, a new price or a new rule is one edit in the model, and every quote written afterwards records the version it was priced against
What it is worth, on stated assumptions
- →a dealer with ten reps, twenty quotes a month each, and an hour per quote today once the option sheet, the price list and the call to engineering are counted
- →that is 2,400 hours a year, or roughly 72,000 euros at 30 euros an hour of fully loaded sales time
- →the same volume at fifteen minutes a quote leaves 600 hours, or roughly 18,000 euros
- →the difference is around 54,000 euros a year, before a single licence is counted
- →these are assumptions rather than an audit: put in your own rep count and your own quoting time, and the shape of the answer holds
The larger number has no figure against it on purpose. The machine in this demo lists at 117,300 euros net. One configuration that reaches production wrong costs rework, a delayed handover and a conversation with the customer, and any one of those can outweigh a year of saved quoting time. That line is yours to fill in, because only you know how often it happens.
Strategic impact
A configurator is the smallest part of the system it needs to run. Authentication, permissions, multi-tenancy, the back office, search, the data layer, customer records, the catalogue, quotes with discounts and tax, and orders all have to exist before the first option appears on screen. The structural gains come from the layer sitting inside all of that rather than beside it:
- →configuration, quotes and orders share one database, so a rule change or a price change reaches the quote without crossing an integration
- →the model is versioned and every quote records which version priced it, which is what makes a quote from last year defensible this year
- →around one and a half per cent of the running system was written for this product, so the surface you maintain stays small
- →the platform arrives as versioned packages rather than a fork, so upstream work keeps landing without a migration project
- →the same model extends into a self-service portal, a visual rule designer, the manufacturer’s own CAD models, and a bill of materials that feeds the warehouse and purchasing, since the platform already carries warehouse and ordering modules
The ratio is measurable. Our configuration and quoting module is around 27,000 lines of TypeScript against roughly 1.7 million in the platform underneath it, and the step that turns an accepted configuration into an order is not ours at all: the module holds sixteen API routes and not one of them creates an order, because the platform already does. That ratio is why the build took a weekend, and it is the argument we make to manufacturers weighing their options. Writing a configurator is the easy half of the estimate. The real question is how much of the system around it you would be paying to write a second time.
If your machines are quoted the way the first section describes, the question worth answering is which of these pieces you already have, and which one is missing.

work.with.us;
Bring one real problem; leave with a clear answer.