The problem

For a cloud assistant, every promise about privacy runs against the company's own interest. The cheapest path to serve is the one that keeps your data, the product improves when it keeps more, and the user is asked to trust a policy that can be revised without shipping any code.

I did not want to write a better policy. I wanted an arrangement where the promise survives the company changing its mind.

The decision

Run the model on the phone by default, and price accordingly.

The incentive lands the right way round. The cheapest thing for the user is the private thing, and the company only earns when it does the expensive one.

Making the guarantee mechanical

A free tier that "makes no network calls" is a claim about every line of code in the binary, including code nobody on the team wrote. So it is asserted by a test, not by a review.

The receipt is the piece I would keep if I could keep only one. It costs one stored string per message and it converts the category's standard unfalsifiable promise into something a suspicious user can check for themselves, indefinitely, without trusting me.

What is not true yet. There is no automatic content-sensitivity routing: which path a message takes is a setting the user chooses, so "it escalates to the cloud when it needs to" has no answer today. And if the anonymizer times out, the raw text goes to a deterministic scrub and that output ships, so "only a rewrite is ever sent" is true most of the time rather than always. The app is pre-launch and has not been released.

What I would do differently

← All case studies