Most disputes are lost at the data preparation stage, long before anyone argues about interpretation. Three habits prevent that.
First, fix the measurement window before you look at the numbers. Two full quarters, aligned to the vendor's contract year, with the same site list on both sides. If a site was added mid-period, exclude it from both columns or pro-rate it in both. The cost-estimation literature is blunt about this: a business case should be modeled as a range with defined assumptions, not a single-point estimate, because inputs like usage and failure rates vary (AI business case cost components). Your reconciliation should follow the same rule: give the gap as a range where the underlying data is uncertain, and label which inputs are measured and which are estimated.
Second, separate eligibility from actual use. In the worked example above, the remote support gap might exist because remote support is available but rarely taken up, not because the vendor's estimate was wrong. The distinction between what is eligible for a service and what is actually adopted is one that benefit and capacity models insist on keeping separate (AI benefit worksheet), and it applies directly to maintenance scope: eligible-for-remote faults is a different number from faults actually handled remotely.
Third, automate the extraction. A quarterly reconciliation should be a query, not a project. Keep the category mapping in a configuration file and regenerate the comparison each quarter so you are looking at trends rather than reconstructing history:
# Illustrative extraction: total hours per category per quarter
# from a ticket export with columns: ticket_id, category, opened_at, closed_at, hours
awk -F',' 'NR>1 {q=$3; sub(/-.*/,"",q); key=$2","q; sum[key]+=$5}
END {for (k in sum) print k","sum[k]}' tickets.csv | sort
The exact tooling matters less than the discipline of a repeatable query with a written definition of each category. A comparison you can regenerate in minutes is one you can run every quarter, and quarterly cadence is what turns a one-off discrepancy into a defensible pattern.
One more data-quality point that catches people out: the vendor's assumptions annex changes between proposal versions, and your ticket categories drift as your team adds new fault codes. Record the baseline you compared against, and re-baseline deliberately rather than silently. A version-stamped baseline is the difference between "we measured a persistent gap" and "we think there was a gap at some point." Web-based evidence should be snapshotted at capture so a later reviewer can confirm the source still says what the record claims it says (source-backed decision records).
When the pattern is clear and the file is solid, the conversation with the vendor is straightforward and short. Where you need an independent read on the numbers, or a structured way to turn the reconciliation into a revised commercial model, that is a natural point to bring in specialist help, and a scoping conversation is often the fastest route: book a free 30-minute AI discovery call.