Case Study 14Commercial model · BPO & outsourcers
Paying for QA You Did Not Receive: The Commercial Gap
Two procurement frictions kill contact-centre QA deals independently of the product: volume is unpredictable, and failed jobs still bill. This case study is about metering per call, gating before submission, and refunding automatically — and why that is more engineering than a subscription.
- Prepaid
- minutes, metered per call
- Before
- when the balance is checked
- Automatic
- refund rows for failed jobs
- Append-only
- the ledger behind the balance
Key findings
- Volume is unpredictable. A per-seat annual licence prices the peak and is dead weight in the trough, which is why outsourcers resist the standard SaaS model.
- When a recording is corrupt or a job crashes, the customer has usually still paid for it. The amounts are small; the erosion of trust is not.
- The balance check happens before submission and the debit before the job runs, so an overrun cannot surprise you after the fact.
- Usage billing needs a real ledger, a real balance and a real refund path — more engineering than a subscription, and invisible in a demo.
Two frictions that have nothing to do with the product
A call-QA evaluation can be won on every technical axis and still die in procurement, for two reasons that are entirely commercial.
Volume is unpredictable. BPO call volume swings with campaigns, seasons and client wins — sometimes by a factor of three inside a quarter. A per-seat annual licence has to be priced at the peak, which makes it dead weight through every trough. Outsourcers, who are the natural buyer for call QA, resist the standard SaaS model for exactly this reason, and they are right to.
Failures still bill. A recording is corrupt. A job crashes. A file turns out to be four seconds of hold music rather than a call. In most systems the customer has still paid for it, because the meter runs on submission rather than on delivery.
The amounts involved are trivial — a few rupees. The erosion of trust is not, because the customer now knows the meter is not measuring what the invoice says it measures, and they will assume that is true at larger scales too.
Nobody cancels over ninety rupees. They cancel over what ninety rupees told them about the billing model.
Why it stays unsolved
Because usage billing done properly is more engineering than a subscription, and none of it is visible in a demo.
A subscription needs a plan and a renewal date. Metered billing needs a real ledger, a real balance, a real gate, a real refund path, dispute handling, and enough consistency that the number on the invoice can be reconstructed from first principles months later. That is a system, and it competes for roadmap against features a prospect can actually see.
So most vendors ship a subscription, or a meter without a refund path, and handle the rest with credits issued by a support agent when somebody complains.
What we changed: gate before submission, refund automatically
Prepaid minutes, metered per call, with a hard gate.
The gate runs before anything is submitted, in this order:
audioLengthMinutes = audioLength / 60000
if (balanceMinutes < audioLengthMinutes):
mark 'Insufficient Balance'
→ record the job in the failed-jobs table
→ stop
else: debit the balance
→ submit the job
Two properties follow from that ordering, and both are the point:
The balance check happens before submission, and the debit happens before the job runs. A customer can never be surprised by an overrun, because there is no window in which work is in flight that has not already been paid for.
Rejected calls are recorded rather than dropped. A call that could not be processed for lack of balance is a row in a table, not a silence. This matters more than it sounds: it means the coverage claim in The 5% Illusion survives contact with the commercial layer. The one place a call is not processed is this gate, and even that is written down.
Failed jobs that are refund-eligible write a refund row back to the ledger automatically. Not on request. Not after a support conversation.
You pay for calls that made it through, not for attempts.
The ledger underneath
- Append-only, denominated in both minutes and money. Balance is derived from the ledger rather than stored as a mutable field, so it can always be reconstructed and reconciled. A balance you can only read is a balance you cannot audit.
- Daily ledger with per-transaction drill-down, invoices with a pay link, and a Raise Dispute path on individual invoice lines that routes to billing with the context attached — rather than an email thread that starts from nothing.
- Processing limits — minimum duration, maximum duration, percentage processed — so a bulk backfill or an accidentally duplicated folder scan cannot consume a month of minutes overnight. This is the control that turns “metered” from a risk into a setting.
- Card capture, subscriptions, low-balance invoicing and top-up webhooks handled by Stripe rather than by us.
The system knows its own unit economics
Per-job compute cost is computed from infrastructure events, so the platform can say what a single call cost to process.
That is not a customer-facing feature and it is worth mentioning anyway, because a vendor who cannot price a single unit of their own delivery is a vendor whose pricing will move unpredictably once you are large enough to notice.
The commercial shape
Pricing starts from a floor of ₹0.75 per audited minute, with tiers above it for floors at different volumes.
The model is deliberately usage-shaped rather than seat-shaped: you are buying audited minutes, the meter runs on delivery, and the balance is prepaid so that neither side is extending credit to the other.
What we do not claim
We do not claim every failure is refunded. Refunds are automatic for the refund-eligible failure classes. A file that was never a call still consumed the work of finding that out, and there are edge cases the classifier does not cover — which is what the dispute path on each invoice line is for.
We do not claim metered is cheaper. For a floor with genuinely flat volume, a fixed subscription may well cost less, and you should model both. Metered is fairer, and fairness and cheapness are different arguments.
We do not claim you can leave the meter unattended. The processing limits exist because bulk operations can be expensive, and setting them is a real step during onboarding rather than a default that suits everyone.
Where to start
Look at your last twelve months of call volume by month, not by year. The ratio between your highest month and your lowest is the number that decides whether seat-based pricing is quietly costing you.
If that ratio is above about 1.5, per-seat licensing is charging you for capacity you did not use in most months of the year.
Book a demo and we will walk you through the ledger, the gate and how a refund row is written.
Related: The 5% Illusion on the coverage the gate is the single exception to, and Software That Needs a Team You Do Not Have on what the minutes actually buy.
Curious what is in the 95% you never hear?
Book a demo and we will walk you through the platform — how the reviews work, what the reports contain, and how the evidence trail is built.
Book a Demo