Security
A short technical note on how the parts that matter are built. It describes the system as it stands today.
Tokens for linked accounts
When a household links a third-party grocery account, the access and refresh tokens are written to a Postgres row scoped to that household. Row-level security is enabled on the table, and the policy admits only a server-side service role. Order placement runs server side under that role.
The API key embedded in the Android app and the companion app is the public, publishable key. It is subject to the same row-level security policies, and no policy grants it read access to the token table. Extracting the key from an app binary yields nothing that can read any household’s tokens.
Tokens are never written to logs, and they leave the server only in requests to the grocery service they belong to.
Payment
Orders are cash on delivery. The product has no payment screen, takes no card, bank, or UPI details, and stores no payment instrument of any kind. This is a property of the design rather than a policy layered on top of it.
Voice audio
Speech is streamed to a hosted recognition provider and converted to text. [PROVIDER NAME, AND WHETHER RETENTION AND TRAINING ARE DISABLED ON OUR ACCOUNT] Audio is not written to our own storage.
Confirmation before action
No order is placed on the strength of a transcription alone. The basket and the total are read back aloud, and the user has to confirm out loud before anything is submitted. A misheard item becomes a correction rather than a wrong delivery.
Data we deliberately do not keep
Delivery addresses and basket contents are read at order time and are not persisted. Retaining less is the cheapest security control available, so the default is to retain nothing the product does not need in order to work.
This website
Static HTML served by Cloudflare Pages. No cookies, no analytics, no third-party scripts, no third-party fonts. Fonts are self-hosted so that visiting this page does not tell anyone else that you visited it.
Reporting something
If you have found a problem in any of this, write to mohitshukla@hellobeta.co and it will be read by a person. There is no bounty programme, but reports are welcome and will get a real reply.