5 min readAnalyticsCase study

31% of calls missing from reports: how sales oversight breaks

Every evening the owner received a summary of how the sales team had performed. The summary lied: a third of the conversations were missing from it, and one segment was inflated threefold. The cause was a single line of code.

The company had call analysis in place: recordings from the phone system were transcribed, a language model scored every conversation against the sales team criteria, and in the evening the owner received a per-manager summary. It all looked convincing — figures, percentages, trends.

Until we counted. Over two weeks the phone system logged 1,473 calls. The reports covered 1,014. The remaining 459 — 31 per cent — were not counted anywhere.

Where the calls went missing from sales oversight

The manager in each report was identified by the operator name coming out of the phone system. The code matched it with a regular expression: if the name contains "Ivan" it is Ivan, if it contains "Andrey" it is Andrey.

That works right up to the first mismatch. And in the phone system operators are named however people felt like: "Green", "Purple (classifieds + WhatsApp)", "Blue", "Personal phone — Vladimir". Such names match no pattern at all, so those calls were simply assigned to nobody.

Worse: three months earlier the company had renumbered its internal extensions and renamed the operators at the same time. Name matching broke at that moment — silently, without a single error in the logs. The reports kept arriving every evening and kept looking fine.

And a second error next to it

A separate rule counted all traffic from one phone exchange as wholesale. Checking against the data showed it belonged to a different division entirely: the customer bases overlapped by one per cent, callers matched to counterparties in 0.1 per cent of cases against 15 per cent for their own, and the inbound lines were registered in another city.

Because of that rule the wholesale segment in the reports was inflated almost threefold. Decisions about where to point the sales team were being made on those numbers.

What we changed

  • The manager is identified by the internal extension, not by the name. An extension is a technical key that survives renaming; the name is now only a fallback.
  • The key accounts for scope: the same extension on a different exchange belongs to a different person.
  • The faulty "whole exchange equals wholesale" rule was removed without losing the data — a separate filter by division took its place.

The change that matters most is inside the report

Every summary now carries a reconciliation line: how many calls there were in total, how many were attributed to managers, how many fell out, and for which operators. It takes one line and changes what the report fundamentally is.

A report that cannot tell you what is missing from it looks credible no matter how much data it loses.

Now a new operator or the next renumbering shows up the same evening, rather than three months later during a chance inspection.

How to check your own reports

Ask your contractor or your own analyst a single question: how many rows were in the source, and how many made it into the report. If there is no answer, the numbers in that report cannot be trusted, however good it looks.

Business process automation: what to automate first and what pays back fastestBusiness automation usually starts from the wrong end: a company commissions a good-looking dashboard while the money keeps leaking out of how enquiries are handled. Here is the test for choosing the first process, and the three that turn out to be worth it almost every time.Analytics not working: a counter that never recorded a single visitAnalytics was installed, the code was in place, no errors in the console. And not one visit in the statistics. The cause was a single line that made the browser replace the counter function with a script tag.