i.What we hold, and why
To run your business we process your orders, customers, parcels, ad spend, WhatsApp conversations and courier settlements — synced from the platforms you connect (Shopify, Meta, couriers, WhatsApp Business). We hold them for one reason: to compute the truth about your business and act only where you've allowed it. We do not sell data, rent it, or train shared models on it.
ii.Isolation — your brand is a walled room, not a row in a table
- Per-client database isolation. Each tenant's data lives behind its own isolation rails. The build itself is checked: a deploy that could leak across tenants fails to ship — the wall is enforced by the pipeline, not by promises.
- Every AI answer is scoped before it speaks. The system resolves your tenant, then answers — and echoes your brand's name into the answer, so an operator running several brands physically cannot be told the wrong brand's number without seeing the wrong name attached.
- Our own brand plays by the same rule. Elyscents is a tenant behind the same walls. We eat what we serve.
iii.What the AI can and cannot do
- It cannot write. Not by policy — by privilege. Every AI query against your business data runs inside a read-only database transaction. The credential the AI uses does not have the power to change your data, so a bad answer can never become a bad write.
- PII redaction is on by default for client tokens. Where a token doesn't need names and phones to answer a question, it doesn't get them.
- Customer content is fenced as untrusted. Anything a customer writes — a WhatsApp message, a review — is wrapped in an ⟦UNTRUSTED⟧ fence before the model ever sees it, so a message can't instruct the AI to do something you didn't.
- Sends are earned, never assumed. Agents that can message customers graduate market-by-market through shadow mode and test phones, under a shared frequency cap — and the safety net (SENTRY) has no send path in the code at all today.
iv.The audit log includes refusals
Every AI call your business answers — and every one it refuses — lands in an audit log you can read yourself: ok, error, refused, rate-limited, with the parameters trimmed but reconstructible. A log of only successful calls answers "what did it do". Yours also answers "what did it try" — and the second question is the one that matters.
v.Credentials and access
- Tokens are stored only as SHA-256 hashes. If our database were read, your tokens would not be in it.
- Human access is role-scoped. A rider, a packer, an agent and an owner see different numbers — the morning brief pushes each person only what their role is allowed to see.
- One revocation story. API tokens can be revoked from your settings, and revocation actually ends access — there aren't two token systems that disagree.
vi.Your customers' data
Your customers remain your customers. Their messages are used to serve them — confirmations, recoveries, support — and, where you've enabled it, to mine phrasing for creative. Our mining pipeline re-verifies every customer quote as a literal substring of the real message and deletes what it cannot prove; the rejected count is logged, not hidden.
vii.What we don't do
- No selling or renting of data — yours or your customers'.
- No blended benchmarks that leak one client's economics into another's screen.
- No dark patterns around deletion: ask, and your tenant's data is exported or destroyed.
viii.Talk to a human
Privacy questions, export or deletion requests, or a data-processing agreement for your legal team: [email protected]. A person answers — the same people who run Elyscents on this system every day.
The honest footnote. This page describes mechanisms, and mechanisms drift. We review it monthly against the code — the same standard we hold our tour to: if the code doesn't back a sentence, the sentence is a bug. Found one? Tell us and we'll fix the sentence or the system, whichever is wrong.