Activation inside an AI assistant
An assistant is not a display. There is no audience there, only one conversation with one person. Sending a list means disclosing it to the platform — so send a small signed function instead, and let it answer yes or no where the person already is.
// The whole artefact. No households, no identifiers, no list. { "predicate_id": "pr-5c81f0a7", "issued_by": "Meridian Markets", // the data owner signs, not us "on_behalf_of": "Northfield", "code_sha256": "3f17ba…c042", // the evaluator checks this before running "reads_locally": [ // what it may look at, on device "basket_in_progress.categories", "stated_dietary_constraints", "household_size_band" ], "never_reads": ["identity", "history", "location"], "returns": { "eligible": "boolean", "offer_id": "string|null" }, "constraints": { "max_impressions_per_person": 2, "valid_until": "2026-11-27T00:00:00Z", "must_disclose_as": "sponsored", // non-negotiable, enforced by the evaluator "no_result_phoned_home": true // the answer never leaves the device }, "signature": { "alg": "ed25519", "by": "meridian-markets", "sig": "9a4e…71bd" } }
| Send the list | Send the predicate | |
|---|---|---|
| What the platform receives | Hashed contacts for every household in the audience | A 2 KB function and a signature |
| What the platform can infer | Which of its users shop at that retailer, and roughly what they buy | Nothing about the audience; for one user, only the answer it asked for |
| Who learns the audience size | The platform, exactly | Nobody, including us |
| If the platform is breached | The audience is in the breach | A function with no data in it is in the breach |
| Freshness | Stale from the moment it is sent; re-upload to refresh | Evaluates against what is true in the conversation right now |
| Frequency control | Platform-side, on the platform's honour | In the artefact, enforced before the offer renders |
| Revocation | Request deletion and hope | Expiry is in the signature; after it, the predicate simply stops answering |
Demonstration of a design, not of a running system. The conversation above is simulated; the predicate shown is a specification we have written, not a format anyone has adopted. The measurement capabilities on the rest of this site are a different matter and are described there with their own status.