Complaint handling as a ready-made computational model
The template ships with FlowVisual: five steps from the incoming complaint to the credit note, with volumes, ranges, capacities and rates already filled in. It is the case where the stress test argues against the obvious measure, because the limiting step is not inside your company.
The complaint handling template covers the path from an incoming complaint to the credit note in five steps: log the complaint, internal check, clarification with the supplier, decision, credit or replacement. It is set up for 1,900 cases a year, about 7.6 on a working day. Across 20,000 stress-test runs, clarification with the supplier is the binding constraint in 94 % of runs, the decision in 5 %, the internal check in 1 %. The decisive point is that this step sits outside the company. Automating every internal step brings working time per case down from roughly €40 to €25 in the model, but lead time on a busy day only from 5.62 to 5.58 working days. The saving is real, the speed promise is not.
85min
Sum of all five steps per case, 44 of them at the supplier.
0.2 → 5.6days
Normal day against busy day.
94%
And it sits outside the company.
6
Order handling, quotation, invoice approval, complaints, onboarding, IT ticket.
What is in the template
The figures come from an example model, not from a client engagement. They are chosen to match a mid-sized trading or industrial business. A starting point, not a benchmark.
Inflow: 1,900 complaints a year, about 7.6 on a working day, with a day-to-day variation of 28 % and a peak factor of 1.3 on 7 % of days.
| Step | Role | Processing | Capacity | Load, avg. | Load on a busy day |
|---|---|---|---|---|---|
| 01 Log complaint | Customer service | 6–14 min | 20/day | 39 % | 55 % |
| 02 Internal check | Quality assurance | 6–13 min | 16/day | 49 % | 69 % |
| 03 Clarify with supplier | Supplier (external) | 30–60 min | 1 channel × 7.5 h → 9.0/day | 87 % | 133 % |
| 04 Decision | Quality assurance | 8–18 min | 15/day | 53 % | 74 % |
| 05 Credit / replacement | Accounting | 6–14 min | 22/day | 35 % | 49 % |
Step 03 carries an hourly rate of €0 in the template. That is not an oversight, it is somebody else's working time. It costs you no payroll. It costs you lead time, all of it.
The decisive finding. Constraint probability per step, across 20,000 runs:
| Step | Constraint probability | Days over capacity |
|---|---|---|
| 01 Log complaint | 0 % | 0 % |
| 02 Internal check | 1 % | 1 % |
| 03 Clarify with supplier | 94 % | 29 % |
| 04 Decision | 5 % | 1 % |
| 05 Credit / replacement | 0 % | 0 % |
The column adds up to 100 %: each run counts exactly one binding step, the one carrying the highest load that day. On 94 days out of 100, that is clarification with the supplier.
Of the 85 minutes of processing per case, 44 fall on that single step, and none of them are yours. More than half of this process belongs to somebody you do not manage.
The six numbers you replace
Everything else can stay. Adapting more does not improve the result; it only delays the meeting.
- Complaints per working day. Last year's cases ÷ working days. The ticketing system has it, or the credit-note report does.
- Peak factor. Complaints rarely arrive evenly: a bad batch, a change of supplier, a season. A factor of 1.3 to 1.8 is common. Without it you are computing a process that is never under load.
- Throughput of the supplier clarification. The most important number in the template, and the only one you have to estimate rather than measure. How many cases does your supplier clear in a day when several are waiting? Not how long a single clarification takes, which is a different thing and goes in at number four.
- The processing range for the clarification. Low end and high end. External steps have wide ranges, and the width is the driver: variation enters waiting time quadratically, the average only linearly.
- The share of cases that go to the supplier at all. In the template it is all of them. If some are decided in house, enter a decision with a routing share. That is the lever section 03 identifies as the strongest.
- Fully loaded rates per role. Gross salary × 1.5 to 1.8, divided by roughly 1,500 productive hours a year. Leave the external step at €0. Otherwise you are booking somebody else's working time as your cost, and the statement in money falls apart.
Cross-check before you compute: count the complaints open today and divide by the cases you close in a day (Little's Law). If that lands near your known lead time, the model is usable.
What the template does not contain. Lead time here is processing plus queueing, in working days. A contractual response window ("the supplier replies within five working days") is calendar time, not capacity. If you have one, enter it as its own waiting step; otherwise the model runs faster than the customer experiences it.
Four levers, computed one at a time, one of them a null result
Change only one lever per run. The four runs below use the same template with exactly one input changed each time.
| Lever | Lead time P90 | Clarification load, busy day | Working time per case | Constraint stays at 03 |
|---|---|---|---|---|
| Template as shipped | 5.62 days | 133 % | €40.33 | 94 % |
| 1 Every internal step automated | 5.58 days | 133 % | €25.45 | 94 % |
| 2 Clarification tightened (30–60 → 20–40 min) | 0.25 days | 89 % | €40.33 | 58 % |
| 3 A second channel / escalation route | 1.05 days | 102 % | €40.33 | 76 % |
| 4 Internal check relieved (takt 16 → 24) | 5.59 days | 133 % | €40.33 | 95 % |
Lever 1. Automate every internal step. A portal instead of the phone at intake, a rule-based internal check, an automatic credit note. Working time per case falls from €40.33 to €25.45 in the model, down 37 %. Lead time on a busy day falls from 5.62 to 5.58 working days, down 0.7 %.
Both statements are true, and the gap between them is the reason this template exists. The saving is real; the speed promise in the proposal is not. Measure the project on lead time (and the business will, because that is what it complains about) and you get a technically successful project that lands as a disappointment.
Whether the 37 % becomes money is a second question: throughput is still capped at the supplier. The same volume gets handled, only more cheaply.
Lever 2. Shorten the clarification itself. Not chasing faster, but chasing differently: batched clarifications instead of case by case, a complete document set on the first attempt, one named contact. That pulls the range from 30–60 down to 20–40 minutes, and the P90 of lead time from 5.62 to 0.25 days. The only lever in this table that genuinely moves lead time is the one on the external step.
Lever 3. A second channel or an escalation route. A second route to the supplier for cases above a value threshold. It works (5.62 → 1.05 days), but it depends on the other party playing along, the one quantity in this model you do not control.
Lever 4. Relieve the internal check. The null result. The internal check sits at 69 % on a busy day and therefore looks like the second candidate. Raise its takt by half and lead time moves by 0.03 days, while the supplier step's constraint probability rises from 94 % to 95 %. It was never the problem. It was only standing next to it.
So the honest recommendation of this template is not "automate". It is: compute first whether the measure lands where the process actually stalls. That takes twenty minutes and decides an investment.
Why a constraint probability of 94 % does not budge under automation, and actually rises to 95 % when you relieve the wrong step, is covered in Monte Carlo simulation for processes. How to read utilisation at all, in How to calculate a bottleneck.
What ends up on paper
After saving the baseline, changing one lever and running a second time, the comparison produces:
- Lead time before/after as P50 and P90. For this template the comparison is the result: lever 1 moves the P90 by 0.04 days, lever 2 by 5.4.
- Utilisation per step on the busy day and the constraint afterwards. It stays where it was under three of the four levers. That too is a finding, and the most expensive one you can have before an investment.
- Throughput as cases per week against cases arriving: 35.6 of 38 as shipped.
- Working-time cost per case and per year, from volumes, durations and fully loaded rates, with the external step at €0, so that somebody else's time does not appear as your cost.
- The assumption list with every estimated input, stated. For this template above all the supplier's throughput: the one number in the model you cannot measure.
That is exported as two PDFs: a proposal for the decision maker and documentation for traceability, with your letterhead if you have set one. The "Reviewed options" page names the variant that is not worth doing, explicitly.
One model, two questions. This page answers the arithmetic one: where the 94 % comes from and why an internal measure does not move it. The other question (what would you recommend here, and what does doing nothing cost) belongs to the method rather than the tool. It lives next door in the Flowrefy analysis archive, alongside the approach these templates came out of. One dataset, two questions, two audiences.
The other templates
Six models ship with the app. All follow the same pattern: structure complete, figures typical, six values to adapt, exactly one clear constraint.
- Order handling runs from the order to the confirmation. The case with a shared role: two steps that look comfortable on their own are one person's afternoon.
- Quotation process is the case where lead time acts on revenue rather than on cost.
- Invoice approval is the volatility case: under capacity on average, over it at month end.
- Complaint handling is this page.
- Employee onboarding has low volume and many participants, with one step that binds 86 % of runs.
- IT ticket shows classic queueing behaviour with a branch: 65 % solved on the spot, 35 % escalated to second level.
Every template opens from the welcome window via Browse templates. The first time round it is worth opening one before starting your own model. Otherwise people build too finely.
- Included in
- FlowVisual for macOS 13+ and Windows 10/11, in the welcome window under “Browse templates”
- Scope
- 5 steps, arrivals with variation and a peak factor, capacities, processing ranges, roles, systems, cost rates, an outage assumption per step
- To adapt
- Cases/day, peak factor, supplier clarification throughput, clarification range, share of external cases, hourly rates
- Computed with
- 20,000 runs, seed 42. The app defaults to 400. The median holds, the P90 moves by a few per cent
- Typical finding
- The constraint sits outside the company (94 %); internal automation cuts cost, not lead time
- Provenance of figures
- Example model, no client data. Labelled as such inside the template
Frequently asked
Are the template figures real client data?
No. They are example values matching the orders of magnitude of a mid-sized trading or industrial business, and the template labels them as such. Their purpose is that a model runs immediately. They should be replaced by your own six numbers.
Why does the supplier step carry an hourly rate of zero?
Because it is somebody else's working time. It never appears on your payroll, so it must not appear in your process costing either. Otherwise you compute a saving that was never in your account. What the step does cost you is lead time, and the simulation reports that separately. If purchasing actively drives the clarification in your organisation, enter their time as its own step rather than raising the rate.
So automation achieves nothing in this process?
It does, but not what is usually promised. In the model, working time per case falls from roughly €40 to €25, a 37 % cut. Lead time on a busy day falls by 0.7 %, because the limiting step sits outside the company and the measure never touches it. Justify the investment with cost per case and you have a business case. Justify it with “faster for the customer” and you do not.
How do I estimate the throughput of a supplier I cannot measure?
Not from a single case, but from the backlog. Count how many of your cases are sitting with the supplier right now, and how many clarifications came back last week. The ratio is your waiting time, and returns ÷ working days gives you the throughput. Enter it as a range rather than a point value. For external steps the range is the more honest statement, and the simulation can work with one.
Some of our cases never reach the supplier. Can that be modelled?
Yes, with a decision and a routing share, and it is the strongest lever in this model. If only half the cases pass through the external step, its demand halves, and with it the load that caps the whole process. What decides the share is usually a value threshold or a defect class, not the individual case.
Do I need the template at all, or can I start straight away?
You can start straight away. Experience says the first model people build is too fine (thirty steps instead of five), and the extra detail costs input time without moving the constraint. Thirty seconds in a finished template saves that.
Open the template and enter your six numbers
Download FlowVisual, choose “Browse templates” in the welcome window, open complaint handling. Modelling and stress testing cost nothing.
Guide: seven steps to the number- Method
How to calculate a bottleneck: why 85 % utilisation is already too much
The bottleneck is not the longest step, it is the step with the highest utilisation. And waiting time does not grow linearly with utilisation. It explodes just before the limit. The maths behind it fits on one page.
Read - Method
Monte Carlo simulation for business processes: what it does and when it lies
Monte Carlo is not a magic word, it is systematic dice-rolling: the same process, hundreds of times, with different random draws each time. What comes out is not a number but a distribution. That is the whole point.
Read - Method
Process costs in Excel: four mistakes that sink any business case
Nearly every business case for process improvement is built in Excel. And nearly every one contains the same four mistakes, not through carelessness, but because a spreadsheet structurally cannot represent certain things.
Read