Blog

Why we took voice calling off the cloud

We had it working as hosted software. We moved it onto the customer's own PC anyway, and it cost us something real.

Last updated 13 September 2026

← All posts

At the end of August we had AI voice calling working end to end in a hosted product. Real campaigns, real Indian numbers, transcripts coming back, outcomes landing in a database. Between 27 and 29 August it went from an integration to a thing that actually placed calls.

On 30 August we started porting it out of the cloud and into a Windows desktop app.

The reason is one sentence an agency says

Our buyers are agencies and freelancers, and a large part of what an agency calls is not its own list. It is a client's list. Somebody handed them four hundred phone numbers belonging to their customers and expects them to be handled properly.

Every hosted lead tool asks that agency to upload those numbers to a vendor's servers before anything can happen. It is a completely normal thing to ask and most people do it without blinking. But it is also an objection you cannot fully answer, because the honest response is that yes, the client's customer list is now on somebody else's machine, governed by a privacy policy that can change on a Tuesday.

"It never enters a vendor's database" is not a policy we wrote. It is a shape the software has. That was worth rebuilding for.

What that actually means in the code

The lead index, the lists, the CRM, the notes, the transcripts, the call insights: one DuckDB file on the customer's own PC. API keys live in Windows Credential Manager, not in the database. Call summaries and pitch rehearsal run on a model installed on that machine, so transcripts are never sent anywhere to be read by a language model.

Three things leave, and only three. A licence check. Opt in telemetry that carries counts and never content. And the calls themselves, which go to the customer's own Sarvam account, on their own key, billed to them directly, with no markup from us.

That last point is the one people miss. We are not reselling voice minutes with a margin on top. We never see the invoice. It means we make nothing when a customer calls more, which sounds like bad business until you notice it also means we have no reason to encourage a customer to call more than they should.

What it costs, honestly

Being installed rather than hosted has a real price and it is paid at exactly the wrong moment: the beginning.

A hosted competitor puts a button on their homepage that talks back in ten seconds. Ours asked you to download an installer, click past a Windows warning, create a Sarvam account, wait out an identity check, rent a phone number, paste a code snippet, and buy a licence. Days, against ten seconds, before you know whether the thing is any good.

We also carry compliance ourselves rather than inheriting it from a platform. Calls only go out between 9 AM and 9 PM IST, no number is tried more than three times a day, and anyone who asks to stop is suppressed automatically. Those are our rules to enforce on a machine we do not control.

What we did about the beginning

The setup is real work and no amount of design removes it. So instead of shortening it we moved it: you now hear the product before you do any of it.

There is a box on our homepage. Put your mobile number in, and the agent calls you within a few seconds, in under two minutes, with no install, no account and no setup. It runs on our Sarvam account, not yours, and it carries no lead data at all, because the only number involved is the one you just typed.

The total work is identical. The order is not. Before, we asked for a day of effort in exchange for a maybe. Now the proof comes first and the work comes second, and by then you know what you are working towards.


More notes from building this are on the blog, including a compliance bug we shipped and eight things Sarvam's docs do not tell you.