Availability: Taking on new projects

Quoting a furniture order without a spreadsheet

Client
Luxury furniture retailer
Where
North Macedonia
When
2026 to present
Type
Long-running client

The problem

A furniture retailer quoting large custom orders by hand, where a discount applied at the wrong level moves the total by thousands and nobody afterwards can reconstruct how the figure was reached.

Furniture at this value does not sell through a cart. It sells through a quote that goes back and forth for weeks, and for that period the quote is the product.

What it does

  • A builder in Macedonian, with offer types that drive the wording at the top of the document.
  • Discounts at three levels — whole offer, position and individual product — cascading in a defined order.
  • Sequential numbering with an atomic increment and a clean year rollover, so two people quoting at once cannot collide on a number.
  • A shareable link for the client and a print-exact PDF of the same document.
  • Archiving through a private status with a daily job, so offers idle for ninety days leave the working list without being destroyed.
  • Notifications to the representative, the administrator and the client when an offer is answered, with a guard against sending twice.

Arithmetic you can defend

The discount cascade exists twice: once in PHP for the stored document, once in JavaScript for the live preview. Two implementations of the same money maths will eventually disagree, and the disagreement will be discovered by a customer.

So both are checked against a third, independent implementation written only for testing, across a generated set of cases. If any of the three disagree, the build stops. It is more work than trusting one implementation, and it is the difference between a quoting tool and a liability.

Print that matches the screen

The PDF is not an approximation of the web offer, it is the same document. Verified by generating real A4 files headlessly and reading the output back — page count, page size, text position — rather than by looking at a print preview and deciding it seemed fine.

Page margins are set so the browser suppresses its own URL and date footer while still allowing proper page numbers. Images keep their on-screen proportions in print even where that costs a page, because a sofa reproduced at the wrong aspect ratio is worse than an extra sheet of paper.

The small thing that matters locally

Currency is formatted the way it is actually written in this market, with the separator, the placement and the abbreviation correct. Getting that wrong is a detail no one thanks you for and everybody notices.

The outcome

A branded offer builder in Macedonian producing a shareable web offer and a print-exact PDF, with sequential numbering, three-level discount cascading verified against an independent implementation, archiving, and notifications when a client responds.

Describe the symptom. I will tell you what it usually means.

Every enquiry gets a reply within one working day.