Most companies do not need a new system. They need to know where the current one stops being enough. Below are the five levels we meet most often — what each does well, where it breaks, and how to tell you have outgrown it. Under them is a list of the specific things we build with them.
Power Query ships with Excel and does more than most people realise: it pulls data from several files and systems and cleans it through steps that replay on one click. If somebody stitches five exports together by hand every month, this is the answer — and it costs nothing.
The file sits on somebody's drive. Two people cannot work in it at once without conflicts, there is no history of who changed what, and a wrong number is hard to trace back. Past a few hundred thousand rows it gets slow.
When one file is referred to as "the main one". When it circulates by e-mail with a version number in its name. Or when its author leaves and nobody knows how it works.
A model over data from several systems that refreshes itself and computes the metrics in one place. The value is not the charts — it is that "margin" means the same thing to sales and to production, because it is defined once. Permissions can be set so a salesperson sees their own customers and the director sees all of them, from the same report.
It reads, it does not write. You cannot correct a wrong record in it, and whatever is wrong at the source it will show you faster and in better colours. Licences are per user, so "let everybody see it" is a decision with a price tag.
When people export from the report into Excel so they can work with it — that means they need to enter data, not only read it. Or when the same question has two answers depending on who opened the report.
If you already pay for Microsoft 365, you have paid for the automation too. Power Automate connects Outlook, SharePoint, Teams and Excel: approvals, alerts, filing attachments, moving data between files. SharePoint gives documents one home and a version history.
More complex logic is assembled by clicking and stops being readable quickly. Finding a fault in a long flow is unpleasant, and connecting to a database or an outside API means premium connectors, which a standard Microsoft 365 licence does not include — they are paid for per user. Performance wobbles at larger volumes.
When a flow runs past twenty steps. When nobody but its author can fix it. Or when waiting for it to finish takes longer than doing the thing by hand.
Finished software for a common problem — CRM, helpdesk, attendance, warehouse. Live in days, price known upfront, somebody else develops and fixes it. For a standard process it is almost always cheaper than anything custom.
It covers most of what you need, not all of it. The rest is either bent into the shape the system allows or done beside it in a spreadsheet — which puts you back where you started. Getting your data back out tends to be harder than the website implied.
When half the company uses three screens out of thirty. When a spreadsheet has grown up beside the system and nothing works without it. Or when the annual licence approaches the cost of building your own.
Built around your process and connected to what you already run. Nothing extra, nothing missing. The data stays yours, permissions are enforced at database level, and the system grows with the company rather than against it.
It costs more time and money than everything above it, and somebody has to keep running it. It makes no sense for a process that will be unrecognisable in a year, or for something an off-the-shelf product handles.
Here the question is not when you outgrow it but when it makes sense: when that process is what makes you different from competitors, when the manual work around it costs more than the development, or when it carries numbers a bank — or an eventual buyer — has to believe.
The things we most often actually build with these tools. Each one comes with its catch — the thing that decides whether it is a week of work or a quarter. It is almost never the technology.
Spend broken down by supplier, category and cost centre over the last 24 months. An export of purchase order or supplier invoice headers and lines from the ERP is enough. It usually turns up a long tail of small suppliers nobody knew about, and a few categories bought outside the framework agreements.
Match suppliers on their company number, not their name — otherwise "Kovo s.r.o." and "KOVO s. r. o." come out as two firms and the totals cannot be defended. Half a day of cleaning is the difference between a chart and a decision.
The same item bought in different months, or from different suppliers, at different unit prices. It shows where a price crept up quietly and where buying happens outside the agreed terms. You need invoice lines with an item code, quantity and price.
Units. Half the work is reconciling pieces, packs and kilograms onto a common basis; without it you are comparing things that are not comparable, and the first objection from procurement sinks the report.
Confirmed date against actual goods receipt, by supplier and over time. It is the strongest negotiating material you can build from data you already hold — the purchase order and the receipt are enough.
The confirmed date has to be recorded somewhere. If it lives only in e-mail, start by recording it; there is nothing to compute until then.
Time between order states, from intake to dispatch. It does not show who is slow — it shows where things wait, and what they wait for is almost always a decision or a document, not a machine.
If states get entered in a batch at the end of a shift, you are measuring the data entry, not the production. Check a single week against reality before building anything on it.
Complaints and non-conformities by product, customer, shift and material supplier. It answers whether the problem is the material, the people or the brief — and the answer is usually not the one the company expected.
A free-text "reason" field is dead for analysis. You need a list of ten options people will actually use, not a hundred they will work around.
Real margin after material, recorded labour and freight, by order and by customer. It typically surfaces customers who look good by revenue and are not by margin.
Overheads. Either they are allocated on one basis agreed in advance, or they are left out and that is said out loud. What cannot be defended stops being used.
Receivables ageing and average collection time by customer and by salesperson, with an alert when a limit is passed. From the ledger that is already in your accounting.
This is the cheapest useful report you can have, and most companies do not have it. The real work is not the calculation — it is agreeing who picks up the phone because of it.
Turnover by item, stock with no movement, and above all how much money is sitting in it. From stock movements, current levels and purchase prices.
A "no movement in 12 months" filter is trivial. The hard part is deciding what to do — write off, discount, or keep. We can produce the number; the decision is yours, and without it the report is just a reproach.
An order above a threshold goes for approval in Teams or by e-mail, with a deadline and escalation to a deputy. The audit trail writes itself, so nobody has to reconstruct who agreed to what.
Set the threshold so that a few per cent of orders go through approval, not half of them. Adding an approval step to something that ran smoothly is the fastest way to turn people against automation.
Automatic comparison of the three documents: what was ordered, what arrived, what is being invoiced. A person handles only the discrepancies, not every document.
Tolerances. Without a sensible tolerance for rounding and freight you get an exception on every invoice — and once people start clicking exceptions away unread, it is worse than where you began.
An attachment from an e-mail is filed into the folder for its order number, renamed by a rule, and a link is written back against the order. No more hunting for a delivery note in somebody else's mailbox.
It works only when the order number is in the subject line or the file name. Agree that format with people before it is built, not after.
Certificates, inspections, contract ends, warranties and training — alerts raised in advance and addressed to a named person, not to a shared mailbox.
Every date needs an owner. An alert with no addressee goes nowhere, and within three months everyone has filtered it away.
Not everything is a job for a supplier. Anyone inside the company who sets aside an afternoon can do these, and they usually save the most. We will keep adding to the list.
If you join the same exports every month, record the steps once as a query. Next time, Refresh is enough. The time saved is measured in hours a month and you need nobody from outside for it.
Documents on shared storage with version history, instead of attachments in e-mail. It settles "which version is the valid one" more cheaply than any system — and it is the precondition for everything else.
Contracts, quotes and reports as templates, not as a copy of last year's document with the numbers overwritten. That is the route by which errors nobody looks for get into documents.
Wherever a reason, a category or a state is typed in by hand today, make it a list of ten options. It is ten minutes of work, and it is the difference between data you can compute something from and a column you can only read.
Pick three things only a single person in the company can do and have them write each one up — half a page is enough: what gets done, in what, and what breaks when it is done wrong. This is not bureaucracy. It is the only defence against a holiday or a resignation stopping the operation — and if the process is ever automated, this is the brief.
If this is all you need, do not call us. Our interest is in your company working, not in you buying a system.
And how many hours sit in them. We walk through your operation, pick three concrete processes and work out the time and money tied up in each. Free, no obligation.