price list · automatic PDFs
Tensomax Listino dinamico
The price list is built from the real prices and product sheets instead of being redone by hand: it checks itself and becomes a PDF for the web and for the printer.
cat ./context.md
Made-to-measure outdoor structures · 2026
./role --ours
Data model, automatic layout, PDF
Before and after
how it was
The price list was a static 36 MB PDF, redone by hand and uploaded among the portal’s documents. Across its whole history it had been downloaded eleven times: the only way to send it to a customer was to download it and attach it, and every price change meant going back into it.
what we built
A Partner Hub module that builds the price list from real data — products, prices, technical sheets —, lays it out in A4 on its own and lets people correct it in a visual editor. Two PDFs come out of it: a light one for the web and one for the printer, with bleed and crop marks.
$ ls ./components
How it is built
-
01
One source for prices
Price list and quote builder read the same prices, with no copies. A revision can be published, compared with the previous one or rolled back, and an increase can be applied in bulk.
-
02
A release that stops itself
One misaligned price, one forgotten placeholder text or one failed layout check, and the price list does not go out. The last check: 173 pages, zero errors.
-
03
A separate service for PDFs
The PDFs are generated by a dedicated container, outside the application: Chromium for the layout, Ghostscript and qpdf to slim it down. Every file carries the fingerprint of the data and code that produced it, so you know whether it is still current.
-
04
Versions that only move forward
Draft, review, approved, archived: on approval the content is frozen. Every release notifies the dealers, who download the current version from their area.
$ ./results --after
How it turned out
[ok] The price list is rebuilt from the data instead of being redone by hand
[ok] Automatic update every 15 minutes, without losing layout corrections
[ok] From the same content, a 12.6 MB PDF for the web and one ready for print
// services involved
$ ls ./other-cases
Got a similar project?
Thirty minutes on video to work out whether it is worth doing, and what it really costs. If we are not the right people, we will say so.
