EMERMEDIA
Back to case studies
Services

Service quote generator on an existing spreadsheet

Client
Service company, HUF 9bn revenue (anonymised)
Company size
25+ employees

The client

A Hungarian service company that handles the ongoing operation of technical equipment across dozens of sites. Operating contracts are not uniform: every customer gets a different bundle of services, at a different frequency, with a different task list. Quoting therefore does not come off a price list — it comes off a task matrix where eighty-three types of work can be switched on and off. The company name is not published.

The starting point

Quotes had worked for years — on a formula chain nobody dared touch any more.

Data moved from the task matrix into a second workbook, where a sheet holding 306,000 formulas turned it into logical values, and then a 105-row sheet of hand-wired references assembled the quote text, from which a PDF was produced.

That chain made three things impossible:

  • A new type of work could not be added. The references were tied to position — to specific cells and column letters. One inserted column shifted everything, and not only in the quote: also in the contract and invoicing tracking built on top of it.
  • The logic was not inspectable. The only way to find out why a given task appeared in a quote was for someone to reverse-engineer a formula.
  • It could not take row growth. Every new quote made the chain heavier.

The measurable consequence: roughly 45 minutes of manual work per quote, and the same risk every time — a missing type of work, wrong data from a shifted reference, a collapsed formula.

There was a quieter problem too. Reviewing the data behind 191 previously issued quotes showed that the sub-item formulas had eroded over time: wherever someone had once overwritten a cell by hand, the formula was gone for good, and from then on that sub-item was silently missing from the quotes. This does not announce itself with an error message. It announces itself as the customer receiving less than they are paying for.

The solution

Not new software. It runs on the company's existing Google account, in the same spreadsheet the operations team already works in.

  1. A single work catalogue. All eighty-five work items — with identifiers, hierarchy, customer-facing wording and units — moved onto one sheet. This is the single source of the quote text, and the only place a new type of work has to be entered. Previously the same task was described in two places, under two names.

  2. References broke free of position. Every matrix column got a stable text identifier, and the formulas look that up rather than counting columns. From that point on, inserting, reordering or appending a column is safe.

  3. A form instead of a formula chain. The person preparing the quote gets a web form, pre-filled from the spreadsheet. They switch services on and off, enter prices, and where needed expand a main task and adjust its sub-items one by one.

  4. A manual edit does not overwrite master data. Whatever is changed on the form goes onto a separate sheet, keyed by quote ID, with a timestamp and a name. The main table stays untouched, while the change stays traceable and comes back on the next quote.

  5. A branded PDF at one click. The quote is generated from a template, in the company's colours and typefaces, in the familiar order and numbering. The template is a separate file, so tuning the look does not require a code change.

  6. The numbering leaves no gaps. Counters advance only on the items that are switched on, so skipped tasks do not leave holes in the list — exactly as in the old quotes.

  7. The finished PDF links back into the table. Where there is a link, a quote has been generated. No separate status column is needed.

The evidence for the migration

The old and the new calculation produced zero deviation. Before the rewrite, a full snapshot was taken of every sheet in the workbook — values and formulas separately — and after the rewrite, contract tracking and task counting were measured back against it, site by site. There was not a single deviation.

That is not a detail. In a migration like this the real risk is not that the system falls over — it is that it works and returns the wrong number, and this surfaces months later, at invoicing.

Outcome

About 45 minutes of manual work disappeared per quote. Assembling a quote is filling in a form; the PDF is one click.

The spreadsheet can finally be extended. Adding a new type of work is now one row in the catalogue. Previously that operation also endangered contract and invoicing tracking, which made it effectively forbidden.

What is in a quote is visible in one place. It no longer has to be reverse-engineered from a formula.

Silent failures became visible. Eroded sub-item formulas can be mapped and restored, because the catalogue states what ought to be there.

Where else this works

The solution is not built on the client's industry. It is built on the situation where a spreadsheet that grew over years has started to limit how the company operates — not because it is bad, but because nobody dares touch it.

That situation looks the same everywhere:

  • Maintenance and facility services — where the contract is a task list and every customer's is different.
  • Manufacturing — where the configuration matrix has outgrown the pricing.
  • Healthcare and laboratory services — where test packages are assembled from line items.
  • Any company where one spreadsheet serves at once as pricing, document source and register.

The recognisable symptoms: "don't touch that tab", one colleague who alone understands the formula, and a new service that is not launched because it would not fit in the spreadsheet.

There is one precondition: take a snapshot before touching anything. Without it there is nothing to measure back against, and no way to state that the migration broke nothing.

Running it

The system runs on the company's own Google account, with no separate software licence. The work catalogue, the prices and the document template are maintained by the company itself — developer involvement is needed when the logic changes, not when a wording or a price does.

Previously issued quotes were left untouched.


This case study is based on a real system, anonymised. The 45 minutes per quote is the client's own estimate of the previous process, not a measured figure.

Similar situation at your company?

Book a no-commitment 30-minute discovery call — we'll see if the lesson can be mapped to your processes.

Book a no-commitment call